web-dev-qa-db-ja.com

MySQL 5.5添付ファイルテーブルからのデータのバックアップ/エクスポートが失敗し続けます!

誰か助けてください! -MySQL 5.5データベースに大きなテーブルがあります。これは、ブロブ/バイナリデータの混合と、ファイルパスへのリンクを持つ単なるデータ行を保持するテーブルです。 100万行を少し超えています。

このテーブルからデータを取り出して別のサーバーに移行するのに必死の問題があります。

私はすべての種類を試しました-mysqldump(-quickありとなし)、コマンドラインを介してクエリの結果をダンプします。 MySQL管理ツール(Navicat)を使用して、データを開いてファイル、CSVにエクスポートするか、別のDBや別のサーバーにデータを(行ごとに)転送しますが、すべて使用できません。

DB管理ツール(Navicat)を使用しようとすると、約25万レコードに達し、「メモリ不足」エラーで失敗します。私が試した他のプロセスからエラーメッセージを取得することはできませんが、それらはほぼ同じ数のレコードでフォールオーバーするようです。

MySQLのメモリ変数(バッファサイズ、ログファイルサイズなど)を試してみましたが、これはエクスポートが停止する場所に影響を与えているようです(現在、実際にはさらに悪化しています)。

また、max_allowed_pa​​cketは、これも問題になる可能性があることを認識しているので、途方もなく大きい値に設定されています。

私は本当に暗闇の中で撮影しており、私は何度も何度も同じことを試して、それ以上得ません。誰かが私に特定のガイダンスを与えたり、このデータを抽出するために使用できるツールをおそらく勧めたりできますか?

よろしくお願いいたします。

以下のもう少し情報-いくつかの質問とアドバイスに従ってください:

ダンプしようとしているテーブルのサイズ-言うのは難しいですが、mysqldumpが停止すると、SQLダンプが27GBになります。合計で約4倍になる可能性があります。

次のmysqldumpコマンドを実行してみました。

mysqldump --single-transaction --quick mydatabase attachments --password=abc123 -u root > d:\attachments.sql 

そしてこれはエラーを与えます:

mysqldump:エラー2013:行のテーブル添付ファイルをダンプすると、クエリ中にMySQLサーバーへの接続が失われました:251249 – Mayb2Moro 4時間前

サーバーには8 GBのRAMが搭載されており、関連する設定の一部は以下にコピーされています。これはINNODBデータベース/テーブルです。

innodb_buffer_pool_size=3000M
innodb_log_file_size=1113M
max_allowed_packet=2024M
query_cache_size=52M
tmp_table_size=500M
myisam_sort_buffer_size=50M
2
Mayb2Moro

net_write_timeout(おそらく、デフォルト値の60秒は、BLOB値とバイナリ値のシナリオでは小さすぎます)

参照:

net_write_timeout

そして一般的に:

net_read_timeout

2
Cristian Porta

これは実行したmysqldumpコマンドでした

mysqldump --single-transaction --quick mydatabase attachments --password=abc123 -u root > d:\attachments.sql

あなたが試すべき2つのパラメータがあります

拡張挿入

誰かが書いた MySQLドキュメントのこの投稿

Enrico Modaneseによる2006年7月13日午後1時5分投稿

大きなblobを持つデータベースのダンプをリロードすると、エラー[MySQL 4. *および5. *]がよく発生します。 --skip-extended-insertを使用して--extended-insert(複数オプション--opt内にあり、デフォルトで有効)を無効にするソリューションが見つかりました。この方法の方が安全だと思いますが、速度も遅くなります。

hex-blob (オプション)

16進表記を使用してバイナリ列をダンプします(たとえば、 'abc'は0x616263になります)。影響を受けるデータ型は、BINARY、VARBINARY、BLOB型、およびBITです。

概要

Mysqldumpは次のようになります。

mysqldump --single-transaction --skip-extended-insert --hex-blob --quick mydatabase attachments --password=abc123 -u root > d:\attachments.sql

警告

-skip-extended-insert を使用すると、各行が単一のINSERTコマンドになります。これは2つの問題を引き起こします

  1. はるかに遅いmysqldump
  2. はるかに大きなmysqldump

ドライブを確認してくださいD:十分なスペースがあります(たぶん2TB ???)

試してみる !!!

1
RolandoMySQLDBA

ペンタホのデータ統合を試してみてください(最も古いもののためのやかん)。データをdBからdB(またはdBからファイル)に移動および変換するためのetlツールです。新しいクールなツールを試してみてください。

よろしく。

1
periket2000