MySql數據庫主從同步出現錯誤後重置同步

參考:https://www.cnblogs.com/wjoyxt/p/5385862.html

參考:https://blog.csdn.net/keil_wang/article/details/89399603

參考:https://www.cnblogs.com/deny/p/9984603.html     (我按這個實施成功)

    Mysql主從同步集羣在生成環境使用過程中,如果主從服務器之間網絡通信條件差或者數據庫數據量非常大,容易導致MYSQL主從同步延遲。

      MYSQL主從產生延遲之後,一旦主庫宕機,會導致部分數據沒有及時同步至叢庫,重新啓動主庫,會導致叢庫與主庫同步錯誤,如何快速恢復主從同步關係呢,如下有兩種方法:

1、忽略錯誤後,繼續同步(只有一次錯誤)

此種方法適用於主從庫數據內容相差不大,或者要求數據可以不完全統一的情況,數據要求不嚴格的情況。

Master端執行如下命令,將數據庫設置全局讀鎖,不允許寫入新數據:

flush  tables  with  read  lock;

Slave端停止Slave I/O及sql線程,同時將同步錯誤的SQL跳過1次,跳過會導致數據不一致,最後啓動start  slave,同步狀態恢復,命令如下:

stop slave;
set  global sql_slave_skip_counter =1;
start slave;

2、重新做主從同步,完全同步:(主從數據差別大)

此種方法適用於主從庫數據內容相差很大,或者要求數據完全統一的情況,數據需完全保持一致。

1)在master進行鎖表

flush  tables  with  read  lock;
注意:該處是鎖定爲只讀狀態,語句不區分大小寫

2)進行數據備份,可全部導出,也可按需導出幾張表,可用工具導出

mysqldump -uroot -p -hlocalhost  --all-databases > mysql.sql (--all-databases表示所有數據庫)
這裏注意一點:數據庫備份一定要定期進行,可以用shell腳本或者python腳本,都比較方便,確保數據萬無一失

3)查看master 狀態,並記錄下 master_log_file和master_log_pos備用:

show master status;

4)把mysql備份文件傳到從庫機器,進行數據恢復:

scp mysql.sql [email protected]:/tmp/

5)停止從庫的狀態,導入數據備份,也可用工具導入

mysql> stop slave;
mysql> source /tmp/mysql.sql;

6)設置從庫同步,並開啓slave,使用上面備用的master_log_file和master_log_pos值;

change master to master_host = '10.6.97.133', master_user =  'tongbu',master_password='123456', master_log_file = 'mysql-bin.000003',  master_log_pos= 34427537;
start slave;
show slave status\G;

7)在master上解鎖:

unlock tables;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章