10

私の会社では、大規模な顧客の MySQL データベース (40 GB 以上) をインポートすることがあります。これは、開発者のマシンにロードするのに 1 日以上かかることがあります。バックグラウンドで実行されるため、この読み込み時間は許容されますが、インポートがいつ完了するかを確実に見積もる能力はありません。これにより、それに基づいて行動する適切な時間をスケジュールすることが妨げられます。ケーブルマンが現れるのを待っているようなものです。

現在、私の最善の戦略は、show tablesロードされたテーブルの割合を確認するための簡単なコマンドです。ただし、テーブルのサイズは相互に、また顧客ごとに大きく異なるため、信頼できるとは言えません。

MySQL のインポートがどれだけ進んでいるかの信頼できるパーセンテージを取得するために使用できる優れた手法またはツールを誰かが持っていますか?

4

3 に答える 3

16

pvダンプをにパイプすることにより、コマンドでそれを行うことができますmysql

pv -i 1 -p -t -e /path/to/sql/dump | mysql -u USERNAME -p DATABASE_NAME

IOスループットに基づいて、インポートの進行中に進行状況バーが表示されます。(ここに見られるよう。)

于 2012-05-25T16:59:30.463 に答える
1

HeidiSqlは、これまでにロードされたGBの数を示します。これは、まだロードする必要がある量を把握しようとするときに非常に役立ちます。

于 2012-05-25T16:56:58.387 に答える
1

show processlistソースデータベースでを実行して、エクスポートが特定のテーブルにどれだけ離れているか(IDを自動インクリメントすることにより)を確認することもできます。Ericは、ソースのサイズと比較してデータベースデータディレクトリのサイズを監視できるという点で優れています。

ダンプ/インポートを高速化するのに役立つことがわかったのは、テーブルでそれを実行してから、複数のmysqldumpを同時に実行してプロセスを本質的にマルチスレッド化することです。私は通常、一度に約4つの個別のダンプ/復元を実行しました。最適な量は、ハードウェアとディスクの機能によって異なります。

あなたにアイデアを与えるための非常に単純な例:

mysqldump dbname table1 table2 table3 | mysql -h host &
mysqldump dbname table4 table5 table6 | mysql -h host &
mysqldump dbname table7 table8 table9 | mysql -h host &
于 2012-05-25T17:03:58.030 に答える