64

私は大規模な MySQL データベースを持っています。それを と呼びましょうlive_db。これを同じマシンに複製して、test_dbテーブル構造とデータを含む ( ) を操作するためのテスト システムを提供します。定期的にtest_db、 の内容でを更新したいと思いlive_dbます。可能であれば増分。

それを行うためにMySQLに組み込みのメカニズムはありますか?のデータを変更できるはずなので、マスタースレーブレプリケーションは私が望んでいるものではないと思いますtest_db。ただし、これらの変更を保持する必要はありません。

よろしく、

CGD

4

6 に答える 6

90

コマンドラインクライアントは、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

データが大きいため、時間がかかることに注意してください。

于 2011-07-11T15:04:19.993 に答える
10

上記のマイケルの回答はうまく機能しますが、イベント、ストアドプロシージャ、またはトリガーはコピーしません。

これらのいくつかのスイッチをコピーするには、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

于 2015-04-20T10:15:38.420 に答える
0

MySQL Migration Toolkit を使用する場合は、Data Mapping ステップでスキーマ名をダブルクリックして、ターゲット スキーマ名を変更できます。

于 2014-10-09T18:12:14.223 に答える