尝试将
--quick选项添加到
mysqldump命令中;它在大型桌子上工作得更好。它将行从结果集流到输出,而不是将整个表都包含在表中,然后将其写出。
mysqldump -uroot -h my.host -p'mypassword' --quick --max_allowed_packet=512M db_name table_name | gzip > dump_test.sql.gz
您也可以尝试将
--compress选项添加到mysqldump命令。这使得它对MySQL服务器使用对网络更友好的压缩连接协议。注意,您仍然需要
gzip管道。MySQL的压缩协议不会导致转储脱离
mysqldump压缩。
服务器也可能超时了与
mysqldump客户端的连接。您可以尝试重置超时时间。通过其他方式连接到服务器并发出这些查询,然后运行
mysqldump作业。
这些将超时设置为一个日历日。
SET GLOBAL wait_timeout=86400; SET GLOBAL interactive_timeout=86400;
最后,如果您的服务器(通过路由器和防火墙)距离您的计算机较远,则可能会中断
mysqldump的连接。一些劣质的路由器和防火墙对NAT(网络地址转换)会话具有时间限制。他们应该在使用过程中使这些会话保持活动状态,但有些则不会。也许您正在达到公司为外部连接配置的时间或大小限制。
尝试登录更靠近服务器的计算机并
mysqldump在该计算机上运行。然后使用其他方法(sftp?)将您的gz文件复制到您自己的计算机上。
或者,您可能必须分段此文件的转储。您可以执行以下操作(未调试)。
mysqldump -uroot -h my.host -p'mypassword' db_name table_name --skip-create-options --skip-add-drop-table --where="id>=0 AND id < 1000000" | gzip....
然后用这些行重复。
--where="id>=1000000 AND id < 2000000" | --where="id>=2000000 AND id < 3000000" | ...
直到获得所有行。颈部疼痛,但可以。



