Mysql
mysqldump 錯誤 2013
我安裝了一個數據庫,我想在 mysql 中備份。問題是
mysqldump
導出“maia_mail”表失敗# mysqldump -u root -p maia > maia.sql mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `maia_mail` at row: 15
它執行不到 30 秒,並如上所述出現錯誤。
數據庫的總大小為 1.3GB,maia_mail 表為 1.0GB
在
my.cnf
我有這些設置:[mysqld] max_allowed_packet = 1300M [mysqldump] max_allowed_packet = 1300M
請指教或指導如何轉儲數據庫?
我可以很容易地建議更改 InnoDB 設置,這可能只是為了讓 mysqldump 工作而有點笨拙。您可能不喜歡我對建議的看法,但我相信這是您最好的(唯一)選擇。它是這樣的:
建議 #1:禁用擴展插入
mysqldump 的預設設置包括在單個 INSERT 中將數百或數千行聚集在一起。這稱為擴展插入。它導致超出 max_allowed_packet 的一些溢出。
我回復了一個文章
Sep 01, 2011
(MySQL 伺服器已經消失,阻礙了大型轉儲的導入),在那裡我討論了為導入大型 mysqldump 做同樣的事情。我相信禁用擴展 INSERT 也有助於創建麻煩的 mysqldump。mysqldump -u root --skip-extended-insert -p maia > maia.sql
壞消息:這會為每一行創建一個 INSERT 命令。這肯定會增加執行 mysqldump 所需的時間。因此,重新載入所需的時間也會增加(可能增加 10-100 倍)。
我之前討論
skip-extended-insert
過
Aug 12, 2011
:為什麼mysqldump文件這麼大?Aug 09, 2013
:從 MySQL 5.5 附件表備份/導出數據一直失敗!Nov 16, 2014
:如何使用 MySQL 批量處理數據庫轉儲的多個插入語句?建議#2:將二進制數據轉儲為十六進制(可選)
為了使 mysqldump 的二進制數據更具字節可移植性,以十六進制轉儲此類數據
mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql
壞消息:它會使 mysqldump 膨脹一點
試一試 !!!
我在嘗試轉儲 12 GB 數據庫時也遇到了同樣的錯誤。我進行了以下更改以使其正常工作。
- 配置 max_allowed_packet 為 1024M
- 將 net_read_timeout 配置為 7200
- 將 net_write_timeout 配置為 7200
注意:我知道超時值太高(7200 秒,即 2 小時)。但我故意這樣做只是為了排除任何機會。我正在尋找最佳超時值。