관련글
2021.03.11 - [IT/AWS] - [3T] AWS 3 tier Architecture 구성하기 - Windows Terraform Infra(1)
2021.03.12 - [IT/AWS] - [3T] AWS 3 tier Architecture 구성하기 - Windows Terraform 서버 (2)
2021.03.15 - [IT/AWS] - [3T] AWS 3 tier Architecture 구성하기 - Linux Apache & Tomcat 설치 (3-1)
2021.03.16 - [IT/AWS] - [3T] AWS 3 tier Architecture 구성하기 - Linux Nginx 설치 & Tomcat 연동 (3-2)
2021.03.17 - [IT/AWS] - [3T] AWS 3 tier Architecture 구성하기 - Linux Tomcat & MySQL 연동 (5)
환경은 기존과 동일한 Amazon Linux(CentOS)이다. 서버는 db1, db2에서 진행한다.
이후 db1은 Master, db2는 Slave로 칭한다.
MySQL 설치
시작 전 sudo -i로 root권한과 yum -y update는 반드시 진행한다.
MySQL 설치는 Master, Slave 둘 다 같다.
MySQL 설치
yum install mysql
mysql -V
yum을 통해서 mysql을 설치한다. mysql -V로 버전을 확인할 수 있다.
MySQL Server 설치
yum list mysql*
yum list에 server가 존재하지 않는다.
rpm 파일을 다운 후, yum install을 진행한다.
wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum install mysql-community-server
상태 확인
systemctl start mysqld
systemctl status mysqld
MySQL 접속
root 접속
cat /var/log/mysqld.log | grep 'temporary password'
MySQL에 접속하기 전에 log를 통해 root 비밀번호를 알아내자
root@localhost: 뒤에 있는 것이 비밀번호다.
mysql -u root -p
mysql에 root로 접속한다. password는 위의 비밀번호를 입력한다.
저 비밀번호는 불편하니까 외우기 쉬운 걸로 비밀번호를 바꿔준다.
mysql> alter user 'root'@'localhost' identified with mysql_native_password by 'Qwert1234!';
mysql에 접속한 상태 그대로 root의 password를 바꿔준다. 비밀번호는 Qwert1234!로 변경하였다.
* 바꿔주지 않으면 mysql을 사용할 수 없다.
test 데이터 생성
mysql> create database test;
mysql> use test;
test 데이터베이스를 생성하고 사용 선언을 해준다. show 명령어로 확인할 수 있다.
create table test1(number CHAR(10) not null);
test 데이터베이스 안에 test1이라는 table을 생성한다. select 명령어로 확인할 수 있다.
** Master와 Slave에 있는 데이터는 이중화 전 모두 같아야 한다. test 데이터는 Master, Slave에 모두 만들어준다. 아니면 dump를 통해 Master -> Slave 데이터를 옮긴다. **
MySQL Replication 이중화
Master 서버
Master 설정
vi /ect/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
해당 파일에서 [mysqld] 밑에 log-bin과 server-id를 넣어준다. Master 서버이므로 server-id는 1이된다.
파일을 저장한 후, systemctl restart mysqld 명령어를 통해 재시작을 해준다.
Replication 계정 생성
다시 mysql의 root로 접속한다. 해당 Replication 계정을 통해 Master-Slave를 연동한다.
mysql> grant replication slave on *.* to 'rptest'@'%'identified by 'Qwert1234!';
mysql> flush privileges;
grant replication slave on *.* to 'ID'@'%'identified by 'PW'; 형태이다. ID와 PW는 원하는 것으로 설정하면 된다.
'%': 모든 IP 허용을 의미한다.
Master 정보
show master status;
File과 Position의 정보를 확인해야 한다. 이후 두 개의 변수는 Slave에 저장할 때 사용한다.
Slave 서버
Slave 설정
vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=2
마찬가지로 systemctl restart mysqld 명령으로 재시작을 진행한다. server-id를 2로 지정해서 Slave임을 명시한다.
Slave에 Master 정보 입력
mysql> change master to
-> master_host='10.0.12.59', # Master IP
-> master_port=3306, # MySQL 기본 포트
-> master_user='rptest', # Replication 계정
-> master_password='Qwert1234!', # Replication 비밀번호
-> master_log_file='mysql-bin.000001', # Master의 파일명
-> master_log_pos=591; # Master의 Position
change master to 명령어를 통해 설정을 바꿔준다.
mysql> start slave;
slave를 시작한다.
연결 확인
[Master 서버] mysql> show processlist\G;
Host IP가 Slave IP인 것이 보인다면, Slave와 연결이 된 것이다.
[Slave 서버] mysql> show slave status\G;
다양한 정보들을 확인할 수 있다.
1. 설정해 둔 Master 정보 확인
2. Error 확인
네모 박스 친 부분에서 Error가 존재하지 않다면 연결이 완료된 것이다.
Error 발생
error connecting to master 'rptest@10.0.12.59:3306' - retry-time: 60 retries: 16
이러한 에러가 발생했을 때는 대부분 Master와 Slave가 통신이 안된 경우이다.
Master에서 Telnet SlaveIP 3306을 보내보자. 만약 제대로 연결이 되지 않으면 3306 port가 막혀있을 수 있다.
내 상황에서 위 에러가 떴던 경우에는 Security Group의 설정 문제였다. EC2의 Security Group에서 3306을 was만 받아주다보니 두 서버간의 통신이 불가능했다.
Any Open으로 해결했다.
데이터 삽입
[Master 서버] mysql> insert into test1 (number) values ('TEST');
Master 서버에 데이터를 삽입하면 Slave 서버에서도 저 데이터가 보인다.
select * from test1; 명령어로 test1 테이블의 모든 내용을 보자.
Master 서버에서 입력한 값을 Slave 서버에서도 볼 수 있다.
3 tier Architecture 구성이 생각보다 복잡하다. 이후 Tomcat과 MySQL연결은 (5)에서 이어진다.
'IT > AWS' 카테고리의 다른 글
AWS EC2 Windows 정품 인증 오류 - 해결방법 (0) | 2021.05.06 |
---|---|
[3T] AWS 3 tier Architecture 구성하기 - Linux Tomcat & MySQL 연동 (5) (2) | 2021.03.17 |
[3T] AWS 3 tier Architecture 구성하기 - Linux Nginx 설치 & Tomcat 연동 (3-2) (0) | 2021.03.16 |
[Terraform] Destroy (0) | 2021.03.16 |
[3T] AWS 3 tier Architecture 구성하기 - Linux Apache & Tomcat 설치 (3-1) (0) | 2021.03.15 |