系統: 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的信息的。事務
一、經過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