新接手一個項目,但該項目的mysql數據庫主從復制出現故障,之前項目負責人未解決,也是接手過來遇到的第一個坑,網上跳過錯誤的方式並沒有解決該問題,故決定重做主從,恢復全量數據。
一、備份主庫數據
mysqldump --socket=/var/lib/mysql/mysql.sock --single-transaction --master-data=2 -uuser -ppasswd -h xxx.xxx.xxx.xxx --all-databases > dbbak_20220318.sql
數據量很大,備份前需注意剩余空間大小,把備份好的數據傳到從庫主機
二、從庫恢復數據
登上從庫執行:source /testfile/dbbak_20220318.sql
執行時間根據數據量的多少還有機器配置,我這20多G執行了40分鍾左右
確認master備份數據最后的mysql-bin和pos信息:
三、主從同步
1、停止slave
stop slave;
2、同步數據
change master to master_host='xxx.xxx.xxx.xxx',master_user='user',master_password='passwd',master_port=3306,master_log_file='master-bin.000678',master_log_pos=587219620,master_connect_retry=30;
3、啟動slave
start slave;
4、檢測主從同步狀態
show slave status\G
四、mysqldump參數說明
--socket、-u、-p、-h:指定mysql的sock文件、用戶名、密碼、主機地址 --single-transaction:保證一個事務中所有相同的查詢讀取到同樣的數據,其他innodb引擎的線程修改了表的數據並提交,對該dump線程的數據並無影響,不會鎖表 --master-data=2:對於生成的sql文件產生備份時刻的mysql-bion的信息和pos信息 --all-databases:備份全庫
【參考:https://blog.csdn.net/qq_35767346/article/details/88947412】