RESET MASTER和RESET SLAVE使用场景和说明,以及清除主从同步关系

本文介绍了MySQL中如何通过使用RESET MASTER和RESET SLAVE命令来管理主从复制关系。RESET MASTER用于初始化主库的binlog,而RESET SLAVE则用于清除从库的同步复制信息,包括连接信息和二进制文件名等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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解决问题

 

### 清除或重置 MySQL 主从同步配置 要清除或重置 MySQL 的主从同步配置,可以按照以下方法执行: #### 1. 停止从库复制进程 在从库上停止当前的复制线程。可以通过运行以下命令来实现: ```sql STOP SLAVE; ``` 这一步会终止从库正在运行的 I/O SQL 线程。 --- #### 2. 删除现有的主从关系 通过以下命令删除已有的主从关系配置: ```sql RESET SLAVE ALL; ``` 此命令不仅清除了从库中的主库连接信息(如 `MASTER_HOST`、`MASTER_USER`),还释放了用于存储二进制日志位置的临时文件[^4]。 --- #### 3. 备份主库数据 为了确保数据一致性,在重新建立主从同步之前,建议先备份主库的数据。可以使用 `mysqldump` 工具完成这一操作: ```bash mysqldump -u root -p --all-databases > backup.sql ``` 如果只需要备份特定数据库,则可指定这些数据库名称: ```bash mysqldump -u root -p -databases db1 db2 > bak.sql ``` 注意:在备份过程中,为了避免其他客户端修改数据,可以在主库上锁定表: ```sql FLUSH TABLES WITH READ LOCK; ``` 完成后记得解锁表: ```sql UNLOCK TABLES; ``` --- #### 4. 清理主库的日志文件 如果希望清理主库上的二进制日志文件,可以使用以下命令: ```sql RESET MASTER; ``` 该命令将移除所有的现有二进制日志,并创建一个新的初始日志文件[^3]。 --- #### 5. 验证状态 最后验证主从的状态是否已被成功清除。对于主库,检查其二进制日志列表: ```sql SHOW BINARY LOGS; ``` 而对于从库,确认不再存在任何主库关联的信息: ```sql SHOW SLAVE STATUS\G ``` 正常情况下,此时应该没有任何输出或者显示为空值。 --- ### 总结 上述过程涵盖了完整的 MySQL 主从同步重置流程,包括但不限于停止复制、清除旧有配置以及准备新环境所需的各项准备工作。每一步都至关重要以保障最终系统的稳定性可靠性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值