MySQL Replication Slave 遇到 Duplicate entry ... 等等的錯誤,需要使用下述命令跳過:
- STOP SLAVE;
- SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1;
- START SLAVE;
要寫成 Script 怎麼做呢?
MySQL Replication Slave 使用 Bash Script 來忽略錯誤語法
這篇有 PHP 版:MySQL Replication Slave 使用 PHP 來忽略錯誤語法
因為程式想要跑在本機,沒有 PHP 的環境,所以來弄個 Bash script 的版本
此 Script 裡面有 -p密碼,會造成下述的警告訊息:
- Warning: Using a password on the command line interface can be insecure.
若要避免這個訊息,而且也比較建議的做法,還是用 mysql_config_editor 做出 .mylogin.cnf,然後把 -ppassword 拿掉。
- vim /usr/bin/mysql-ignore-dupkey.sh
while ture; do if [ `mysql -u root -ppassword -e "SHOW SLAVE STATUS \G;" | grep "Duplicate entry" | wc -l` -eq 2 ] ; then mysql -u root -ppassword -e "STOP SLAVE; SET GLOBAL SQL_SLAVE_SKIP_COUNTER = 1; START SLAVE;"; fi; sleep 1; mysql -u root -ppassword -e "SHOW SLAVE STATUS\G"; done
- chmod +x ./mysql-ignore-dupkey.sh
- ./mysql-ignore-dupkey.sh