0

現在、私はこのシナリオを持っています、

  1. Windows マシンに mysql db がインストールされた複数のデスクトップ クライアント。
  2. レポート目的で、Web 上でホストされている 1 つのサーバーに同期する必要があります。
  3. 一方向の同期 (クライアントから Web へ) を実行するだけです。
  4. クライアント IP は、固定 IP のない標準の adsl を使用するため、常に変化しています。
  5. 各クライアント データベースは、サーバー上の 1 つのスタンドアロン データベース (Web でホストされている) と同期します。
  6. この同期はスケジューラで実行できますか? 以前から3時間ごとのように。

mysql レプリケーションの使用を考えていますが、これをセットアップする方法について質問がありますか? これをマスターからスレーブにセットアップしますか? またはマスターからマスター?サーバーはレポート目的でのみ使用されるため、クライアントがマスターになり、サーバーがスレーブになると想定していますが、多くの mysql レプリケーションをチェックすると、スレーブからの最初のレプリケーションのように見えますか? (スレーブサーバー設定でmaster-host = ipのような設定があることがわかります)サーバーがクライアントIPについてわからないため、これは目的を無効にします...

4

1 に答える 1

0

おそらく、これはあなたが言及しているいくつかの項目(スレーブ/マスター/など)を考えると完全に的外れですが、私が開発しているアプリでは、単一のソースが不明/動的IPの複数のクライアントに供給する同様のアーキテクチャを持っています. 私の解決策は、その行が最後に更新されたときのタイムスタンプを持つ別のフィールドを含め、同期するために、クライアントがローカルデータベースでその列の MAX を検索し、それを変数として Web サービスに送信することでした。より新しいタイムスタンプ。次に、クライアントは応答データを解析し、ローカル データベースに置き換えて、古いデータが上書きされるようにします。

私が対処しなかった詳細の 1 つ (私のシナリオでは必要ないため) は、アイテムが削除されたことを伝える方法です...おそらく、行が削除されたときに、行のプライマリ ID とタイムスタンプを持つ別のテーブルにエントリが作成されますWeb サービスは、そのテーブルのより新しいタイムスタンプを持つすべての行の配列を含めることができます。

于 2011-03-21T03:16:14.350 に答える