[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를 확인해보고
동일하다면
data 폴더의 auto.inf 를 삭제 후 restart 한다
aws에서 Launch More Like This 로 인스턴스 복제 했을 때 위 문제를 경험했다
참고 http://dev.mysql.com/doc/refman/5.6/en/replication-howto.html
'Develop' 카테고리의 다른 글
typescript promise and async await (0) | 2016.11.25 |
---|---|
정규표현식 1 (0) | 2016.09.22 |
iis express 다른 pc에서 접속 (0) | 2016.08.24 |
iis express 64 bit (0) | 2016.08.24 |
구글 연동 (0) | 2016.08.18 |