加快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-m​​ass。

  1. 获取高性能MySQL的副本。 伟大的书。
  2. 扩展插入在转储
  3. 转储–tab格式,所以你可以使用mysqlimport,这比mysql <dumpfile更快
  4. 导入多个线程,每个表一个。
  5. 如果可能,请使用其他数据库引擎。 导入像innodb这样的大量事务引擎是非常缓慢的。 插入像MyISAM这样的非事务性引擎要快得多。
  6. 查看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 (用法语)