본문 바로가기

Dev/MySQL

MySQL Replication 설정

Master (Windows7 Home 64bit, MySQL ver 5.5.29)

Slave (WindowsXP Home 32bit, MySQL ver 5.5.29) 에서 테스트. 


Master와 Slave는 버전이 같아야 한다.

같지 않다면 Read만 하는 Slave가 버전이 높아야 한다. (버전이 높을수록 기능이 더 많기 때문에)


[ Master - Slave 설정 ]

: Master에서만 트랜잭션이 가능하고 Master의 변경사항이 Slave로 단방향 동기화 구조


====================================================================================================

[Master 설정]


1. my.ini 설정

[mysqld]

server-id = 1        #서버 고유아이디, Slave와 다르게 설정

log-bin = mysql-bin     #MySQL 로그생성 설정 / 경로 및 파일명 설정시 그렇게 저장됨.

binlog-do-db = auth_log        #Replication 대상 DB 지정, 이 옵션을 제거시 모든 DB 복제/복수 설정 가능

expire_logs_days = 7             #로그 보관주기 설정(일)

language = "C:/Program Files/MySQL/MySQL Server 5.5/share/korean"        #언어셋 설정


* 참고(binlog_do_db/replicate-do-db 차이)

- binlog_do_db : Master 기준 어떤 DB를 Replication 허용할 것인지 설정(제외조건 binlog_ignore_db)

- replicate-do-db : Slave 기준 어떤 DB를 Replication 할 것인지 설정(제외조건 replicate-ignore-db)


2. mysql restart

cmd>net stop mysql / net start mysql


3. Master 접속 계정 생성 및 Replication 접근 권한 설정

mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%' IDENTIFIED BY 'repl';   <- repl/repl 계정변경가능

mysql> FLUSH PRIVILEGES;


4. 데이터 동기화(백업)

 -> mysqldump 으로 백업한다.


====================================================================================================

[Slave my.ini 설정]


1. 데이터 동기화(복사)

 -> mysql 명령어로 복사한다.


2. my.ini 설정

[mysqld]

server-id        = 2     #서버 고유아이디, Master와 다르게 설정

log-bin          = mysql-bin

expire_logs_days = 7

replicate-do-db  = auth_log


3. mysql restart

cmd>net stop mysql / net start mysql


4. Master 접속설정

(접속 설정을 my.ini에서 하는 방법이 많은데, 난 그렇게 하니 mysql start가 안되서 이 방법으로 했다.)


mysql>CHANGE MASTER TO 

MASTER_HOST='192.168.100.3',                     <- Master IP나 호스트명을 입력

MASTER_USER='repl',                               <- Replication 아이디

MASTER_PASSWORD='repl',                      <- Replication 패스워드

MASTER_PORT=3306,

MASTER_LOG_FILE='mysql-bin.000001',      <- Master의 SHOW MASTER STATUS; 결과화면의 로그파일명 입력

MASTER_LOG_POS=107;                           <- Master의 SHOW MASTER STATUS; 결과화면의 Position 입력


5. Slave 시작

mysql>stop slave;

mysql>reset slave;

mysql>flush privileges;

mysql>start slave;



* Master 접속 내용 바뀌었을때

mysql>stop slave;

mysql>CHANGE MASTER TO 

바꿀 내용만 다시 입력(덮어쓰기)

그리고 5번 절차에 따라 다시 시작.


====================================================================================================

[Master , Slave 연동 테스트]

1. Master에 데이터를 수정한다.

2. Slave에 접속해서 데이터 연동이 제대로 되었는지 확인한다.



출처: http://croae.egloos.com/5738929

'Dev > MySQL' 카테고리의 다른 글

MySQL Federated : 다른 서버 DB의 테이블 조인하기  (0) 2013.05.07
Mysql Replication 개념  (0) 2013.05.03
Blob Type  (0) 2013.04.24
MySQL 외부접속 허용하기  (0) 2013.04.22
SQuirreL SQL Client  (0) 2013.04.04