MySQL データベースを C# でローカルとリモートで同期する

MySQL データベースを C# でローカルとリモートで同期する

これは C# というよりは MySQL に関する質問なので、ここに投稿しました。最初に起動したときに MySQL のローカル インスタンスを実行するソフトウェアをいくつか作成しました。MySQL が起動したら、リモート データベース テーブルとソフトウェアが実行するローカル データベース テーブルの間でデータを同期したいと思います (他のデータベース/テーブルはたくさんあるので同期しないでください)。

データベース全体を別のサーバーに同期するレプリケーションを設定していますが、サーバーがダウンして復旧しない限りは機能します。そのため、ソフトウェアが閉じられると MySQL も閉じられるため、レプリケーションは機能しないと思います。

では、リモート データベースとローカル データベースを同期する最適な方法は何でしょうか?

答え1

タイムアウトを調整し、「STOP SLAVE」および「START SLAVE」コマンドを再発行することで、MySQL マスター/スレーブ レプリケーションを機能させることができる場合があります。スレーブ構成ファイルでは、slave-net-timeout を接続が切断されたと判断するまでの秒数に設定し、master-connect-retry を、再接続を試行するまでの一時停止する秒数に設定できます。どちらも 86400 秒、つまり 1 日に設定されています。たとえば、次のように 30 秒に設定してみることができます。

slave-net-timeout = 30
master-connect-retry = 30

代替案としては、次のような解決策を試してみることです。SymmetricDS データベース同期または Tungsten です。ネットワークが遅い場合や、時々利用できない状況で SymmetricDS を使用しましたが、自動的に回復しました。スタンドアロンのレプリケーション サーバーとして実行することも、アプリケーションに組み込んで制御することもできます。

関連情報