要實現MySQL的主從複製,首先必須打開Master端的binlog記錄功能,不然就沒法實現。由於整個複製過程實際上就是Slave從aster端獲取binlog日誌,而後再在Slave上以相同順序執行獲取的binlog日誌中的記錄的各類SQL操做
.清除mysqlbinglog
#mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "purge binary logs to 'mysql-bin.000639';"
修改binlog過時自動清理(設爲10天自動清理)
把binlog的過時時間設置爲10天;
mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "set global expire_logs_days = 10;"
刷一下log使上面的設置生效,不然不生效。
mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "flush logs;"
爲保證在MYSQL重啓後仍然有效,在my.cnf中也加入此參數設置
expire_logs_days = 10
經過show global variables like '%expire_logs_days%';能夠查看設置是否成功
mysql -udbaroot -pdbaroot20070508 -h127.0.0.1 -e "show global variables like '%expire_logs_days%';" mysql
對於數據量不大的mysql來講,若是主從不一樣步延遲太大了,可使用下面命令實如今線主從同步sql
首先要給slave一個受權帳號。而且雙方3306端口要能telnet通。docker
mysqldump -hMDBD的ip -uMDB用於導庫的mysql帳號 -p密碼 -R --triggers --single-transaction --flush-logs --master-data --database 數據庫 > 名字.sql數據庫
而後再導入到slave上。服務器
mysql -uroot -ppwd -h127.0.0.1 -e 'slave stop;'
mysql -uroot -ppwd -h127.0.0.1 < 名字.sql
mysql -uroot -ppwd -h127.0.0.1 -e 'slave start;'函數
mysql -uroot -ppwd -h127.0.0.1 -e 'show slave status\G'spa
便可修復主從同步。線程
-R : 導出數據庫的存儲過程和函數日誌
--triggers :爲每一個轉儲的錶轉儲觸發器。該選項默認啓用;用--skip-triggers禁用它。code
--single-transaction:從服務器轉儲數據以前發出一個BEGIN SQL語句。適用於事務表,例如InnoDB和BDB,由於而後它將在發出BEGIN而沒有阻塞任何應用程序時轉儲一致的數據庫狀態。
--flush-logs --master-data :開始轉儲前刷新MySQL服務器日誌文件,若是你想要同時轉儲和刷新日誌,應使用--flush-logs連同--master-data。