週に一度、次のようにローカル開発環境に巨大なデータベース更新を実行する必要があります。
$ gunzip < /path/to/database1.sql.gz | mysql -uUSER -p database1 &
$ gunzip < /path/to/database2.sql.gz | mysql -uUSER -p database2 &
$ gunzip < /path/to/database3.sql.gz | mysql -uUSER -p database3 &
完了するまでに数時間かかる可能性があるため、これらを一晩実行しようとしています。
これらのタスクの進捗状況を表示する方法を考え出すのを手伝ってもらえますか?
推測は次のとおりです。
show processlist
mysqlで現在挿入しているテーブルを確認します(現在のメソッドですが、一部のテーブルは巨大で、少なくとも1つのdbには巨大なテーブルが1つしかないため、プロセスの大部分はこのテーブルに残っています。役立つよりも)Db.sql.gzファイルはすべて標準のgzip圧縮されたmysqldumpであるため、更新を提供するためにダンプに何かを組み込むことはできないと思います。 (しかし、私は何かを見逃しているなら、私はそれに対してオープンです)
バウンティルール
答えは:
scp
のような視覚的(推奨!)、または簡単にアクセスできる単純な進行状況データベーステーブルを通じて)。mysqldump
エクスポートまたは通常のgunzip ... | mysql
import(あなたが思いついたものを使用しないかもしれない他のエンジニア向け)mysqldump
または別のmysqlブランチリクエストに簡単に対応してください。コマンドで-v:詳細モード(進行状況を表示)を使用するか、次のようにgzip、gunzipコマンドの進行状況を表示するPipe Viewer(pv
)を使用する別の方法があります。
$ pv database1.sql.gz | gunzip | mysql -u root -p database1
これにより、scpと同様の進行状況が出力されます。
$ pv database1.sql.gz | gunzip | mysql -uroot -p database1
593MiB 1:00:33 [ 225kiB/s] [====================> ] 58% ETA 0:42:25
Pipe Viewerを使用してmysqldumpを監視することもできます。
mysqldump -uroot -p database1 | pv | gzip -9 > database1.sql.gz
pv
がまだない場合は、次を使用してインストールできます。
yum install pv
またはmacportsを使用
Sudo port install pv
データをロードする前にドロップデータベースを実行し、それが発生した後、データベースディレクトリで継続的な「du -sh」を実行できると思います。元のデータベースディレクトリのサイズがわかっていれば(なぜだろうか?)、進捗モニターとして使用できます。データベースはドロップ可能ですか?