誰か助けてください! -MySQL 5.5データベースに大きなテーブルがあります。これは、ブロブ/バイナリデータの混合と、ファイルパスへのリンクを持つ単なるデータ行を保持するテーブルです。 100万行を少し超えています。
このテーブルからデータを取り出して別のサーバーに移行するのに必死の問題があります。
私はすべての種類を試しました-mysqldump(-quickありとなし)、コマンドラインを介してクエリの結果をダンプします。 MySQL管理ツール(Navicat)を使用して、データを開いてファイル、CSVにエクスポートするか、別のDBや別のサーバーにデータを(行ごとに)転送しますが、すべて使用できません。
DB管理ツール(Navicat)を使用しようとすると、約25万レコードに達し、「メモリ不足」エラーで失敗します。私が試した他のプロセスからエラーメッセージを取得することはできませんが、それらはほぼ同じ数のレコードでフォールオーバーするようです。
MySQLのメモリ変数(バッファサイズ、ログファイルサイズなど)を試してみましたが、これはエクスポートが停止する場所に影響を与えているようです(現在、実際にはさらに悪化しています)。
また、max_allowed_packetは、これも問題になる可能性があることを認識しているので、途方もなく大きい値に設定されています。
私は本当に暗闇の中で撮影しており、私は何度も何度も同じことを試して、それ以上得ません。誰かが私に特定のガイダンスを与えたり、このデータを抽出するために使用できるツールをおそらく勧めたりできますか?
よろしくお願いいたします。
以下のもう少し情報-いくつかの質問とアドバイスに従ってください:
ダンプしようとしているテーブルのサイズ-言うのは難しいですが、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
net_write_timeout
(おそらく、デフォルト値の60秒は、BLOB値とバイナリ値のシナリオでは小さすぎます)
参照:
そして一般的に:
これは実行した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内にあり、デフォルトで有効)を無効にするソリューションが見つかりました。この方法の方が安全だと思いますが、速度も遅くなります。
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つの問題を引き起こします
ドライブを確認してくださいD:
十分なスペースがあります(たぶん2TB ???)
ペンタホのデータ統合を試してみてください(最も古いもののためのやかん)。データをdBからdB(またはdBからファイル)に移動および変換するためのetlツールです。新しいクールなツールを試してみてください。
よろしく。