Backup

如何加快從轉儲文件中恢復 MySQL 的速度?

  • November 28, 2019

我正在將 30GB 數據庫從 mysqldump 文件恢復到新伺服器上的空數據庫。從轉儲文件執行 SQL 時,還原開始非常快,然後開始變得越來越慢。單個插入現在需要 15 秒以上。這些表主要是帶有一個小型 InnoDB 的 MyISAM。伺服器沒有其他活動連接。SHOW PROCESSLIST;僅顯示來自還原的插入(以及顯示程序列表本身)。

有沒有人知道可能導致急劇放緩的原因是什麼?

是否有任何 MySQL 變數可以更改以在恢復過程中加快恢復速度?

可能會減慢該過程的一件事是key_buffer_size,它是用於索引塊的緩衝區的大小。將此調整為至少 30% 的 RAM,否則重新索引過程可能會太慢。

作為參考,如果您使用 InnoDB 和外鍵,您還可以禁用外鍵檢查並在最後重新啟用它(使用SET FOREIGN_KEY_CHECKS=0and SET 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;

這對我有用。快樂恢復:-)

引用自:https://serverfault.com/questions/146525