导入30G.sql文件的一次经历

事件背景,日常使用的测试库数据太旧了。以前是同事换的,现在他已经跑路了,所以只能自己试着换,顺便学习一下。简单来说就是将正式库的数据导出来,在导入测试库。导出的约30G。

正常导入的过程

1、打开cmd,登录MySQL。语句:mysql -uroot -ppassword。
登录成功如下:

2、然后执行语句:source .sql;(文件位置)。

过程中遇到的问题:

导入前期没有什么问题。在过了几个小时之后出现了如下问题:

No connection. Trying to reconnect... ERROR 2005 (HY000): Unknown MySQL server host '02:18:13','6',NULL,0.0,0,0,0,0,142,0,-84,152,100000,141,140,143,NULL,0.0,142.2,0.0,-83.8,152.0,10000' (0) ERROR: Can't connect to the server


上网搜了一下,好像和字符编码有关。
请教了一个朋友,给了我几个建议:
1、在登录时指定编码和IP:mysql -uroot -ppassword -h127.0.0.1 --default-character-set=utf8
2、关闭防火墙,禁止在导入过程中别人访问。

之后发现了别的问题,但是确实是有作用的,因为要比之前导入的数据多。

新的问题:失去连接,数据库服务自己关闭了。

这个问题在网上很容易找。说是因为数据库中存在的两个配置:可以用语句show VARIABLES like '%timeout%' 查看。
wait_timeout — 指的是mysql在关闭一个非交互的连接之前所要等待的秒数,其取值范围为1-2147483(Windows),1-31536000(linux),默认值28800。
interactive_time — 指的是mysql在关闭一个交互的连接之前所要等待的秒数(交互连接如mysql gui tool中的连接),其取值范围随wait_timeout变动,默认值28800。
在配置文件my.ini中改到最大就不会有断开连接和服务自动关闭的问题了。

最后遇见了一个磁盘空间不够的问题:


在网上看了一下,目前MySQL使用的数据引擎innoDB,对表的大小没有限制。但可以人为设置表的大小。
之后就是清理空间了,由于本身磁盘空间就不多。数据库再怎么清也不够,就把数据库的日志等不需要的东西都关掉,节省空间。

按照同事的语句执行发现,关闭多余的设置后发现导入的速度变快了很多,大概6个小时就导入完成了,快了一倍不止的样子。

好好学习,为了统治世界!!!啊呜!

posted @ 2021-12-13 20:19  for_printf  阅读(429)  评论(0)    收藏  举报