最近发现一个奇怪的问题:在进行mysql数据库备份时应用经常报错,报错信息如标题。
我们设置了两种形式的备份:
1)mysqldump方式进行数据库全备,备份时几乎每次都报错。后来排查,主要因为全备时产生了锁表,但应用设置的数据库读超时比较短导致。通过将备份计划迁移到从库解决应用告警。
2)binlog备份,将最新的binlog文件复制到其他位置,但当文件达到一定大小后,备份时间会超过10s,此时就会产生告警。
关于binlog备份时告警时非常奇怪,因为期间没有锁表操作,服务器内存使用情况也正常。手动运行备份脚本,观察io使用情况,发现备份时ioutil达到了100%,另外数据库的所有文件、备份后文件都在同一个盘,数据库配置sync_binlog为1,每秒钟都有数据库操作。怀疑因io负载高从而导致告警,先将备份移到从库,再继续观察。
继续更新,备份任务移到从库后,不再有告警。