Mysqldump
mysql轉儲錯誤
我正在使用 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
筆記 :
- 如果您的數據太大,就地升級比邏輯轉儲快得多
- 將 5.0 升級到 5.6 時不要跳過主要發布版本 相反,您必須執行 5.0 -> 5.5 -> 5.6
- 在升級到任何版本之前,請注意已棄用的變數
- 確保在任何升級方法後分析/修復表。
還有一件事,當你使用 mysqldump 轉儲時,你需要生成 .sql 文件而不是 .mysql 文件(all_db_dump.sql)