今天遇到个导入mysql数据的事,导出的SQL数据文件5G,在导入的时候用的是source方式。本来嘛,已经导入导出多次了也没出现什么事,也挺快的就完事了,只是没想到这次等了N久。
最开始也没太在意,source后就放一边了。过一会一看还没完,卡住了。正好当时也网有问题,以为是断开了,就直接关了重新导入(测试数据,不重要)。然后等了一会又卡在同一地方了。这个时候是没什么日志可看了,所以重新启了个终端连接一下,登录后show processlist看了一眼,原因是repair with keycache,一般是tmp空间不够了。这样找到原因就好解决了。
在my.cnf里的mysqld下修改或者加入,这个值看情况修改吧,反正我这是随意的。
myisam_sort_buffer_size = 128M
myisam_max_sort_file_size=10G
修改后我重启了下,这回source导入时在原来卡住的地停顿了一下,show processlist看一下是repair by sorting 。但这个很快就过去了。接着数据就顺利的导入了。
新接手的东西就是麻烦,配置文件N多东西都没有.........
另外,加快source导入的方法也有不少,但N多是看具体情况。这里说个通用的。
我们
在向 InnoDB 导入数据时,需要设置 autocommit=0不是1。否则每个插入语句都要将 log 刷新到磁盘。可以在 SQL 导入文件的第一行加入
set autocommit=0;
并在最后一行加入
commit;
也可以使用命令,不过每次都要输入一次。
如果使用 mysqldump 选项 –opt,就会得到一个快速导入 InnoDB 表的转储(dump)文件,甚至可以不再使用上面所提的 set autocommit=0;和commit; 。
阅读(4676) | 评论(0) | 转发(0) |