我正在运行带有主复制和从复制的Mysql服务器。从过去的几天开始,我发现主服务器上的备份是不完整的。
当我在主服务器上手动运行时,它将返回以下错误
"mysqldump:错误1317:当转储表 table_name at行: 36705562"时,查询执行被中断
命令我用来进行备份
<#>mysqldump -u dbdump -p dbname --例程--单事务--锁-表=false--最大允许--数据包=512 m-主数据=2 -q -C -E -e -f -R gzip -c >backup.sql.gz
理想情况下,我在主和从上都使用相同的命令,但在主上却失败了。
我试图从远程机器进行备份,但也有同样的错误。
中/etc/my.cnf ->最大数据包大小设置为512 m
发布于 2019-08-06 18:45:28
我过去曾处理过这个问题。
Jan 04, 2018:具有大表的MySQL - MySQLDump问题Jan 12, 2012:客户端超时,而MySQL查询仍在运行?有三个方面你需要考虑
请注意行号36705562。如果每次mysqldump在该表上失败时,错误消息中都会返回该行号,那么您可能会怀疑数据损坏。
我建议像这样增加网络超时时间
mysql> SET GLOBAL net_read_timeout = 31536000;
mysql> SET GLOBAL net_write_timeout = 31536000; 基本上,这将使DB连接停留时间更长,直到来自SELECT的所有数据出现。
如果每次尝试mysqldump都得到不同的行号,这表明mysqldump连接可以沿着大表移动,只需超时和一些随机点。
512米是一个很好的尺寸,最大值_允许的_封包的最大值是1G。对于mysqldump来说,将其增加到1G并不有害。为什么?MySQL数据包不按最大值_允许的_封包大小。它的大小为net_缓冲器_长度 (默认大小为16K)。MySQL将动态地将MySQL数据包拉伸到设置为的任何最大值_允许的_封包,然后在通过MySQL数据包进行数据传输时缩回原来的大小。您应该将最大值_允许的_封包设置为1G或1024M。
https://dba.stackexchange.com/questions/244696
复制相似问题