是否有更快的方式加载mysqldumps?

Ben*_* K. 18 mysql mysql-management mysqldump

可能重复:
加速mysql转储和导入

mysqldump 速度相当快,但中型数据库(20-30兆)的转储需要几分钟才能加载 mysql my_database < my_dump_file.sql

我可以调整一些mysql设置以加快负载吗?有没有更好的方法来加载保存的数据?

我已经尝试将mysqlimport实用程序与基于CSV的转储一起使用.这些负载略微 - 但不明显 - 加快.我很想复制原始数据库文件,但这似乎是一个坏主意.

Jef*_*ltz 27

假设你正在使用InnoDB ......

我有一堆现有的mysqldump输出文件,我想在合理的时间内导入.这些表(每个文件一个)大约500MB,每个包含大约5,000,000行数据.使用以下参数,我能够将插入时间从32分钟缩短到3分钟以下.

innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 256M
innodb_flush_method = O_DIRECT

你还需要一个相当大的innodb_buffer_pool_size设置.

因为我的插页是一次性的,我后来还原了设置.如果你要长期使用它们,请确保你知道它们在做什么.

我在Cedric Nilly的博客上找到了使用这些设置的建议,并且可以在MySQL文档中找到每个设置的详细说明.


gah*_*ooa 5

确保--opt在转储时使用mysqldump选项.这将使用批量插入语法,延迟密钥更新等...


如果您只使用MyISAM表,则可以通过停止服务器,将它们复制到已停止的服务器并启动它来安全地复制它们.

如果您不想停止原始服务器,可以按照以下步骤操作:

  1. 获取所有表的读锁定
  2. 冲洗所有表格
  3. 复制文件
  4. 解锁桌子

但我很确定你的副本到服务器需要在你把它们放到位时停止.


Jon*_*han 5

maatkit - 并行转储

maatkit - 并行恢复

非常快.

  • 描述说软件中存在缺陷,不应用于备份或重要数据!太糟糕了......我想知道我是否可以在不同的表上并行运行多个mysqldump来获得加速? (13认同)