Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1434233
  • 博文数量: 185
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 2664
  • 用 户 组: 普通用户
  • 注册时间: 2016-07-01 13:46
个人简介

鸟在笼中,恨关羽不能张飞;Survival of the fittest

文章分类

全部博文(185)

分类: Mysql/postgreSQL

2015-02-28 10:33:17

今天遇到个导入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) |
给主人留下些什么吧!~~