是否有任何记录在案的技术可以加快 mySQL 转储和导入?
这将包括 my.cnf 设置、使用 ramdisk 等。
仅寻找记录在案的技术,最好使用显示潜在加速的基准。
http://www.maatkit.org/有一个 mk-parallel-dump 和 mk-parallel-restore
如果您一直希望使用多线程 mysqldump,请不要再希望了。该工具并行转储 MySQL 表。它是一个更智能的 mysqldump,既可以作为 mysqldump 的包装器(具有合理的默认行为),也可以作为 SELECT INTO OUTFILE 的包装器。它专为处理非常大数据量的高性能应用程序而设计,在这些应用程序中,速度非常重要。它利用多个 CPU 和磁盘来更快地转储数据。
mysqldump 中还有各种潜在的选项,例如在导入转储时不创建索引 - 而是在完成时批量进行。
如果您要导入 InnoDB,您可以做的最有效的事情就是将
innodb_flush_log_at_trx_commit = 2
在您的my.cnf
, 导入运行时临时。1
如果你需要酸,你可以把它放回去。
我想你的问题也取决于瓶颈在哪里:
-C
/--compress
标志mysqldump
。另外,请查看--quick
标志mysqldump
(--disable-keys
如果您使用的是 MyIsam)。
在转储中使用扩展插入应该会使导入更快。
关闭外键检查并打开自动提交。
mysqlhotcopy
如果您只有 MyIsam 表,也可能是您的替代方案。
使用索引但不要太多,激活查询缓存,对大数据库使用 sphinx,这里有一些很好的提示http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql (法语)
另一种选择是http://www.mydumper.org - 多线程 mysql 备份/恢复,它比 mysqldump 快 3 到 10 倍,并且可以处理 MyISAM 和 InnoDB 以及 Drizzle http://vbtechsupport.com/1695/