大規模なMySQLデータベースがあるので、live_db
と呼んでみましょう。これを同じマシンで複製して、テーブル構造やデータを含む(test_db
)で遊ぶテストシステムを提供します。定期的にtest_db
をlive_db
のコンテンツで更新します。可能であれば増分。
MySQLにそれを行うための組み込みメカニズムはありますか?マスタースレーブレプリケーションは、test_db
のデータを変更できるはずなので、私が望むものではないと思います。ただし、これらの変更を保存する必要はありません。
よろしく、
CGD
mysql
コマンドラインクライアントは、標準入力からSQLステートメントのストリームを受け入れます。したがって、コマンドラインでmysqldump
の出力をmysql
に直接パイプすることができます。これをcronジョブとして実行すると、更新されたライブデータでテストデータが定期的に上書きされます。
mysql --user=username --password=passwd -e 'DROP DATABASE test_db;'
mysql --user=username --password=passwd -e 'CREATE DATABASE test_db;'
mysqldump --user=username --password=passwd live_db | mysql --user=username --password=passwd test_db
データが大きいため、時間がかかることに注意してください。
Michaelsはaboweはうまく機能すると答えていますが、イベント、ストアドプロシージャ、またはトリガーをコピーしません。
これらをコピーするには、mysqldumpにさらにいくつかのスイッチが必要です:--events --triggers --routines
すでに作成されたコピーを補完するには:
mysqldump --user=username --password=passwd --no-data --no-create-info --no-create-db --events --triggers --routines live_db | mysql --user=username --password=passwd test_db
すべてのMacユーザーにとって、sequel proで必要なことは、データベース(メニュー)->データベースの複製です。できた!
MySQLdumpの問題は、ダンプ中にライブデータベースが使用できないか、使用するのが非常に厄介であるか、バックアップの一貫性が失われることです。データベースを使用する必要がないため(たとえば、深夜など)、ライブデータベースを使用できないことが重要でない場合に、十分な時間枠がない限り。
予備のスペースがある場合のもう1つの可能性-現在、20 Gbはそれほど多くありません-補助データベースを使用することです。
MySQL Serverの2番目のコピーを別のポートにインストールし、それをスレーブにすることができます。次に、2つの同一のデータベース(ライブマスター、ライブスレーブ)があります。
テストデータベースのクローンを作成する必要がある場合は、スレーブレプリケーションを停止します(ライブスレーブは「凍結」状態になります)。MySQLbackupを使用するか、データファイルをコピーするだけでライブスレーブをテストデータベースにバックアップします。完了したら、レプリケーションを再開します。
ライブマスターへの影響はごくわずかであり、スレーブは実際には非更新クリティカル選択に使用できます。
MySQL Migration Toolkitを使用する場合は、データマッピングステップでスキーマ名をダブルクリックし、ターゲットスキーマ名を変更できます。