mysql 关闭主从_取消mysql主从复制关系

mysql主从复制中,需要将主从复制关系清除,需要取消其从库角色。这可通过执行RESET SLAVE ALL清除从库的同步复制信息、包括连接信息和二进制文件名、位置。从库上执行这个命令后,使用show slave status将不会有输出。

reset slave是各版本Mysql都有的功能,在stop slave之后使用。主要做:

删除master.info和relay-log.info文件;

删除所有的relay log(包括还没有应用完的日志),创建一个新的relay log文件;

从Mysql 5.5开始,多了一个all参数。如果不加all参数,那么所有的连接信息仍然保留在内存中,包括主库地址、端口、用户、密码等。这样可以直接运行start slave命令而不必重新输入change master to命令,而运行show slave status也仍和没有运行reset slave一样,有正常的输出。但如果加了all参数,那么这些内存中的数据也会被清除掉,运行show slave status就输出为空了。

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

/usr/local/data/mysql

[root@mysql01 mysql]# ls

auto.cnf client-cert.pem ibdata1 ibtmp1 localhost.localdomain.pid mysql-bin.000002 mysql-bin.000005 mysqld_safe.pid public_key.pem sys

ca-key.pem client-key.pem ib_logfile0 imove mysql mysql-bin.000003 mysql-bin.000006 performance_schema server-cert.pem

ca.pem ib_buffer_pool ib_logfile1 localhost.localdomain.err mysql-bin.000001 mysql-bin.000004 mysql-bin.index private_key.pem server-key.pem

[root@localhost bin]# ./mysql -uroot -p123456

mysql> show master status;

+------------------+----------+--------------+------------------+-------------------+

| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |

+------------------+----------+--------------+------------------+-------------------+

| mysql-bin.000006 | 16663694 | | | |

+------------------+----------+--------------+------------------+-------------------+

1 row in set (0.00 sec)

mysql>

当前有6个binlong日志,且Position的位置为16663694

运行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)

显示所有的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

当前relaylog为0004;

先停止slave,运行RESET MASTER

mysql> stop 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**

RESET SLAVE将使SLAVE忘记主从复制关系的位置信息。该语句将被用于干净的启动, 它删除master.info文件和relay-log.info 文件以及所有的relay log 文件并重新启用一个新的relaylog文件。

使用场景:当原来的主从关系被破坏之后,从库经过重新初始化后直接连接会报 ERROR 1201的错误,运行reset slave后,重新配置主从连接就可以了;

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值