1

私の質問はこれによく似ています。ただし、私はMySQLを使用しており、見つけることができる「最も技術の低い」ソリューションを探しています。

状況は、同じデータが含まれているはずの 2 つのデータベースがありますが、主に相互に連絡できないときに更新されます。それらをうまく同期できる、ある種のクラスタリングまたはマスター/スレーブのものがあると思います。ただし、これは自分で使用するための単なるスクラッチ DB であるため、私の場合はやり過ぎです。

これを行う良い方法は何ですか?

私の現在のアプローチは、そのうちの1つにフェデレーションテーブルを配置し、時々、挿入/選択を使用してデータをネットワーク経由で他のテーブルに詰め込むことです。主キーなどを処理しようとすると、少し複雑になります。(insert ignore正しく動作しないようです)

ps転送する行を選択するクエリを簡単に作成できます。

4

2 に答える 2

5

MySQL の組み込みのレプリケーションはセットアップが非常に簡単で、ほとんどの場合 DB が切断されている場合でもうまく機能します。これを構成することは、そこにあるカスタム ソリューションよりもはるかに簡単だと思います。

手順については、 http://www.howtoforge.com/mysql_database_replicationを参照してください。10 ~ 15 分で起動して実行できるようになり、再度考える必要はありません。

私が見ることができる唯一の欠点は、それが非同期であることです。すべての変更を取得する 1 つの指定されたマスターが必要です。

于 2008-11-13T03:30:00.733 に答える
0

私の現在の解決策は

  • ターゲット ボックスのテーブルを取得するソース ボックスの連合テーブルをセットアップする
  • 更新する行を選択するソース ボックスのビューを設定する (連合テーブルの結合として)
  • ソース ボックスのビューを取得する別の連合テーブルをターゲット ボックスにセットアップする
  • INSERT...SELECT...ON DUPLICATE UPDATEプルを実行するには、ターゲット ボックスで を発行します。

ソース テーブルを取得してすべてを 1 回で実行できると思いますが、これまでに確認したクエリ ログに基づいて、約 20K のクエリが実行されるか、約 100 ~ 300MB になると推測しています。状況に応じたデータ転送。上記のセットアップを販売すると、約 4 つのクエリが発生し、実際に必要な量よりも多くのデータが転送されます。

于 2008-11-13T22:07:57.803 に答える