MySQL备份之mysqlpump工具备份故障一则案例分享

在使用mysqlpump备份数据库时遇到卡住问题,通过排查发现是由于数据库中存在Federated存储引擎的表,由于无法连接到远程端导致备份过程中的SHOW TABLE STATUS命令长时间执行。解决办法是检查并修复Federated表的远程连接,建议生产环境中避免使用Federated引擎,改用InnoDB以确保稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

昨日,在使用mysqlpump备份数据库时发现,mysqlpump一启动就会卡起。

尝试了几次还是这样,查看数据库err日志并没有什么异常,除了下面的:

Aborted connection 24 to db: 'unconnected' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 26 to db: 'unconnected' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 29 to db: 'unconnected' user: 'root' host: 'localhost' (Got an error reading communication packets)
Aborted connection 23 to db: 'unconnected' user: 'root' host: 'localhost' (Got an error writing communication packets)
Aborted connection 31 to db: 'unconnected' user: 'root' host: 'localhost' (Got an error reading communication packets)

但是跟踪观察err日志发现,这种日志并不是mysqlpump连接时打印的,而是我手工ctrl + c时打印的。

意思就是正常的。

而且我换做mysqldump工具时,现象还是一致的。

那么因为mysqlpump会卡起呢?

尝试让mysqlpump继续保持卡起状态,跟踪查看数据库的show processlist结果发现,mysqlpump所连接的服务线程,正在执行SHOW TABLE STATUS FROM `cms`;

并且持续保持这个动作很久。根据经验,执行SHOW TABLE STATUS FROM `cms`;时很快就会返回呀,为什么mysqlpump备份时执行这么久呢?


既然在刷tables信息时等待,那么肯定是某些tables的表结构信息有问题,或者frm文件有损坏。

回想一下发现,原来有几个表的存储引擎是federated,并且我的库无法连接到federated表的remote端。

所以导致mysqlpump在SHOW TABLE STATUS FROM `cms`;时持续等待,应该是在等待超时。

后面我让mysqlpump一直等待,果然过了一会儿mysqlpump就自觉地打印的几个表的remote端无法连接的日志。


所以,生产上使用federated存储引擎时一定要控制好,以免造成不必要的麻烦。

强烈建议生产表全部使用InnoDB存储引擎。*^_^*

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值