是否有任何记录在案的技术可以加速 mySQL 转储和导入?

这将包括 my.cnf 设置、使用 ramdisk 等。

只寻找有记录的技术,最好有显示潜在加速的基准。

有帮助吗?

解决方案

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

如果您一直希望使用多线程 mysqldump,那么别再希望了。该工具并行转储 MySQL 表。它是一个更智能的 mysqldump,可以充当 mysqldump 的包装器(具有合理的默认行为),也可以充当 SELECT INTO OUTFILE 的包装器。它专为处理非常大的数据量的高性能应用程序而设计,其中速度非常重要。它利用多个 CPU 和磁盘来更快地转储数据。

mysqldump 中还有各种潜在的选项,例如在导入转储时不创建索引 - 而是在完成时批量创建索引。

其他提示

  1. 获取一份副本 高性能MySQL. 。很棒的书。
  2. 转储中的扩展插入
  3. 使用-TAB格式转储,因此您可以使用MySqlimport,它比mysql <dumpfile快
  4. 使用多个线程导入,每个表一个线程。
  5. 如果可能,请使用不同的数据库引擎。像InnoDB这样的大量交易引擎进口非常慢。插入像Myisam这样的非交易引擎中的速度要快得多。
  6. 查看该表比较Maakit工具包中的脚本,看看您是否可以更新表而不是倾倒它们并导入它们。但是您可能在谈论备份/还原。

如果你要导入到 InnoDB,你能做的最有效的事情就是把

innodb_flush_log_at_trx_commit = 2

在你的 my.cnf, ,在导入运行时暂时。你可以把它放回 1 如果你需要酸。

我想你的问题还取决于瓶颈在哪里:

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

另外,请看一下 --quick 标志为 mysqldump (和 --disable-keys 如果您使用的是 MyIsam)。

在转储中使用扩展插入应该会使导入速度更快。

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

mysqlhotcopy 如果您只有 MyIsam 表,也可能是您的替代方案。

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

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top