mysql 重启slave_【20200330】 MySQL 多源复制--重启slave之后,channel多出一个

环境

系统: CentOS release 6.10 (Final)

MySQL:1、5.7.26-log MySQL Community Server (GPL)

2、搭建多源复制,存在俩个不同channel,假设为:zerolh_v1、zerolh_v2

3、存在复制过滤,change replication filter REPLICATE_WILD_IGNORE_TABLE

用途: BI数据分析使用

现象

因为BI数据分析的同事执行大事务产生了临时表将磁盘空间即将打满,DBA同事尝试有过kill但是发现磁盘空间大小还未释放,最后DBA同事通过重启手段释放磁盘空间,但是发现channel 从之前的2个变成了3个。并且当时读取的relay-log信息已经无法获取得到,导致主从复制监控告警。

解决方案

1、因为master_info_repository是TABLE类型,故猜想可以通过删除mysql.master_info_repository的手段删除多出来的一行channel,然后重启从库,但是实际重启之后相关的channel信息还存在。

mysql> show global variables like '%master%';

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

| Variable_name | Value |

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

| master_info_repository | TABLE |

| master_verify_checksum | OFF |

| sync_master_info | 1 |

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

3 rows in set (0.00 sec)

2、通过查询官网获取可以执行reset slave all for channel 'channel_name' 可以直接清除掉相关的master信息。

mysql> reset slave all for channel 'zerolh_v4';

Query OK, 0 rows affected (0.00 sec)

mysql>

官网

通过查询官网可以很明显得获取得到,master的在master_info_repository=TABLE的时候不仅仅是存放在表中,并且也会存放在内存当中,故当正常重启MySQL的时候,删除slave_master_info表中的信息是无法清除master的信息的。

8855b3d834d42f13e7819486da39b7bc.png

实验

1、通过insert语句在mysql.slave_master_info插入一条channel,然后执行show slave status(分重启和非重启)

2、在mysql.slave_master_info插入相同master_host和master_port的值是否生效

3、在mysql.slave_master_info删除一条channel然后重启

结论

1、人为在mysql.slavemasterinfo添加一条记录是可以通过show slave status查看得到的,但是必须得重启

2、mysql.slave_master_info 表是innodb引擎表,并且只存在主键channel_name。

3、MySQL实例重启之后是会读取内存获取得到master的信息。

事故猜想

通过一系列实验和资料,比较可能原因是因为mysql.slave_master_info里面的表多出来一条记录,但是没有生效,重启之后生效获取得到多出的channel信息,但是还是无法理解为什么会多出来一条信息。

1、人为操作(这个有可能,但是这边实在是想不起有这个操作)

2、通过主从复制,因为change replication filter复制过滤是过滤掉mysql这个schema,但是只是在mysql命令行操作,并没有在配置文件中添加相关的参数信息,故重启之后复制信息就会全部丢失。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值