Dav*_*gac 34 mysql backup restore
我正在将 30GB 的数据库从 mysqldump 文件恢复到新服务器上的空数据库。从转储文件运行 SQL 时,恢复开始非常快,然后开始变得越来越慢。单个插入现在需要 15+ 秒。这些表主要是带有一个小型 InnoDB 的 MyISAM。服务器没有其他活动连接。SHOW PROCESSLIST;仅显示还原中的插入(以及显示进程列表本身)。
有没有人有任何想法可能导致急剧放缓?
是否有任何 MySQL 变量可以更改以在恢复过程中加快恢复速度?
Mar*_*mos 33
可能会减慢进程的一件事是key_buffer_size,它是用于索引块的缓冲区的大小。将此调整为至少 30% 的 RAM,否则重新索引过程可能会太慢。
作为参考,如果您使用 InnoDB 和外键,您还可以禁用外键检查并在最后重新启用它(使用SET FOREIGN_KEY_CHECKS=0和SET FOREIGN_KEY_CHECKS=1)。
小智 31
此链接显示了可以采取哪些措施来加快恢复过程。
http://dev.mysql.com/doc/refman/5.5/en/optimizing-innodb-bulk-data-loading.html
可以将命令放在转储文件的顶部
SET @OLD_AUTOCOMMIT=@@AUTOCOMMIT, AUTOCOMMIT = 0;
SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS = 0;
SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS = 0;
Run Code Online (Sandbox Code Playgroud)
并将这些语句放在转储文件的末尾
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS;
SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS;
SET AUTOCOMMIT = @OLD_AUTOCOMMIT;
COMMIT;
Run Code Online (Sandbox Code Playgroud)
这对我有用。快乐恢复:-)