![收到大于“max_allowed_packet”字节的数据包](https://linux22.com/image/720269/%E6%94%B6%E5%88%B0%E5%A4%A7%E4%BA%8E%E2%80%9Cmax_allowed_pa%E2%80%8B%E2%80%8Bcket%E2%80%9D%E5%AD%97%E8%8A%82%E7%9A%84%E6%95%B0%E6%8D%AE%E5%8C%85.png)
MySQL 社区服务器 5.6.39 RHEL7 场景:
尝试处理二进制日志以恢复增量备份并接收max_allowed_packet error
。
关闭二进制日志,重启数据库。使用备份当前模式。
**mysqldump -u root -p --single-transaction --databases nsb > /backup/nsb_backup.sql**
打开二进制日志并重新启动数据库。
现在我创建了一个名为 abcd 的新模式,并在其中创建了两个表 abc 和 xyz。表中填充了 1M 行。
insert into abc values (100000, 'ABCDBDHDBFFFL');
然后insert into abc select * from abc;
如果我理解正确的话,所有这些更改都记录在二进制日志中。数据目录中有从 MYSQLTEST_binlog.000001 到 MYSQLTEST_binlog.000010 的二进制日志。
现在我放弃了新的模式 abcd,希望它使用二进制日志进行恢复。
重新启动数据库:尝试使用恢复
$ mysqlbinlog MYSQLTEST_binlog.0000{01..10} > /tmp/test.sql
现在我尝试重新加载 test.sql 转储。
$ mysql -u root -p < /tmp/test.sql
这种情况持续了一段时间,然后我在日志文件中收到了令人恼火的错误
Aborted connection 1 to db: 'abcd' user: 'root' host: 'localhost' (Got a packet bigger than 'max_allowed_packet' bytes)
我在 my.cnf 文件中确认了这一点,该文件的 [mysqld] 部分已设置为 1G。此变量的最大允许值为 1G。我无法进一步提高它。
有人能帮我理解发生了什么吗?是重复插入导致了这个问题还是其他原因?我查看了一些论坛,但都建议我检查 my.cnf 文件中的 max_allowed_packet,并建议重新启动数据库。 https://stackoverflow.com/questions/93128/mysql-error-1153-got-a-packet-bigger-than-max-allowed-packet-bytes
Mysql-导入时收到大于“max_allowed_packet”字节的数据包
错误 2020:转储表时获得的数据包大于“max_allowed_packet”字节
CloudSQL (MySQL) 的恢复 (PITR) 失败,并显示数据包大于“max_allowed_packet”字节
MySQL“max_allowed_packet”错误——如何分析最大数据包大小?
MySQL max_allowed_packet 大于 1024 MB
此外,网络上的大多数其他问题都与复制和 max_allowed_packet 有关。我的问题与复制无关。