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

环境

系统: CentOS release 6.10 (Final)mysql

MySQL:一、5.7.26-log MySQL Community Server (GPL)
二、搭建多源复制,存在俩个不一样channel,假设为:zerolh_v一、zerolh_v2
三、存在复制过滤,change replication filter REPLICATE_WILD_IGNORE_TABLEsql

用途: BI数据分析使用ide

现象

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

解决方案

一、由于master_info_repository是TABLE类型,故猜测能够经过删除mysql.master_info_repository的手段删除多出来的一行channel,而后重启从库,可是实际重启以后相关的channel信息还存在。code

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)

二、经过查询官网获取能够执行reset slave all for channel 'channel_name' 能够直接清除掉相关的master信息。blog

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的信息的。
【20200330】 MySQL 多源复制--重启slave以后,channel多出一个事务

实验

一、经过insert语句在mysql.slave_master_info插入一条channel,而后执行show slave status(分重启和非重启)
二、在mysql.slave_master_info插入相同master_host和master_port的值是否生效
三、在mysql.slave_master_info删除一条channel而后重启内存

结论

一、人为在mysql.slavemasterinfo添加一条记录是能够经过show slave status查看获得的,可是必须得重启
二、mysql.slave_master_info 表是innodb引擎表,而且只存在主键channel_name。
三、MySQL实例重启以后是会读取内存获取获得master的信息。数据分析

事故猜测

经过一系列实验和资料,比较可能缘由是由于mysql.slave_master_info里面的表多出来一条记录,可是没有生效,重启以后生效获取获得多出的channel信息,可是仍是没法理解为何会多出来一条信息。
一、人为操做(这个有可能,可是这边实在是想不起有这个操做)
二、经过主从复制,由于change replication filter复制过滤是过滤掉mysql这个schema,可是只是在mysql命令行操做,并无在配置文件中添加相关的参数信息,故重启以后复制信息就会所有丢失。it

相关文章
相关标签/搜索