导入到 wp_options 那张大表时终端突然卡住 几分钟后报 MySQL server has gone away 重连进去逐个查看前面的表导完了后面基本全空。日志里能对上时间点,这种反而好排。
单条语句太大加上 wait_timeout 到期 服务端主动断开空闲连接 客户端还在拼下一批 INSERT 写进去的只有断线前那一部分 后面全丢 重来成本很高。这一点先确认清楚,后面就不用反复试。
mysql -uroot -p -e 'SHOW VARIABLES' | grep timeout mysql -uroot -p --max-allowed-packet=256M newdb < old.sql mysqladmin -uroot -p status
「导入连接中断」改完先别急着全量,挑一台机器放半天,真有问题这段时间就能看出来。偶发问题先统计频率,一小时几次和一天一次,查法完全不同。
改完顺手把文档补一句,省得下次自己重新推一遍。监控和日志的时间要对上,时区不一致会多绕很大一圈。
处理上按这个顺序:先看 wait_timeout 和 max_allowed_packet 这两个配置参数值 通常至少有一个偏小;导入改用 mysql 命令行客户端 同时加上 --max-allowed-packet=256M 和 --quick 这两个参数再试;大表单独拆出来导 一次只处理一张 失败也好重来。
结果对不对很好判断,导入一次跑完不再报 gone away 回头逐张核对 wp_options 表行数和旧库完全一致。
