MY-SQL/Replication

[ MYSQL ] Replication (복제) 설정

정윤재 2012. 9. 3. 11:45

Master Database

 

1. /etc/my.cnf 또는 /etc/mysql/my.cnf

 

server-id = 1
log-bin=mysql-bin

 

#binlog_do_db           = include_database_name
#특정 DB 만 로그에 남길 경우
#binlog_ignore_db       = include_database_name
#특정 DB 에 대해 로그 제외

 

2. mysql 의 master db 로 접속 할 replication 계정 생성

 

mysql>grant replication slave on *.* to 'proxy(user id)'@'%' identified by 'proxy(user id)';

 

3. 데이터 백업을 위한 테이블 lock

 

mysql>flush tables with read lock;

 

4. 로그 시퀀스 번호 확인

 

mysql>show master status;

여기서 position 항목은 나중에 쓸 항목이므로 기억해 두어야 함

 

 

 

5. mater Database 데이터 백업

 

mysqldump -u user_id -p DB명 > mysql_backup.sql

 

6. 3번 단계에서 했던 lock 을 해제함

 

mysql>unlock tables;

 

7. Master Database 재구동

 

mysqld restart

 

 

Slave Database

 

1. Master Database 에서 백업 받은 파일 복원

 

mysql -u user_id -p < mysql_backup.sql

 

2. my.cnf 수정

 

server-id=2

 

log-bin=mysql-bin

 

3. Slave Database 셋팅
#만약 새로 시작하는게 아니라면
#RESET SLAVE;
#STOP SLAVE;

 

mysql>change master to
    ->master_host='xxx.xxx.xxx.xxx',
    ->master_user='proxy',
    ->master_port=3306,
    ->master_password='05ghcjfl',
    ->master_log_file='mysql-bin.000007',
    ->master_log_pos=107;

 

만약 특정 DB 만 replication 하도록 지정하고 싶다면

Replicate_Do_DB='test1' 이렇게 지정하면 됨

 

4. Slave Database 재시작

 

START SLAVE;