mysqldump导出大数据时报2013错误

2016/09/18 mysql

mysqldump导出大数据时报mysqldump: Error 2013错误

mysqldump报错

几千万条数据的表,需要使用mysqldump导出,同时使用管道传输到另一台mysql服务器,出现如下错误:

mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `pre_forum_threadimage` at row: 94300
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `pre_forum_postcomment` at row: 38105
mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `pre_common_member_connect` at row: 53477

如果出现如上错误,尝试以下解决方案

1.可能触发了mysql的timeout限制

涉及到2个参数net_read_timeout、net_write_timeout,默认是30,60秒,可以在my.cnf配置文件中修改其值,修改后需要重启mysql服务器

[mysqld]
net_write_timeout = 7200
net_read_timeout = 7200

如果不想重启服务器,也可以在mysql命令行,使用全局命令设置生效

set global net_read_timeout = 120; 
set global net_write_timeout = 900;

2.max_allowed_packet限制

它是一个数据包或任何生成/中间字符串的最大大小,或由mysql_stmt_send_long_data()C API函数发送的任何参数。 默认值为4MB。

数据包消息缓冲区初始化为net_buffer_length字节,但在需要时可以增长到max_allowed_packet字节。 该值默认为小,以捕获大(可能不正确)的数据包。

可以尝试修改该配置大小256MB,mysql,mysqldump的默认配置为16MB,24MB

show global VARIABLES like '%max_allowed_packet%';
set global max_allowed_packet = 2*1024*1024*256;

或在配置文件my.cnf中配置,重启服务器,修改该项后,客户端的相关配置也修改下

[mysqld]
max_allowed_packet = 1024M

[mysql]
max_allowed_packet = 1024M

[mysqldump]
max_allowed_packet = 1024M

3.有可能存在破坏的表

有时候“Lost connection 丢失连接”错误是由于损坏的表造成的。 您可以尝试设置innodb_force_recovery = 1并重新启动mysql以查看是否有帮助。 如果这样做,则执行转储可能会修复页面缓存,您可以经常将其重新设置为0或删除。

innodb_force_recovery = 1 #默认为0

Search

    Table of Contents