加快mysql转储和导入

时间:2020-03-05 18:54:35  来源:igfitidea点击:

是否有任何文献记载的技术可以加快mySQL转储和导入的速度?

这将包括my.cnf设置,使用虚拟磁盘等。

只寻找记录在案的技术,最好使用基准测试来显示潜在的加速效果。

解决方案

回答

在转储中使用扩展插入将使导入更快。

回答

  • 获取高性能MySQL的副本。很棒的书。
  • 转储中的扩展插入
  • 以--tab格式转储,因此我们可以使用mysqlimport,它比mysql <dumpfile快
  • 导入有多个线程,每个表一个。
  • 如果可能,请使用其他数据库引擎。导入到像innodb这样的高事务性引擎中的速度非常慢。插入像MyISAM这样的非事务引擎中要快得多。
  • 查看Maakit工具包中的表比较脚本,看看是否可以更新表而不是将其转储并导入。但是我们可能正在谈论备份/还原。

回答

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

回答

如果我们要导入InnoDB,则最有效的方法就是将

innodb_flush_log_at_trx_commit = 2

在导入过程中暂时在" my.cnf"中。如果需要ACID,可以将其重新设置为" 1"。

回答

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

If you’ve been wishing for multi-threaded mysqldump, wish no more. This tool dumps MySQL tables in parallel. It is a much smarter mysqldump that can either act as a wrapper for mysqldump (with sensible default behavior) or as a wrapper around SELECT INTO OUTFILE. It is designed for high-performance applications on very large data sizes, where speed matters a lot. It takes advantage of multiple CPUs and disks to dump your data much faster.

mysqldump中还有各种潜在的选择,例如在导入转储时不创建索引,而是在完成时按顺序进行索引。

回答

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

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

另外,看看mysqldump的--quick标志(如果使用的是MyIsam,则查看--disable-keys)。

回答

如果只有MyIsam表,则mysqlhotcopy可能也是替代选择。