2011-06-30 19 views
0

私は最近、自分のアプリケーション用の新しいホスティングプロバイダに切り替えます。私の従業員は、新しいサイトがライブになるまで古いサイトを使用しましたが、古いサイトからのデータベースバックアップは、新しいサイトが稼働する2日前に行われました。転送の途中で、古いサイトのデータベースにレコードが入力されていましたが、新しいサイトには存在しませんでした(したがって、2日間のタイムラグ)。変更を反映するために2つのデータベースをどのようにマージしますか?異なる時点の2つのMySQLデータベースをどのように組み合わせるのですか?

注意すべき事柄のカップルは、主キーいくつかのテーブルのために複製され、いくつかのテーブル上の唯一のタイムスタンプが同様に存在している可能性があります。私は 'diff'や何かの並べ替えをしますが、テーブルは異なるフォーマットでダンプされます。

どのような考えですか?

答えて

0

実際にデータベースのスキーマを理解する必要がある場所です。データベースの両方のバージョンを見て、どのレコードが共有されているか、どちらではないか、そして同じキーで更新されたものと競合する主キーを持つプログラムを作成する必要があります。次に、変更をコピーして、プライマリキーの値を置き換える必要があります(番号が変更された行を参照する他の行の値を含む)!これは簡単ではなく、正確な科学ではありません。ヒューリスティックまた、いくつかの手動修復も行う予定です。あなたは、最終的なバックアップ:)あなたは、追加のプログラムを作成する必要はありません

0

をつかむとき

次の時間がダウンし、そのデータベースを閉じて。古いDBから新しいDBへの複製をセットアップするために必要なものすべて。 古いDBのすべてのデータが自動的に新しいDBに転送されます。この時点で、古いデータソースとして古いDBを使用する必要があります。そして、すべてのデータが新しい場所にコピーされるとすぐに、レプリカ接続のブレーキをかけるだけで、コード(またはDNSポインタ)内のDBアドレスを新しいものに変更する必要があります。

1.  oldDB ===> replication ==> newDB 
    R/W operations 

2.  oldDB ==/= brake ==/=  newDB 
           R/W operations 

MySQL Doc: 15.1.1. How to Set Up Replication

関連する問題