加快mysql转储和导入
有没有任何文件化的技术来加快mySQL转储和导入?
这将包括my.cnf设置,使用ramdisk等。
只看文件化的技术,最好是基准显示潜在的加速。
http://www.maatkit.org/有一个mk-parallel-dump和mk-parallel-restore
如果您一直希望使用multithreading的mysqldump,那就不要多想了。 这个工具并行地转储MySQL表。 这是一个更聪明的mysqldump,可以作为mysqldump的包装(有明智的默认行为),也可以作为SELECT INTO OUTFILE的包装。 它针对非常大的数据量的高性能应用程序而devise,其中速度非常重要。 它利用多个CPU和磁盘快速转储您的数据。
在mysqldump中也有各种可能的选项,比如在转储被导入的时候不做索引 – 而是在完成的时候把它们做成en-mass。
- 获取高性能MySQL的副本。 伟大的书。
- 扩展插入在转储
- 转储–tab格式,所以你可以使用mysqlimport,这比mysql <dumpfile更快
- 导入多个线程,每个表一个。
- 如果可能,请使用其他数据库引擎。 导入像innodb这样的大量事务引擎是非常缓慢的。 插入像MyISAM这样的非事务性引擎要快得多。
- 查看Maakit工具包中的表比较脚本,看看是否可以更新表而不是转储它们并导入它们。 但是你可能正在谈论备份/恢复。
如果你正在导入InnoDB,你可以做的最有效的事情就是放入
innodb_flush_log_at_trx_commit = 2
在my.cnf
,临时导入正在运行。 如果您需要ACID,您可以将其重新设置为1
。
我想你的问题也取决于瓶颈在哪里:
- 如果你的networking是一个瓶颈,你也可以看看
mysqldump
的-C
/--compress
标志。 - 如果你的电脑内存不足(即开始交换),你应该购买更多的内存。
另外,请看一下mysqldump
的--quick
标志(如果使用MyIsam,则使用--disable-keys
)。
在转储中使用扩展插入应该使导入速度更快。
closures外键检查并打开自动提交。
如果你只有MyIsam表, mysqlhotcopy
也可能是你的替代select。
另一种select是http://www.mydumper.org – multithreadingmysql备份/恢复,比mysqldump快3倍到10倍,可以同时处理MyISAM和InnoDB以及Drizzle http://vbtechsupport.com/1695/
使用索引,但不是太多,激活查询caching,使用sphinx大数据库,这里有一些好的提示http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (用法语)