Mysqldump

mysql轉儲錯誤

  • May 17, 2017

我正在使用 mysql 版本 5.0.5 並試圖轉儲我的數據,以便為版本升級做準備,並得到一個錯誤。

我跑:

./mysqldump -u root -p --add-drop-table --all-databases > /data/all_db_dump.mysql

並得到:

mysqldump: Error 2013: Lost connection to MySQL server during query when dumping table `abc` at row: 408640

我檢查了一些類似的問題並找到了一些建議:

  • 執行--skip-extended-insert- 沒有幫助
  • 執行--hex-blob- 沒有幫助
  • 配置max_allowed_packet為 1024M - 沒有幫助(我有 4 GB RAM)
  • 配置net_read_timeout為 7200 - 沒有幫助
  • 配置net_write_timeout為 7200 - 沒有幫助

對於上述所有情況並得到相同的錯誤。

我在轉儲數據時監控了伺服器的記憶體,沒有發現任何問題。可能是什麼問題?

考慮到您已經在 GLOBAL 級別而不是會話級別設置了超時、數據包和其他變數,我能想到的其他選項很少。

選項1:驗證表損壞

分析和修復表“abc”以驗證 myisam 引擎是否損壞。(如果可能,還要考慮將表遷移到 innodb)辨識表損壞的另一種方法是從這些表中選擇數據(行:408640),您應該會收到錯誤,否則 MySQL 也可能會關閉。

對您要實現的目標的建議(以防 mysqldump 無法正常工作):

您也可以通過就地升級方法升級 MySQL。步驟如下:

  • 停止 MySQL 伺服器(innodb_fast_shutdown=0)並複製完整的 datadir 文件夾作為備份(mysqldump 的替代品,以防出現任何問題)
  • 用您要升級到的版本的二進製文件升級(替換)MySQL 二進製文件(/basedir/bin/)
  • 像往常一樣啟動 MySQL 伺服器並執行 mysql_upgrade

筆記 :

  1. 如果您的數據太大,就地升級比邏輯轉儲快得多
  2. 將 5.0 升級到 5.6 時不要跳過主要發布版本 相反,您必須執行 5.0 -> 5.5 -> 5.6
  3. 在升級到任何版本之前,請注意已棄用的變數
  4. 確保在任何升級方法後分析/修復表。

還有一件事,當你使用 mysqldump 轉儲時,你需要生成 .sql 文件而不是 .mysql 文件(all_db_dump.sql)

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