Loading...

引言

最近做项目移植,本地的数据导出为SQL文件,高达31G,欲写入到服务器。

建议

使用INSERT INTO VALUES (),() 语句,而不是每条记录都写一个INSERT INTO
不使用navicat、datagrip等客户端工具,因为这样执行的效率低(网络和文件IO)
使用mysql的source或< 进行写入。
调大max_allowed_packet

image.png

-- 比如 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

如果昨天一直等着的话,得等到现在了。::>_<::

如果觉得我的文章对你有用,请随意赞赏