it-swarm.cn

加速mysql转储和导入

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

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

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

51
deadprogrammer

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

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

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

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

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

innodb_flush_log_at_trx_commit = 2

my.cnf中,暂时在导入运行时。如果需要ACID,可以将其放回1

13
Aleksandar Ivanisevic

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

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

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

5
Ztyx

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

4
che

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

4
longneck

如果你只有MyIsam表,那么mysqlhotcopy也可能是你的另一种选择。

1
Ztyx