zoukankan      html  css  js  c++  java
  • mysqldump备份大数据出错

      为防止数据丢失而造成重大损失,所以需要定期自动备份数据库。一开始数据库备份都是成功的,但是现在数据越来越大了,mysqldump备份时出现备份失败,报错内容:mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `table_name` at row: 1413048 。

      备份失败的原因:在向NFS上备份的时候,数据的流向是这样的:MySQL Server 端从数据文件中检索出数据,然后分批将数据返回给mysqldump 客户端,然后 mysqldump 将数据写入到NFS上。一般地,向 NFS 上写入数据的速度较之Server端检索发送数据的速度要慢得多,这就会导致 mysqldump 无法及时的接受 Server 端发送过来的数据,Server 端的数据就会积压在内存中等待发送,这个等待不是无限期的,当 Server 的等待时间超过 net_write_timeout(默认是60秒)时它就失去了耐心,mysqldump 的连接会被断开,同时抛出错误 Got error: 2013: Lost connection。其实该错误不是说数据库文件太多而导致出错,而是单张表数据量太大导致备份失败。比如我备份失败的错误信息里报错的表就有18.1G数据量。

      问题的解决方案:增加 net_write_timeout 可以解决上述的问题的。在实践中发现,在增大 net_write_timeout 后,Server 端会消耗更多的内存,有时甚至会导致 swap 的使用(并不确定是不是修改 net_write_timeout 所至)。建议在mysqldump 之前修改 net_write_timeout 为一个较大的值(如1800),在 mysqldump 结束后,在将这个值修改到默认的60。(备注:net_write_timeout不是mysqldump的配置参数,而是mysql的参数)

    参考资料:

    1.Mysqldump参数大全:http://www.cnblogs.com/qq78292959/p/3637135.html

    2.mysql timeout调研与实测:http://coolnull.com/4010.html

  • 相关阅读:
    游戏开发之路小结(二):关于第一人称射击游戏开发实战小结
    游戏开发之路小结(一):关于太空射击游戏开发实战小结
    游戏开发要涉及的几个方面
    短短几行代码实现让摄像机跟随着物体效果
    关于移动设备几种屏幕输入方式的小结
    软件的体系架构摘要
    jQuery入门笔记之(一)选择器引擎-【转】
    ASCII码对照表
    将数字转出大写如:100转换后结果为一佰
    google搜索技巧总结
  • 原文地址:https://www.cnblogs.com/hezhixiong/p/5695076.html
Copyright © 2011-2022 走看看