私はここではかなりの新人であり、次の特性を持つ単純な冗長性のために 2 つの SQL Server (2008 R2 以降) を構成するための推奨される方法について、ここにいるすべての専門家に尋ねたいと思います。
2 台のコンピューターがあります。それぞれに独自の SQL Server があり、タイムスタンプ付きのデータを定期的に DB に書き込む独自の Windows サービスもあります。このサービスには、独自の単純なスイッチオーバー/フェイルオーバー アルゴリズムが既にあります。
データベースの動作については、プライマリ サーバーがオフラインになると、バックアップ コンピュータのサービスが引き継ぎ、バックアップ データベースにデータを書き込みます。クライアントは、プライマリがダウンしているため、データを取得するためにバックアップに再接続することを認識します。
ここで、プライマリがオンラインに戻ると、このコンピューターのサービスはデータベースへのデータの書き込みを開始し、バックアップ コンピューターのサービスは停止します。
ここから、バックアップ データベースのデータが確実に同期されるように、または整合性のためにプライマリ データベースに転送されるようにするには、適切な同期計画が必要です。実際、プライマリがオフラインでない場合でも、両方のデータベースを同期する必要があります。
上記の説明から、いくつかのテキストを読み、3 つの候補となる方法にたどり着きました。
- マージ レプリケーション
- ミラーリング
- 追加のカスタマイズされたプログラミング - 本当に最後の手段ですが、必要に応じて手を汚す必要があります
最近の MS テクノロジーに久しぶりに足を踏み入れた私は、最初は少し戸惑いました。メソッドが上記の動作 (4) をサポートしているかどうかについて、これらのテキストを読んでいるときに明確な兆候を見つけることができませんでした。
私が理解しているように、フェールオーバー後にバックアップ DB が「プリンシパル」になり、プライマリ DB が「ミラー DB」になるため、方法 (2) はこの場合は機能しません。私が読んだところによると、Mirror DB はオフラインであり、アクセスできません。上記 (3) の Windows サービスの動作に注意してください。
(1) の方法については、どのように機能するか (または機能しないか) について混乱しています。たとえば、パブリッシュとサブスクライブの概念を理解しているので、プライマリ DB がパブリッシャーとして構成され、バックアップ DB がサブスクライバーになります。マージするには、バックアップ DB もパブリッシャーとして構成する必要があり、その逆も同様です。この場合、プライマリのサービスがデータを DB に書き込み、そのデータがバックアップ DB に公開されるとします。次に、再びバックアップ DB がこれをプライマリ DB に発行します (すべてトリガーに基づきます)。ここは無限ループのようです。
私の仮定がかなり正しいことを願っています。私は何が欠けていますか?
注: これらのサーバーは 1 週間以内に到着するため、現在テストするものはありません。理論的にしか準備できません。
ありがとうございます。