MySQL Replication 설정

MySQL 백업 및 분산처리를 위해 replication 설정이 필요한 경우 종종 발생하게 된다.
설정 방법은 그리 복잡하거나 어렵지 않으니 쉽게 적용 가능하다.

Master / slave 설정의 시작은 my.cnf 수정을 먼저하는데 id는 중복되어서는 않되며 Master는 CRUD를 모두 사용하며, slave 서버들은 읽기전용으로 사용 가능하다. my.cnf 파일을 열어 아래와 같이 수정한다.

# master
[mysqld]
server-id = 1
log-bin = mysql-bin
# log-bin은 지정하지 않고, log-bin 만 적어도 된다.
expire_log_days = 7
# bin 로그가 무한정 쌓이는 것을 방지하기 위해 위 옵션을 추가하는 것을 추천한다.

# slave1
[mysqld]
server-id = 2
read_only

# slave2
[mysqld]
server-id = 3
read_only

이제 Master 서버에 Replication에서 사용할 계정을 생성한다. ( 필자는 “moongk”로 생성)
~]# GRANT REPLICATION SLAVE ON *.* TO 'moongk'@'192.168.100.100' IDENTIFIED BY '비밀번호';
위와 같이 계정을 만들고 나면 시작 위치를 맞춰야 한다. 그러기 위해서는 Master DB 백업이 완료되기 전까지 DB접속을 차단하거나 LOCK걸어 두는 방법도 있다.
mysql> show master status\G
만약을 대비하여 File과 Position 값을 기록해 두는 것이 좋다.

이제 Slave 서버들 설정 진행할 차례로 Master 서버의 Dump를 복원한다. 복원한 후 Slave 서버들의 시작 위치를 설정한다.

mysql> CHANGE MASTER TO MASTER_HOST='192.168.100.1', MASTER_USER='moongk', MASTER_PASSWORD='비밀번호', MASTER_LOG_FILE='mysql-bin.000000', MASTER_LOG_POS=120;

mysql> start slave;
mysql> show slave status\G