加速mysql转储和导入

时间:2008-09-15 21:23:51

标签: mysql backup restore

是否有任何加速mySQL转储和导入的文档化技术?

这将包括my.cnf设置,使用ramdisks等。

仅查看记录的技术,最好使用基准显示潜在的加速。

9 个答案:

答案 0 :(得分:24)

  1. 获取高性能MySQL 的副本。好书。
  2. 转储中的扩展插入
  3. 使用--tab格式转储,以便您可以使用mysqlimport,即 比mysql更快<转储文件
  4. 使用多个线程导入,每个表一个。
  5. 如果可能,请使用其他数据库引擎。导入到 像innodb这样的重型交易引擎非常慢。插入 进入非交易引擎之类的 MyISAM要快得多。
  6. 查看Maakit工具包中的表格比较脚本,看看是否可以 更新您的表而不是转储它们并导入它们。但 你可能正在谈论备份/恢复。

答案 1 :(得分:15)

http://www.maatkit.org/有一个mk-parallel-dump和mk-parallel-restore

  

如果您一直希望使用多线程mysqldump,请不要再希望了。此工具并行转储MySQL表。它是一个更聪明的mysqldump,既可以作为mysqldump的包装器(具有合理的默认行为),也可以作为SELECT INTO OUTFILE的包装器。它专为非常大的数据大小的高性能应用而设计,速度非常重要。它利用多个CPU和磁盘来更快地转储数据。

mysqldump中还有各种可能的选项,例如在导入转储时不创建索引 - 而是在完成时将它们包含在内。

答案 2 :(得分:13)

如果您要导入InnoDB,您可以做的最有效的事情就是放

innodb_flush_log_at_trx_commit = 2
导入正在运行时暂时在my.cnf

。如果您需要ACID,可以将其放回1

答案 3 :(得分:5)

我猜你的问题也取决于瓶颈在哪里:

  • 如果您的网络存在瓶颈,您还可以查看-C的{​​{1}} / --compress标记。
  • 如果您的计算机内存不足(即开始交换),您应该购买更多内存。

此外,请查看mysqldump的{​​{1}}标记(如果您使用的是MyIsam,请查看--quick)。

答案 4 :(得分:4)

在转储中使用扩展插入应该可以加快导入速度。

答案 5 :(得分:4)

关闭外键检查并开启自动提交。

答案 6 :(得分:1)

如果您只有MyIsam表,

mysqlhotcopy也可能是您的替代选择。

答案 7 :(得分:-2)

使用索引但不要太多,激活查询缓存,使用sphinx作为大数据库,这里有一些很好的提示http://www.keedeo.com/media/1857/26-astuces-pour-accelerer-vos-requetes-mysql(法语)

答案 8 :(得分:-2)

另一种选择是http://www.mydumper.org - 多线程mysql备份/恢复,比mysqldump快3到10倍,可以处理MyISAM和InnoDB以及Drizzle http://vbtechsupport.com/1695/