解决数据库还原失败:错误1105 (HY000) — 超过Adobe Commerce Cloud上的最大写集大小
在Galera群集上还原MariaDB备份时,由于2GB事务大小限制,您可能会遇到 超出最大写集大小 错误。 此文章提供了一个分步式解决方案,它调整了备份和恢复命令以处理较大的事务,从而确保恢复过程的成功。
描述 description
环境
Adobe Commerce Cloud
在MariaDB Galera群集环境中发生此问题。
问题/症状
当您尝试在Galera群集上还原MariaDB数据库备份时,该过程可能会失败,并出现以下错误:
第[行出现错误1105 (HY000),特定行号] :超出最大写集大小
原因
Galera群集的wsrep_max_ws_size系统变量将最大写集大小设置为2GB。 如果备份包含超过此大小的大行或二进制数据,则还原过程将失败。
解决方法 resolution
要解决此问题,请通过增加--max_allowed_packet大小来调整备份过程以防止大型事务。 这允许MySQL服务器在备份和还原操作期间处理较大的行或二进制数据。 请记住,始终在非生产环境中测试。
-
从MySQL错误日志中确定错误的确切原因。 查找类似于以下内容的消息:
第
[行出现错误1105 (HY000),特定行号]:超出最大写集大小这可以确认由于事务大小超过Galera限制导致错误。
-
创建一个指定
--max_allowed_packet参数的新备份,以允许更大的数据大小并防止事务过大。The --max_allowed_packet参数定义服务器在与客户端通信期间可以处理的数据包的最大大小。 增加此大小有助于处理较大的行或对象,从而防止事务拆分和写集过大。 对于大多数方案,--max_allowed_packet=64M就足够了。 如果数据库包含非常大的行或二进制数据,则将此值调整为 — max_allowed_packet=128M。 此外,使用压缩(例如gzip)来减小文件大小。
备份命令示例:code language-none mysqldump -h <host> -u <username> -p <password> --single-transaction --max_allowed_packet=64M <db_name> | gzip > /tmp/<dump_name>.sql.gz -
还原备份时,请指定增加的
--max_allowed_packet值,以确保与修改的备份兼容。
恢复命令示例:zcat /tmp/<dump_name>.sql.gz | sed -e 's/DEFINER[ ] *=[ ] *[ *] *\*/\*/' | mysql --host=127.0.0.1 -u <username> -p <password> -
恢复备份后,确认过程完成且没有错误。 检查日志以确保不存在警告或异常。