suroMind

[MySQL] MySQL Replication 설정 본문

IT분야/DataBase

[MySQL] MySQL Replication 설정

suroMind 2010. 8. 26. 17:16


두개의 서버가 있고 하나를 백업디비로 할때 사용했다.
미러링이라고 보면 된다. 양방향 동기화는 아니고 마스터서버에서 슬레이브서버로 복사한다는 개념(?)..
간단한 설정 방법을 남긴다.

♦ MySQL Replication 설정
Master Mysql 5.0.45 IP : xxx.xxx.xxx.xxx
Slave Mysql 5.0.45 IP : xxx.xxx.xxx.xxx
참고 : Mysql 버전이 서로 다를 경우, 높은 버전은 Slave만 가능하다.

♦ Master Server 설정
my.cnf 파일을 편집한다.
# vi /etc/my.cnf
-------------------------------
server-id = 1                          1로 셋팅한다.
log-bin=mysql-bin                      주석(#)처리가 되어 있다면 풀어준다
-------------------------------
위 속성은 중복 되면 안된다. 전체파일을 잘 살펴 보아야 한다.

mysql 접속후 슬레이브에서 접속할 계정을 만든다.
# mysql> GRANT REPLICATION SLAVE ON db명.* TO 계정아이디@'%' IDENTIFIED BY '비번';
(%대신 IP주소를 넣으면 그 IP로부터 접속하는 slave에 대해서만 접속을 허용하겠다는 의미)
# mysql>FLUSH TABLES WITH READ LOCK;
# mysql>show master status;
-----------------------------------------------------------------
   File                Postion          Binlog_Do_DB         Binlog_Ignore_DB
   mysql-bin.000003       98
-----------------------------------------------------------------
위 출력물은 컴퓨터마다 다를 것이다. 슬레이브 서버에 적용시킬때 쓰인다.

이제 마스터 서버의 db데이터를 덤프한다.
# mysqldump -u root -p db명 > 파일명.sql
# mysql>UNLOCK TABLES;

♦ Slave Server 설정
my.cnf 파일을 편집한다.
# vi /etc/my.cnf
---------------------------------
server-id = 2                            이줄이 없을 경우나 1로 셋팅 되어있을 경우나 모두 2로 셋팅
replicate-do-db='db명'            전체 디비를 설정할려면 이줄은 삭제, 한 개의 디비만 리플리케이션 시킬려면        디비명을 적는다. 2개 이상의 경우 다음줄부터 똑같이 적는다.
---------------------------------
마스터 서버에서 덤프한 파일을 이용하여 복구한다.
# mysql -u root -p db명 < 파일명.sql

# mysql>CHANGE MASTER TO
 ->MASTER_HOST='192.168.0.10',
 ->MASTER_USER='계정명',
 ->MASTER_PORT=3306,
 ->MASTER_PASSWORD='패스워드',
 ->MASTER_LOG_FILE='mysql-bin.000003', 마스터의 상태보기 명령에서 나온 파일명
 ->MASTER_LOG_POS=98;   마스터의 상태보기 명령에서 나온 포지션

# mysql> SHOW SLAVE STATUS\G;
♦ Master & Slave 설정확인
마스터 # mysql>SHOW PROCESSLIST\G;
슬레이브 # mysql>SHOW PROCESSLIST\G;

이후 직접 마스터서버에서 insert 또는 delete를 이용하여 테스트를 해본다.

♦ 필수 ♦
mysql-bin.00003 등 뒤부분의 숫자가 올라가면서 파일이 생성된다. 또한 마스터 서버에서 삽입, 삭제, 업데이트 되는 부분은 이 파일을 이용하여 슬레이브 서버에 동기화를 시킨다. 마스터 서버가 리스타트 될시 슬레이브 서버와 연결된 부분이 끊기게 된다.
이때는 마스터 서버에서 # mysql>show master status; 를 이용하여 파일명과 포지션을 획득하고
슬레이브 서버에서
# mysql> stop slave;          중지시키고
# mysql>CHANGE MASTER TO
 ->MASTER_HOST='192.168.0.10',
 ->MASTER_USER='계정명',
 ->MASTER_PORT=3306,
 ->MASTER_PASSWORD='패스워드',
 ->MASTER_LOG_FILE='mysql-bin.000003', 마스터의 상태보기 명령에서 나온 파일명
 ->MASTER_LOG_POS=98;   마스터의 상태보기 명령에서 나온 포지션
CHANGE 명령을 이용하여 파일과 포지션을 다시 셋팅한다.

# mysql> start slave;

 

Comments