Backup
如何加快從轉儲文件中恢復 MySQL 的速度?
我正在將 30GB 數據庫從 mysqldump 文件恢復到新伺服器上的空數據庫。從轉儲文件執行 SQL 時,還原開始非常快,然後開始變得越來越慢。單個插入現在需要 15 秒以上。這些表主要是帶有一個小型 InnoDB 的 MyISAM。伺服器沒有其他活動連接。
SHOW PROCESSLIST;
僅顯示來自還原的插入(以及顯示程序列表本身)。有沒有人知道可能導致急劇放緩的原因是什麼?
是否有任何 MySQL 變數可以更改以在恢復過程中加快恢復速度?
可能會減慢該過程的一件事是key_buffer_size,它是用於索引塊的緩衝區的大小。將此調整為至少 30% 的 RAM,否則重新索引過程可能會太慢。
作為參考,如果您使用 InnoDB 和外鍵,您還可以禁用外鍵檢查並在最後重新啟用它(使用
SET FOREIGN_KEY_CHECKS=0
andSET FOREIGN_KEY_CHECKS=1
)。
此連結顯示了可以做些什麼來加快恢復過程。
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;
並將這些語句放在轉儲文件的末尾
SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS; SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS; SET AUTOCOMMIT = @OLD_AUTOCOMMIT; COMMIT;
這對我有用。快樂恢復:-)