帶PARTITION 的表,在slave中會system lock

問題背景

master版本: 5.6.23-72.1-log Percona版本的
slave 版本: 5.7.19-17-log Percona Server

slave是通過 innobackupex 工具導出與恢復的。
配置後執行過mysql_upgrade升級數據,並重啓。
某表tb1 有partition屬性如: PARTITION BY KEY (target_id) PARTITIONS 32; 數據量21億條,硬盤中tb1.idb文件大小爲37G, 帶partition前共計32個文件。

問題表現

slave sql_thread 每次執行過程此表時,都會有大量的時間處於system lock;

> show slave status;    

會看到Exec_Master_Log_Pos 一直不變。

> SHOW OPEN TABLES WHERE in_use != 0; 

會看過程 tb1 一直在被system lock佔着。

skip_external_locking是ON狀態,無用,還是會阻塞鎖。

mysql> show variables like '%skip_external_locking%';
+-----------------------+-------+
| Variable_name         | Value |
+-----------------------+-------+
| skip_external_locking | ON    |
+-----------------------+-------+
1 row in set (0.01 sec)

最後解決方法—無辦法中的辦法,刪除分區

嘗試過使用以下指定重建分區,均無效。

> ALTER TABLE tb1 CHECK PARTITION ALL;
> ALTER TABLE tb1 OPTIMIZE PARTITION ALL;

最後只能drop 掉 分區:

mysql> alter table tb1 REMOVE PARTITIONING;
Query OK, 218174563 rows affected (1 hour 15 min 30.80 sec)
Records: 218174563  Duplicates: 0  Warnings: 0

drop後正常。懷疑是mysql的bug,此問題基本100%重現。
我司業務中是qing_card表。
以上備忘。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章