RESET MASTER和RESET SLAVE使用場景和說明,以及清除主從同步關系


mysql主從復制中,需要將從庫提升為主庫,需要取消其從庫角色,這可通過執行RESET SLAVE ALL清除從庫的同步復制信息、包括連接信息和二進制文件名、位置。從庫上執行這個命令后,使用show slave status將不會有輸出。

RESET SLAVE vs. RESET SLAVE ALL: Disconnecting a replication slave is easier with MySQL 5.5+

參考鏈接:http://www.tuicool.com/articles/ZJnUn2

mysql> stop slave;
QueryOK, 0 rowsaffected (0,00 sec)
 
mysql> reset slave all;
QueryOK, 0 rowsaffected (0,04 sec)
 
mysql> show slave status\G
Emptyset (0,00 sec)

此時真正實現了清除slave同步復制關系!

--------------------------------------------------------------------------------

【一】RESET MASTER參數

功能說明:刪除所有的binglog日志文件,並將日志索引文件清空,重新開始所有新的日志文件。用於第一次進行搭建主從庫時,進行主庫binlog初始化工作;

 

測試如下:

未刪除前

[root@mysql01 mysql]# pwd
/data/mysql


[root@mysql01 mysql]# ls
image


mysql> show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000025
        Position: 107
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.01 sec)


當前有25個binlong日志,且Position的位置為107

 

運行RESET MASTER

mysql> reset master;
Query OK, 0 rows affected (0.03 sec)


mysql> show master status\G;
*************************** 1. row ***************************
            File: mysql-bin.000001
        Position: 107
    Binlog_Do_DB: 
Binlog_Ignore_DB: 
1 row in set (0.00 sec)

 

image

 

顯示所有的binlog已經被刪除掉,且binlog從000001 開始記錄

 

注:當數據庫要清理binlog文件的時候,可以通過操作系統進行刪除,也可以運行reset master進行刪除。但是如果當前是主數據庫,且主從數據庫正常的時候,千萬不能用這種方式刪除。

【使用場景】第一次搭建主從數據庫時,用於主庫的初始化binglog操作;


【二】RESET SLAVE

功能說明:用於刪除SLAVE數據庫的relaylog日志文件,並重新啟用新的relaylog文件;

登錄從數據庫,未刪除前

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: Connecting to master
                  Master_Host: 192.168.47.167
                  Master_User: server
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000019
          Read_Master_Log_Pos: 12992
              Relay_Log_File: mysql02-relay-bin.000004
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000019
 

image

當前relaylog為0004;

 

刪除后

mysql> stop slave;                先停止slave
Query OK, 0 rows affected (0.01 sec)

mysql> reset slave;                
Query OK, 0 rows affected (0.04 sec)

 

mysql> show slave status\G;
*************************** 1. row ***************************
               Slave_IO_State: 
                  Master_Host: 192.168.47.167
                  Master_User: server
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: 
          Read_Master_Log_Pos: 4
               Relay_Log_File: mysql02-relay-bin.000001
                Relay_Log_Pos: 4

 

image

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解決問題

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM