当我使用 ZRM 进行备份时出现上述错误,其中使用 mysqldump 进行备份。
mysqldump --opt --extended-insert --single-transaction --create-options --default-character-set=utf8 --user=" " -p --all-databases > "/nfs/backup/mysql01/dailyrun/20091216043001/backup.sql"
TICKET_ATTACHMENT
mysqldump:错误 2020:在行 2286 处转储表时获得的数据包大于“max_allowed_packet”字节
我已将 /etc/my.cnf 中的“max_allowed_packet”大小增加到 1G,这是服务器设置,对于客户端设置,我通过运行以下命令进行设置:
mysql -u -p --max_allowed_packet=1G
并且我已经验证在客户端和服务器端它们是相同的值。
这是根据论坛帖子检查客户端的值http://forums.mysql.com/read.php?35,75794,261640
mysql> SELECT @@MAX_ALLOWED_PACKET -> ; +----------------------+ | @@MAX_ALLOWED_PACKET | +----------------------+ | 1073741824 | +----------------------+ 1 行在集合中(0.00 秒)
这是检查服务器值设置。
mysql>显示变量
| 最大允许数据包数 | >
1073741824 |
我已经没有主意了,也试过在专家交流会上搜索以及在谷歌上寻找解决方案,但到目前为止都没有奏效。
参考 http://dev.mysql.com/doc/refman/5.1/en/packet-too-large.html
请任何人提供意见,谢谢。
答案1
那不是‘另外’。mysqldump 因忽略 my.cnf 中的这个值而臭名昭著,但将其设置为命令行参数总是有效的。
答案2
这是来自专家交流的回复:
您必须增加 my.cnf 中 mysqldump 部分下的 max_allowed_packet,默认值为 25M
[mysqldump] max_allowed_packet = 1G
或者,您可以使用所需的 max_allowed_packet 值调用 mysqldump。
mysqldump --max_allowed_packet=1G
答案3
请使用以下命令来解决您的问题。
# mysqldump --max_allowed_packet=1024M -u root -p database > dumpfile.sql
这将解决你的问题
注意:您可以根据需要设置最大值。这里我们使用 1024M 作为示例。
答案4
您可能需要在几个地方解决这个问题:在命令行上、在 my.cnf 的 [mysqld] 部分以及 my.cnf 的 [mysqldump] 部分。我一直在努力解决这个问题,最后通过将所有这些设置为 2G 使其正常工作。我暗自怀疑最低的那个会获胜...