MySQL 수동 동기화 - Master read lock 또는 shutdown 없이 동기화 하기
Dual Master 구성일 경우 M1:10.0.3.71, M2:10.0.3.72, 동기화할 대상 DB는 my_db 라고 가정하고 아래와 같이 진행한다. 단, 양쪽 데이터베이스를 모두 Running 상태로 유지하되, Read/Write 작업은 M1(동기화 원본) 쪽에서만 일어나는 상황이어야 한다.
M1> slave stop;
M1> reset slave;
M2> slave stop;
M2> reset slave;
M2> drop database my_db;
M2> create database my_db;
M1# mysqldump -uroot -ppassword --databases my_db --opt --master-data=2 > mysql_data_20110101.sql
M2# scp root@10.0.3.71:mysql_data_20110101.sql /workdir
M2# grep MASTER_LOG_FILE /workdir/mysql_data_20110101.sql
M2# head -25 /workdir/mysql_data_20110101.sql
위에서
(전체 데이터베이스를 동기화하고 싶을 경우, --databases my_db 옵션 대신
--all-databases=TRUE 옵션을 사용한다)
M2# mysql -uroot -ppassword < /workdir/mysql_data_20110101.sql
M2> flush logs;
M2> reset slave;
M2> change master to master_host='10.0.3.71', master_user='root', master_password='password', master_log_file='mysql-bin.000019', master_log_pos=429;
M2> slave start;
M2> show slave status;
M2> show master status;
M1> flush logs;
M1> reset slave;
M1> change master to master_host='10.0.3.72', master_user='root', master_password='password', master_log_file='mysql-bin.000022', master_log_pos=106;
M1> slave start;
M1> show slave status;