AWS

MariaDB Replication 구성하기

ansmoon 2022. 11. 9. 16:57

<환경구성>

OS : Amazon Linux 두대

 

 

1. MariaDB 설치

$ sudo yum update
$ sudo yum -y install mariadb-server
$ sudo systemctl start mariadb
$ systemctl status mariadb

 

2. my.cnf 파일 수정 및 서비스 재시작

$ sudo vim /etc/my.cnf

[mysqld] 
# Master Settings
server_id = 1  # 추가

$ sudo systemctl restart mariadb

 

 2-1) 적용확인

$ mysql -u root -p
> show variables like 'server_id';

 

3. replication 사용자 등록

# grant replication slave on *.* to 아이디@'%' identified by '비밀번호';
> create user testmoon@'%' identified by '123456';
> grant replication slave on *.* to testmoon@'%' identified by '123456';
> flush privileges;

- *.*은 DB.table, '%'은 ip 모두 허용

- flush privileges : MySQL의 환경 설정을 변경할경우, MySQL의 재시작 없이 변경한 설정부분을 적용시키고자 할 때 사용

 

※ 오류

ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '> grant replication slave on *.* to testmoon@'%' identified by '123456'' at line 1

 - 원인 : 사용자가 없음

 - 사용자 생성부터 해줘야함

 

4. Master 정보 확인

> show master status;

※ 오류

Empty set (0.00 sec) 으로 뜨는 경우  

> show variables like '%log_bin%'; 으로 확인하면 log_bin이 꺼져있기 때문임 my.cnf 파일을 수정해줘야함

 

 4-1) my.cnf 수정 및 서비스 재시작

 - log_bin 을 추가해줘야 한다

$ sudo vim /etc/my.cnf

[mysqld]
log_bin = mysql-bin # 추가

$ sudo systemctl restart mariadb

 

 4-2) 다시 Master 정보 확인

 - Slave와 Master 연결 시 필요한 정보이므로 기억해두기

 - 서비스 재시작하면 File, Position이 변경되므로 확인 필요

 

 

5. Slave 설정

 5-1) my.cnf 파일 수정 및 서비스 재시작

$ sudo vim /etc/my.conf

[mysqld]
# Slave Settings
#
server_id = 2
relay_log = mysql-relay-bin
log_slave_updates = 1
read_only = 1

$ sudo systemctl restart mariadb

 

 5-2) server_id 확인

> show variables like 'server_id';

 

 

6. Master 접속 정보 설정

 > CHANGE MASTER TO MASTER_HOST='Master서버 IP',
    -> MASTER_USER='아이디',
    -> MASTER_PASSWORD='패스워드',
    -> MASTER_PORT=DB Port,
    -> MASTER_LOG_FILE='위에서 확인한 File',
    -> MASTER_LOG_POS=위에서 확인한 Position,
    -> MASTER_CONNECT_RETRY=10;

 6-1) slave 시작 및 동작 확인

 - Slave_IO_Running , Slave_SQL_Running 둘 다 Yes 면 성공

> start slave;
> show slave status\G;

 

※오류

Slave_IO_Running 이 Connecting 인 경우 보안그룹(방화벽) 확인

 - Master와 Slave 서로 접근 가능해야함

 - Master 보안그룹 (3306을 Slave 열어줌)

 - Slave 보안그룹 (3306을 Master 열어줌)

 => 보안그룹 열어 준 후 연결 성공 확인

 

 

 6-2) slave 정보 초기화 하기

 - Slave 연결 실패 또는 재연결 할 때 초기화 후 다시 6번(Master 접속 정보 설정) 진행

> stop slave;
> reset slave all;

 

7. Replication 확인 (Master에서 작업)

> show databases;
> use test;
> create table moon(
    -> id int);
> show tables;
> insert into moon values (1);
> select * from moon;

 

 7-1) Slave에서 확인

 - Master에서 생성한 moon table과 내용확인

 > show databases;
 > use test;
 > show tables;
 > select * from moon;

 

'AWS' 카테고리의 다른 글

[EKS] kubectl 에러 (error: You must be logged in to the server (Unauthorized))  (0) 2023.01.05
[EKS] 클러스터 생성 및 configmap 수정  (0) 2023.01.02
[AWS] 터널링  (0) 2022.11.03
[AWS] svn 설치  (0) 2022.11.03
[AWS] Jenkins 설치 & ALB  (0) 2022.11.03