2011-10-11 7 views
13

私はphpとmysqlを使ってWebアプリケーションを開発しています。このアプリケーションは3つの異なる場所で動作します。 1.インターネット上。 2.本社。 3.支社。アプリケーションは本社と支社のローカルサーバー上で実行されます。インターネット接続は毎回利用できません。顧客はこれら3つの場所を通じて注文を出します。私の問題は、これらの3つのデータベース間でデータを同期させ、これらの3つのデータベースを最新の状態に保ちたいということです。これにはどんな方法もありますか?オンライン/オフラインデータベース同期 - MySQL/PHP

+0

hmm。レプリケーションを試してください – Gajahlemu

+0

[MySQLデータベース同期](http://stackoverflow.com/questions/3648242/mysql-database-synchronization)の可能な重複([他の質問]を見て(http://stackoverflow.com/search ?q = mysql + synchronization + php) – mario

+0

http://www.mysql.com/products/cluster/mysql-cluster-datasheet.pdf – Gajahlemu

答えて

11

。ノード(サーバー/データベース)間でデータを同期または複製することができ、定義したデータをプッシュまたはプルするだけです。それはJavaをベースにしたソフトウェアですが、急な学習曲線がありますが、それは本当に仕事です。

SymmetricDSは、1つのノードから2つの他のノードに変更をプッシュするように設定できます。したがって、3つのノードに同じデータが含まれていることを確認します。主キーは一意のキーであることを確認する必要があります。自動増分された値はデータベースによって割り当てられません。これは、同期する3つの異なるデータベース間で問題が発生する可能性が最も高いからです。

ソフトウェアはデータベースにトリガーをインストールし、INSERT、UPDATE、DELETE(およびその他の)操作が実行されると変更を取得します。これらのデータ変更は、他のノードで呼び出されます。ソフトウェアは各場所で実行する必要がありますが、インターネット接続は必要なく、いつでも利用できます。

私はすべてのテーブルでトリガーがパフォーマンスを低下させると心配しましたが、これはまったく問題にはなりません。私は、トリガーがインストールされた後でパフォーマンスに関する問題を発見したとは言えません。

詳しくはhttp://symmetricds.org/をご覧ください。

+0

ツールを提案してくれてありがとうsbrattla。私は私の問題を解決するためにいくつかのカスタムPHPスクリプトを書いた。私はこれを解決するためにSymmetricDSのアイデアを使用しました。 – iamsumesh

+0

この使い方は? –

+0

私の上のポストは、それがどのように機能するかを説明していますが、その詳細についてはソフトウェアのWebサイトにアクセスする必要があります。言及したように、それは急な学習曲線を持っていますが、それは非常にうまくいきます。 – sbrattla