0

60 GB の DB と 13 GB のライブ DB があります。現在、ライブ DB にはいくつかの新しいエントリと更新されたエントリもあります。13GB DB の初期データが 60 GB と同じで、いくつかの行が更新され、最後のいくつかのエントリが完全に新しいとします。いいえ、その 13 GB を 60 GB にコピーします。ダンプがありますが、挿入コマンドがあり、それをインポートしようとすると、外部キー制約エラーが表示され、削除または更新できないと表示されます。そのため、MySQL インポート用のクエリが必要です。これにより、新しいデータがコピーされ、新しいデータがあれば更新されます。また、ダンプ ファイルは通常のダンプ ファイルであり、作成され、それらすべてが挿入され、その中の何かを変更することはできません :(

4

1 に答える 1

0

ディスク容量が問題にならない場合は、次のようにします。

  1. データベースをオフラインにする
  2. 元のデータベースが stuff という名前の場合は、stuff_extra という名前の新しいデータベースを作成します。
  3. 13 GB のダンプを stuff_extra にロードします。これで、スキーマが同一であるが一部のデータが異なる 2 つのデータベースができました。
  4. スタッフの各テーブルについて
    1. stuff_extra.table にもある stuff.table のすべての行を削除します。変更された行を削除することもできますが、これは同じくらい速いと思います。使用するmulti table delete
    2. stuff_extra.table のすべての行を stuff.table に挿入します。使用するinsert select

これで、stuff_extra のすべての行が stuff に含まれます。そして、更新されたすべてのデータが更新されました (または実際に削除されて挿入されました)。

于 2012-10-25T17:53:20.190 に答える