1、slave同步狀態中出現Slave_SQL_Running: No ,即slave不同步!
解決辦法:
第一種方法:忽略錯誤后,繼續同步。
該方法適用於主從庫數據相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況(下面均為在slave機器上的操作)mysql> stop slave;
mysql> set global sql_slave_skip_counter =1; //表示跳過一步錯誤,后面的數字可變;或者在my.cnf里添加slave-skip-errors = all(上面已在配置中添加)
mysql> start slave;
mysql> show slave status\G //查看:
第二種方法:重新做主從,完全同步
該方法適用於主從庫數據相差較大,或者要求數據完全統一的情況
1--master主庫上操作
mysql> flush tables with read lock; //進行鎖表,防止數據寫入。注意該處是鎖定為只讀狀態,語句不區分大小寫
mysqldump --lock-all-tables --all-databases --flush-logs --master-data=2 > /root/allsql.sql //主庫完全備份(如果是指定庫同步,就備份指定庫),注意數據庫備份一定要定期進行,確保數據萬無一失
mysql> show master status; //查看master狀態,注意log file和pos節點,slave同步會用到
# scp mysql.bak.sql root@192.168.1.102:/tmp/ //把備份文件傳到slave從庫機器,進行數據恢復
2--slave從庫操作
mysql> stop slave; mysql> source /tmp/mysql.bak.sql mysql> change master to master_host = '192.168.1.101', master_user = 'slave', master_port=3306.......; mysql> start slave; mysql> show slave status\G ....... Slave_IO_Running: Yes Slave_SQL_Running: Yes
1--master主庫上操作
解鎖數據庫
unlock tables
此種方法中最為關鍵主要有兩步:
①主服務器上鎖表做完全備份,並滾動日志;
②從服務器上進行半道恢復.
2、slave同步狀態中出現Slave_IO_Running: NO
原因:如果數據庫為復制虛擬機過去的,那么auto.cnf 中記錄的數據庫唯一UUID 會沖突導致,從數據庫的sql_io 進程無法啟動。
解決:重新安裝數據庫