AnyBackup-MySQL 定时备份任务失败,显示错误信息:数据库未通过检测,无法备份当前 MySQL
关键字
未通过检测
适用产品
- AnyBackup 6.0.x
- AnyBackup 5.0.x
- 超易备 5.0.x
问题描述
执行 MySQL 数据库备份失败,执行输出显示如下错误信息:
MySQl 备份过程中,出现异常,任务未能正常结束。附加信息:数据库未通过检测,无法备份当前MySQL。
问题影响
AnyBackup 无法完成 MySQL 数据库备份。
问题原因
MySQL 数据库环境中存在一个长时间占用数据库的查询,导致备份软件在创建数据库快照点的时候卡死不返回。AnyBackup 备份软件在任务触发时会检测当前是否存在长时间的查询,默认超过60秒就算作长时间查询,当检测存在超过60秒的查询操作时则提示未通过检测。
解决方案
在备份计划发起前将长时间占用 MySQL 数据库的查询暂时停止,等备份完之后再启动,或者调整备份计划,等长时间占用 MySQL 数据库的查询结束后再发起备份计划。以下命令可供查询 MySQL 数据库的长查询信息:
show processlist;
以上示例中,Command 列为 Query 表示为查询操作,Time 列表示的是查询的时间,Time>60S 就会出现检测不通过。
更多信息
使用 MySQL 原生的备份方式,需要在每次备份前都使用 ftwrl 来加全局锁,刷新表的缓存。但是如果存在长查询的话,select 会锁定数据表,导致执行 ftwrl 操作等待, ftwrl 会加全局锁,然后刷新表的缓存。如果这个操作卡住,无法保证数据的完全一致性。