关于备份:加快mysql转储和导入

关于备份:加快mysql转储和导入

Speeding up mysql dumps and imports

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

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

只寻找有据可查的技术,最好是基准测试显示潜在的加速效果。


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

  • 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中还有许多潜在的选项,例如在导入转储时不创建索引-而是在完成时按顺序进行索引。


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

    1
    innodb_flush_log_at_trx_commit = 2

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


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

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

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


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


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


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


    另一个替代方法是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(法语)


    推荐阅读