MySQL Replication 設定完成, 但是一直無法正常運作(無法正常與 Master sync), 而 MySQL 都沒有任何錯誤訊息出現, 不知道問題到底出在哪~
註: 下述環境於 Debian Linux.
環境設定、檢查
檢查
- Master 設定 allow replication slave
- Master 3306 是否有通(bind = 127.0.0.1 有沒有移除)
- SLAVE server-id 是否是唯一的.
- SLAVE CHANGE MASTER .. 是否正確.
錯誤訊息
slave_mysql> show slave status;
- Slave_IO_Running: No
- Last_Errno: 0
- 沒有任何錯誤訊息, stop / reset /start slave / restart / kill mysql 等等都做過, 都沒有任何錯誤訊息. (/var/log/mysql.err 都是空的)
打開 MySQL Log
-
vim /etc/mysql/my.cnf 打開
log = /var/log/mysql/mysql.log
-
重新啟動 MySQL 後, 於 /var/log/mysql/mysql.log 看到
Connect Out repl_slave@MASTER_DOMAIN:3306
打開 MySQL Error Message
-
vim /etc/mysql/my.cnf 加入此行
log-error = /var/log/mysql.err
-
重新啟動 MySQL 後, 於 /var/log/mysql.err 總算 看到錯誤訊息. (預設錯誤訊息 不會顯示, 被 mysql.err 騙了~ XD)
[ERROR] The slave I/O thread stops because master and slave have equal MySQL server ids; these ids must be different for replication to work (or the --replicate-same-server-id option m ust be used on slave but this does not always make sense; please check the manual before using it).
不過我的 MySQL Slave 的 server-id 並沒有重覆, 卻出現此訊息.
解法
- 把 server-id 換個數字, 重新啟動 MySQL 即可.
為了這行 log-error = /var/log/mysql.err
, 忙了好久. 🙁