您的位置:首页 > 数据库 > MySQL

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

2016-03-23 15:51 841 查看
昨日,在使用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存储引擎。*^_^*
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Got an error reading