引言
最近做项目移植,本地的数据导出为SQL文件,高达31G,欲写入到服务器。
建议
使用INSERT INTO VALUES (),() 语句,而不是每条记录都写一个INSERT INTO
不使用navicat、datagrip等客户端工具,因为这样执行的效率低(网络和文件IO)
使用mysql的source或< 进行写入。
调大max_allowed_packet
值
-- 比如 mysql -uroot -p******
source /tmp/a.sql
-- 或者 mysql -uroot -p****** [database] < /tmp/a.sql
如果时间长,链接不稳定,可以考虑nohup
结语
怀疑运维没有调整
max_allowed_packet
的值,所以还原了1晚上,才还原18G数据,今天仍在还原。
破案了,查看了一下sql文件,每条记录都有一个INSERT,重新使用mysqldump导出的1h就还原成功了。
ps
如果昨天一直等着的话,得等到现在了。::>_<::