加快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可能也是替代选择。