mysqldumpエラー2013


18

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秒未満で実行され、上記のエラーが表示されます。

DBの合計サイズは1.3GBで、maia_mailテーブルは1.0GBです

ではmy.cnfIこれらのセットを持っています:

[mysqld]
max_allowed_packet      = 1300M
[mysqldump]
max_allowed_packet      = 1300M

データベースをダンプする方法に関するアドバイスまたはアドバイスをお願いします。


170GBの空き容量。マシンdbへのダンプがオンでもリモートでも同じです
-garfink

電子メールのコピーvarcharデータを主に
garfink

1300Mは最近の変更であり、デフォルトの16Mに設定された場合にも問題が発生しました。1300Mへの変更後、サーバーも再起動されました。
ガーフィンク

16Mのデフォルトに戻しました。ダンプの結果、行15で同じエラー2013
garfink

回答:


13

InnoDBの設定を変更することは簡単に提案できますが、これはmysqldumpを機能させるためだけに手間がかかります。あなたは私が提案していることを気に入らないかもしれませんが、私はそれがあなたの最良の(唯一の)選択肢だと信じています。ここに行く:

提案#1:拡張挿入を無効にする

mysqldumpのデフォルト設定には、1つのINSERTで数百または数千の行をまとめて含めることが含まれます。これは、拡張INSERTとして知られています。max_allowed_pa​​cketを超えるオーバーランを引き起こしています。

大規模なmysqldumpをインポートするために同じことを行うことを議論した投稿Sep 01, 2011MySQLサーバーが大きなダンプのインポートを妨害しなくなった)に答えました。拡張INSERTを無効にすると、面倒なmysqldumpの作成にも役立つと思います。

mysqldump -u root --skip-extended-insert -p maia > maia.sql

悪いニュース:各行にINSERTコマンドを作成する際にこれが行うこと。これにより、mysqldumpの実行にかかる時間が確実に長くなります。その結果、リロードにかかる時間も増加します(おそらく10〜100倍になります)。

skip-extended-insert前に話しました

提案#2:バイナリデータを16進数としてダンプする(オプション)

mysqldumpのバイナリデータをよりバイトポータブルにするには、そのようなデータを16進数ダンプします

mysqldump -u root --skip-extended-insert --hex-blob -p maia > maia.sql

悪いニュース:mysqldumpをもう少し膨らませます

試してみる !!!

サイドノート:max_allowed_pa​​cketの最大サイズは1Gです


5

12 GBのデータベースをダンプしようとしたときにも同じエラーが発生していました。動作させるために次の変更を行いました。

  1. max_allowed_pa​​cketを1024Mに設定
  2. net_read_timeoutを7200に設定
  3. net_write_timeoutを7200に構成

注:タイムアウト値が大きすぎる(7200秒、つまり20時間)ことは知っています。しかし、私は偶然にもそうするつもりでした。最適なタイムアウト値を見つけようとしています。


2
他のユーザーの場合:これらは、mysqldump構成ファイルではなく、サーバー上で設定されています。また、7200秒は2時間ではなく20です
マーク

set global net_read_timeout = 120; グローバル設定net_write_timeout = 900; 私のために働いた
-kasi

2

my.ini(Windows)またはmy.cnf(Linux)構成ファイルに次を含めるだけです。

[mysqld]
max_allowed_packet=1024M 

[mysqldump]
max_allowed_packet=1024M 
net_read_timeout=3600 
net_write_timeout=3600

2
セクションはその逆でなければなりません。
停止ハーミングモニカ

1

ダンプを取るのに十分なメモリがあることを確認してください。次のようなコマンドを使用して、ダンプを取りながらメモリをチェックしてください。

free -mt

ダンプを取るときにメモリが枯渇すると、

mysqldump:エラー2013:接続が失われました


1

私が見つけた:

--max-allowed-packet=1G --net-buffer-length=32704

...ネットリード/ライトタイムアウトの変更、TCPキープアライブなどにもかかわらず、以前は(確実に)動作していなかった場所で動作します。

max_allowed_packet一人での設定は、それが機能しなかった、そうならば必要とされない可能性がnet_buffer_length使用されています。- ラルフボルトン

変更しmax-allowed-packetnet-buffer-length拡張挿入を無効にするよりもはるかに良いようです。- クリストファー

max_allowed_pa​​cketで十分な大きさも参照してください。なぜ変更する必要があるのですか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.