![Mysqldump max_allowed_packet 问题](https://linux22.com/image/787233/Mysqldump%20max_allowed_pa%E2%80%8B%E2%80%8Bcket%20%E9%97%AE%E9%A2%98.png)
我需要迁移由离职人员管理的数据库。源服务器是 MariaDB 1:10.5.5,目标服务器是 MariaDB 1:10.5.19。
现有的备份脚本使用以下命令:
mysqldump --max_allowed_packet=5120M -u root -p my_db > my_dump.sql
两台服务器在 /etc/mysql/conf.d/mysqldump.cnf 中都有以下设置:
[mysqldump]
quick
quote-names
max_allowed_packet = 16M
在 /etc/mysql/mariadb.conf.d/50-server.cnf 中:
max_allowed_packet=524288000
(-> = 500MB)
我不知道为什么,但是这样设置肯定是有原因的。
我不明白为什么在命令行上使用“--max_allowed_packet=5120M”。
它与服务器设置不符,MySQL 文档说 mysqldump max_allowed_packet 值不能超过服务器值,并且协议的最大值是 1G。
如果我手动运行“mysqldump --max_allowed_packet=5120M -u root -p my_db > my_dump.sql”,
我收到此警告:“警告:选项‘max_allowed_packet’:无符号值 5368709120 已调整为 2147483648”
我如何才能安全地转储此数据库?我需要确保不会丢失任何数据,并且它将导入新服务器。我必须使用“max_allowed_packet”吗?也许使用与服务器相同的值(524288000)?
谢谢!
答案1
只要它小于两端的限制,并且数据库中没有任何超过数据包大小的非常大的 blob,您就可以通过在交换的每一端使用较小的数据包大小或不同的数据包大小来丢失数据。