[master]
shell> vi /etc/my.cnf
[mysqld]
log-bin=mysql-bin
server-id=1
shell> /etc/init.d/mysqld restart
[slave]
shell> vi /etc/my.cnf
[mysqld]
server-id=2
# master와 slave의 server-id는 달라야 한다.
shell> /etc/init.d/mysqld restart
[master]
slave가 접속할 계정 생성
mysql> CREATE USER 'repl'@'%.mydomain.com' IDENTIFIED BY 'slavepass';
mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'%.mydomain.com';
master 상태 확인
mysql> FLUSH TABLES WITH READ LOCK;
mysql > SHOW MASTER STATUS;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000003 | 73 | test | manual,mysql |
+------------------+----------+--------------+------------------+
master data snapshot
방법은 2가지
1. 덤프
shell> mysqldump --all-databases --master-data > dbdump.db
2. raw data file 복사
폴더 확인
mysql> SHOW VARIABLES WHERE Variable_Name LIKE "datadir"
압축 복사해서 slave의 data 폴더로 복사
table lock 해제
mysql> UNLOCK TABLES;
[slave]
master data snapshot을 덤프 파일로 받아왔다면 복구
shell> mysql -h master < fulldb.dump
마스터 연결 설정
mysql> CHANGE MASTER TO
-> MASTER_HOST='master_host_name
',
-> MASTER_USER='replication_user_name
',
-> MASTER_PASSWORD='replication_password
',
-> MASTER_LOG_FILE='recorded_log_file_name
',
-> MASTER_LOG_POS=recorded_log_position
;
slave 시작
mysql> START SLAVE;
slave 상태 조회
mysql> show slave status;
Last_IO_Errono 메시지 확인
문제 상황
1. Last_IO_Errono 메시지에서 server-id 중복이라는 말이 있다면
my.cnf 수정후 restart를 안한것이다. 혹은 server-id가 진짜 동일한것
2. Last_IO_Errono 메시지에서 uuid가 동일하다는 말이 있다면
mysql> show variables like '%uuid%';
명령어로 master와 slave 의 uuid를 확인해보고