注意: 進行此操作時,確認在之前已經開啟了MySQL的bin-log日志,如果沒有則無法實現
為了安全考慮,我們授權一個用戶進行數據備份:
[root@7con ] mysql -uroot -p
mysql> grant all on *.* to 'skon'@'192.168.1.1' identified by 'user_passwd';
備份主庫上的數據庫數據,注意添加以下選項
詳細參數含義,請參考MySQL官方文檔:https://dev.mysql.com/doc/
[root@7con ] mysqldump -uskon -p --single-transaction --master-data=2 --no-autocommit -A >alldatas.sql
如果想要備份指定庫,需要添加 replicate_wild_do_table選項,為了保持數據的完全一致性,個人不建議只備份指定庫。
1、將從庫上的數據庫清空,並還原為普通的數據庫,(刪除master.info relay-log.info relay-bin.index)
2、重置mysql數據庫的master和slave;重置slave時,先停止slave(stop slave;)
[root@7con ] mysql -uroot -p mysql> reset master; mysql> show master status\G mysql> stop slave; mysql> reset slave; mysql> show slave status\G
# 這里可以看到,master和slave已經被重置
接下來就是導入數據庫信息,導入之后重新指向主庫:
注意:重新指向主庫的master_log_file和master_log_pos,不是主庫show master status;顯示的信息,而是從主庫上備份的文件里的信息,如下圖:
接下來我們進行操作:(從庫上操作)
還原數據庫
[root@7con ] mysql -uroot -p < alldatas.sql
重新設置同步
[root@7con ] mysql -uroot -p mysql > change master to -> master_host='192.168.1.1', -> master_user='Skon', -> master_password='Skon123', -> master_log_file='binlog.000204', -> master_log_pos=547507087; mysql > start slave; mysql > show slave status\G
最終的結果如下圖:
可以看到 Slave_IO_Running 和 Slave_SQL_Running 均為yes,說明主從同步已經恢復;
Seconds_Behind_Master 剛開始的數值會很大,最后會逐漸的減至為0,說明從庫正在從主庫上寫入之前沒有同步的數據,直至同步完成。
作者:Seichung
來源:CSDN
原文:https://blog.csdn.net/Scirhh/article/details/86586187
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!