平滑清理 MySQL / MariaDB 实例大表
数据库集群 Mariadb Galera Cluster 清理 drop tms_rpc_log 大表
涉及步骤流程大致:
- 事先对
tms_rpc_log独立表空间数据文件做 硬链接
bash
cd /var/lib/mysql/tms_mastert;ln tms_rpc_log.ibd tms_rpc_log.ibd.hdlkcd /var/lib/mysql/tms_mastert;ln tms_rpc_log.ibd tms_rpc_log.ibd.hdlk- 单独手动操作
mysqldump再备份一份tms_rpc_log表
bash
mysqldump --user="tms_master_user" --password="passwd" --single-transaction tms_master tms_rpc_log| gzip -c > 2023-12-12.tms_rpc_log.sql.gzmysqldump --user="tms_master_user" --password="passwd" --single-transaction tms_master tms_rpc_log| gzip -c > 2023-12-12.tms_rpc_log.sql.gz- 集群上某台 MySQL 实例下执行 (如 r31 )
bash
mysql> use tms_master;
mysql> drop tms_rpc_log;mysql> use tms_master;
mysql> drop tms_rpc_log;- 使用
truncate慢慢删除清理实际的表数据文件tms_rpc_log.ibd.hdlk;
bash
cd /var/lib/mysql/tms_master
for i in `seq 114 -1 2 `;do sleep 1; truncate -s ${i}G tms_rpc_log.ibd.hdlk; donecd /var/lib/mysql/tms_master
for i in `seq 114 -1 2 `;do sleep 1; truncate -s ${i}G tms_rpc_log.ibd.hdlk; done