【前言】在配置主從的時候經常會用到這兩個語句,剛開始的時候還不清楚這兩個語句的使用特性和使用場景。 經過測試整理了以下文檔,希望能對大家有所幫助; 【一】RESET MASTER參數 功能說明:刪除所有的binglog日誌文件,並將日誌索引文件清空,重新開始所有新的日誌文件。用於第一次進行搭建主從庫 ...
【前言】在配置主從的時候經常會用到這兩個語句,剛開始的時候還不清楚這兩個語句的使用特性和使用場景。
經過測試整理了以下文檔,希望能對大家有所幫助;
【一】RESET MASTER參數
功能說明:刪除所有的binglog日誌文件,並將日誌索引文件清空,重新開始所有新的日誌文件。用於第一次進行搭建主從庫時,進行主庫binlog初始化工作;
註意reset master 不同於purge binary log的兩處地方
1. reset master 將刪除日誌索引文件中記錄的所有binlog文件,創建一個新的日誌文件 起始值從000001 開始,然而purge binary log 命令並不會修改記錄binlog的順序的數值
2. reset master 不能用於有任何slave 正在運行的主從關係的主庫。因為在slave 運行時刻 reset master 命令不被支持,reset master 將master 的binlog從000001 開始記錄,slave 記錄的master log 則是reset master 時主庫的最新的binlog,從庫會報錯無法找的指定的binlog文件。
測試如下:
未刪除前 [root@mysql01 mysql]# pwd [root@mysql01 mysql]# ls mysql> show master status\G; 當前有25個binlong日誌,且Position的位置為107 |
運行RESET MASTER
mysql> reset master; mysql> show master status\G;
顯示所有的binlog已經被刪除掉,且binlog從000001 開始記錄 |
註:當資料庫要清理binlog文件的時候,可以通過操作系統進行刪除,也可以運行reset master進行刪除。但是如果當前是主資料庫,且主從資料庫正常的時候,千萬不能用這種方式刪除。
【使用場景】第一次搭建主從資料庫時,用於主庫的初始化binglog操作;
【二】RESET SLAVE
功能說明:用於刪除SLAVE資料庫的relaylog日誌文件,並重新啟用新的relaylog文件;
reset slave 將使slave 忘記主從複製關係的位置信息。該語句將被用於乾凈的啟動, 它刪除master.info文件和relay-log.info 文件以及所有的relay log 文件並重新啟用一個新的relaylog文件。
使用reset slave之前必須使用stop slave 命令將複製進程停止。
登錄從資料庫,未刪除前 mysql> show slave status\G;
當前relaylog為0004; |
刪除後 mysql> stop slave; 先停止slave mysql> reset slave;
mysql> show slave status\G; |
RESET SLAVE將使SLAVE忘記主從複製關係的位置信息。該語句將被用於乾凈的啟動, 它刪除master.info文件和relay-log.info 文件以及所有的relay log 文件並重新啟用一個新的relaylog文件。
使用場景:當原來的主從關係被破壞之後,從庫經過重新初始化後直接連接會報 ERROR 1201的錯誤,運行reset slave後,重新配置主從連接就可以了;
mysql> CHANGE MASTER TO MASTER_HOST='192.168.0.167',MASTER_USER='test',MASTER_PASSWORD='test', MASTER_LOG_FILE='mysql-bin.000001',MASTER_LOG_POS=176658;
ERROR 1201 (HY000): Could not initialize master info structure; more error messages can be found in the MySQL error log |
總結:如果是需要刪除mysql binlog和relaylog文件的時候,那麼通過操作系統的刪除或者PURGE命令都可以,但是涉及到mysql主從配置的時候便需要使用RESET MASTER和RESET SLAVE解決問題;