Mysql

如何轉儲大型數據庫?

  • February 3, 2020

我嘗試通過mysqldump. 該數據庫有數百萬行,總大小為 1.3TB。

CREATE TABLE PageContents
(
ID int(11) unsigned,
Added date,
Text MEDIUMTEXT,
FOREIGN KEY(ID) REFERENCES AllPages(ID) ON DELETE CASCADE,
PRIMARY KEY(ID)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci KEY_BLOCK_SIZE=1;

但我在傾倒 8 小時後收到錯誤消息:

mysqldump: Error 2020: Got packet bigger than 'max_allowed_packet' bytes when dumping table `PageContents` at row: 20946782

我增加max_allowed_packetmysql.cnf

max_allowed_packet  = 16G

首先,確保您已在配置文件max_allowed_packet的相應部分中進行了設置,並且它不超過1G最大值[mysqldump]``my.cnf

[mysqldump]
max_allowed_packet=1G

或者您也可以在執行時指定它(無需更改 my.cnf):

mysqldump --max-allowed-packet=1G ...

您可以添加max_allowed_packet=512M到您的mysqldump命令。

或添加max_allowed_packet=512M[mysqldump]您的部分my.cnf

[mysqldump]注意:如果不在該部分下,它將不起作用

引用自:https://dba.stackexchange.com/questions/258767