我正在尝试创建一个维基百科数据库副本(大约50GB),但是最大的SQL文件存在问题。
我使用linux split实用程序将大小为GB的文件拆分为300 MB的块。 e.g。
split -d -l 50 ../enwiki-20070908-page page.input.
平均300MB的文件在我的服务器上需要3个小时。 我是ubuntu 12.04服务器操作系统和Mysql 5.5服务器。
我正在尝试跟随:
mysql -u username -ppassword database < category.sql
注意:这些文件包含插入语句,而不是CSV文件。
维基百科提供数据库转储供下载,因此每个人都可以创建维基百科的副本。 您可以在此处找到示例文件:Wikipedia Dumps
我认为由于我的MySQL服务器的设置,导入很慢,但我不知道应该改变什么。我在具有相当处理器和2GB RAM的机器上使用标准的Ubuntu MySQL配置。有人可以帮助我为我的系统配置合适的配置吗?
我试图将innodb_buffer_pool_size设置为1GB但没有任何虚荣。
答案 0 :(得分:3)
由于内存少于50GB(因此无法在内存中缓冲整个数据库),因此瓶颈就是磁盘子系统的写入速度。
加速进口的诀窍:
ALTER
将表加载到INNODB
ALTER TABLE .. DISABLE KEYS
逐行避免索引更新(仅限MyISAM)bulk_insert_buffer_size
设置为高于插入大小(仅限MyISAM)unique_checks = 0
,以便不检查唯一约束。有关详情,请参阅Bulk Data Loading for InnoDB Tables in MySQL Manual。
注意:如果原始表具有外键约束,则使用MyISAM作为中间格式是个坏主意。
答案 1 :(得分:1)
如果您的数据库不是面向事务的,那么使用MyISAM通常比InnoDB快得多。您是否研究过使用任何表格分区/分片技术?
将巨大的MyISAM转换为InnoDB将再次遇到性能问题,因此我不确定是否会这样做。但禁用和重新启用密钥可能会有所帮助......