2012-04-17 11 views
0

mysqlバックエンドを持つPHPアプリケーションを実行するサイトがいくつかあります。彼らは100%のインターネット接続時間を持たないかもしれないという事実のために、彼らはすべて別々のサーバーで動いています。複数のデータベースを同期状態に保つ方法

現在、すべてのレコードの変更日時を保存しています。レコードを削除済みとしてマークするフラグ。同期のために、私は削除を同期することができるように、追跡されたすべての削除されたレコードがまだ追跡する必要があります。

すべてのサイトは、同期した時点を追跡します。

問題はすべてのサイトで挿入と更新が行われることです。そのため、しばらくの間、サイトが切断された場合。それは他のすべてのサイトのデータ同期に問題を引き起こします。

すべてのサイトを同期させておく方法はありますか?

同期を行う現在のプログラムは、phpで書かれています。すべてのテーブルをループして、最後の同期以降に変更されたレコードをチェックします。

+0

あなたは複製を排除しましたか? http://dev.mysql.com/doc/refman/5.0/en/replication.html – Marvo

+0

[mysql replication](http://dev.mysql.com/doc/refman/)をセットアップできない場合は、 5.0/en/replication-howto.html)、あなたのデータに適した複製を作成する独自のスクリプトがあなたの唯一のアプローチです。実際にアプリケーション設計を概観し、データベースの障害に耐えるほど頑丈なものを作る方法を見てください。 – ghoti

+0

私は複数のマスターを持っているので、複製は機能しません。また、データベースがこのように設計された理由は、インターネットの障害を許容することです。悪いインターネットリンクを介して複数のサイトを複製すると、間違った順序で更新プログラムの一部が実行される傾向があります。 – iWantSimpleLife

答えて

0

問題が解決しました。多かれ少なかれ。レコードが最後に変更された日時を記録するだけでなく、現在のサーバーでレコードが作成/変更された時刻も記録します。これは、実際には2つのタイムスタンプがあることを意味します。 1つは実際の変更時刻を追跡し、1つはこの変更がこのサーバーにコピーされたときを追跡するためのものです。私はレコードがコピーされた時間に基づいてレコードを同期させるだけです。

関連する問題