maybe yes 发表于2015-01-26 22:58php
原文连接 : http://blog.lmlphp.com/archives/72 来自 : LMLPHP后院mysql
网 站的数据会按期备份,如今数据大了,mysqldump 方法估计是不行了,而且失败了之后并不能接着上次的位置开始备份。报错内容:mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `table name` at row: 23699。sql
Lost connection to MySQL server,在使用 mysqldump 的时候(尤为是向 NFS 上备份的时候),不少人都被“mysqldump:Got error:2013: Lost connection to MySQL server during query when dumping table”的问题困扰,在Manual中对这个问题有一些简单的说明。
在向NFS上备份的时候,数据的流向是这样的:MySQL Server 端从数据文件中检索出数据,而后分批将数据返回给mysqldump 客户端,而后 mysqldump 将数据写入到NFS上。通常地,向 NFS 上写入数据的速度较之Server端检索发送数据的速度要慢得多,这就会致使 mysqldump 没法及时的接受 Server 端发送过来的数据,Server 端的数据就会积压在内存中等待发送,这个等待不是无限期的,当 Server 的等待时间超过 net_write_timeout(默认是60秒)时它就失去了耐心,mysqldump 的链接会被断开,同时抛出错误 Got error: 2013: Lost connection。
增长 net_write_timeout 能够解决上述的问题的。在实践中发现,在增大 net_write_timeout 后,Server 端会消耗更多的内存,有时甚至会致使 swap 的使用(并不肯定是否是修改 net_write_timeout 所至)。建议在mysqldump 以前修改 net_write_timeout 为一个较大的值(如1800),在 mysqldump 结束后,在将这个值修改到默认的60。
Lost connection to MySQL server during query 错误
形成这样的错误缘由不少
我的经验认为先试一试这两个参数,大部分都是这个缘由引发的:
bind-address = 127.0.0.1
skip-name-resolve
这两个参数任意一个就行。
也就是说遇到2006,2013错误就从新链接一下MySQL。
MySQL层面,须要配置一些参数 my.cnf
wait_timeout = x 超时时间
max_allowed_packet = y 最大容许数据量
通常出现这种状况不是全部例句而是单个表,请你先修复表通常都能解决这类问题
备份不要在数据库压力较大的时候进行,天天凌晨备份是比较合适的
若是是事务型引擎(InnoDB),建议使用 --single-transaction 参数,这样可让锁表时间变得很短。数据库
上 面是作法估计是行不通了,网站在虚拟主机上,修改 MySQL 配置是不太可能的。MySQL 官网也有相似的报告 http://bugs.mysql.com/bug.php?id=47702 。暂时只能使用 --ignore-table=<database>.<table> 选项忽略比较大的表暂时不备份吧。大数据