平滑清理 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.hdlk
cd /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.gz
mysqldump --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; done
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; done