首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用mysqldump的不完全转储

使用mysqldump的不完全转储
EN

Database Administration用户
提问于 2019-08-06 18:16:14
回答 1查看 2.4K关注 0票数 -1

我正在运行带有主复制和从复制的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

EN

回答 1

Database Administration用户

发布于 2019-08-06 18:45:28

我过去曾处理过这个问题。

有三个方面你需要考虑

方面#1 :表腐败

请注意行号36705562。如果每次mysqldump在该表上失败时,错误消息中都会返回该行号,那么您可能会怀疑数据损坏。

方面#2 :联网

我建议像这样增加网络超时时间

代码语言:javascript
复制
mysql> SET GLOBAL net_read_timeout = 31536000;
mysql> SET GLOBAL net_write_timeout = 31536000; 

基本上,这将使DB连接停留时间更长,直到来自SELECT的所有数据出现。

如果每次尝试mysqldump都得到不同的行号,这表明mysqldump连接可以沿着大表移动,只需超时和一些随机点。

方面#3:最大值_允许的_封包 (可选)

512米是一个很好的尺寸,最大值_允许的_封包的最大值是1G。对于mysqldump来说,将其增加到1G并不有害。为什么?MySQL数据包不按最大值_允许的_封包大小。它的大小为net_缓冲器_长度 (默认大小为16K)。MySQL将动态地将MySQL数据包拉伸到设置为的任何最大值_允许的_封包,然后在通过MySQL数据包进行数据传输时缩回原来的大小。您应该将最大值_允许的_封包设置为1G或1024M。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/244696

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档