mysql 5.7 主從同步問題


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 進程無法啟動。

解決:重新安裝數據庫

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM