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文档中找到每个设置的详细说明.
确保--opt在转储时使用mysqldump选项.这将使用批量插入语法,延迟密钥更新等...
如果您只使用MyISAM表,则可以通过停止服务器,将它们复制到已停止的服务器并启动它来安全地复制它们.
如果您不想停止原始服务器,可以按照以下步骤操作:
但我很确定你的副本到服务器需要在你把它们放到位时停止.
和
非常快.