Date: Thu, 11 Jul 2002 17:52:49 +0900
From: BSS開発部 <who@sub.example.jp>
はじめてお便りさせていただきます。川嶋と申します。
データベースサーバのダウン時に備えて
プライマリのデータベースとは別に、セカンダリのデータベースサーバを用意し
プライマリのデータベースで発生したデータの変更をセカンダリのデータベースに
反映させるようなレプリケーションを行いたいと考えておりますが
実際に試してみたところ、思うようにいかず、ご相談させていただきます。
----------------------------------------
(実現したいこと)
まずプライマリのデータベースを参照し、接続可能であればそこにデータを更新します。
但し、プライマリのデータベースに接続できない場合にはセカンダリのデータベースを
参照し、接続可能であればセカンダリのデータベースにデータを更新します。
プライマリのデータベースサーバ復旧後は、その間にセカンダリのデータベースに更新された内容を
レプリケーション機能を用いてプライマリのデータベースに反映させます。
セカンダリのデータベースサーバがダウンした場合も同様に、
セカンダリデータベースサーバ復旧後、プライマリのデータベースに更新された内容を
反映させたいと考えています。
----------------------------------------
(試した方法 その1)
プライマリのデータベースをパブリッシャ、
セカンダリのデータベースをサブスクライバに設定し、
マージレプリケーションを作成しました。
※[マージ エージェントのスケジュールの設定]画面で[要求時のみ]を選択、
[サブスクリプション優先度の設定]画面では
[競合の解決にサブスクライバのプロキシとしてパブリッシャを使用]を選択しています。
そして、プライマリのデータベースのあるテーブルに対し、レコードのInsertを行ってみました。
しばらくしてプライマリのデータベースの当該テーブルを参照すると、先ほどInsertしたレコードのうちの
何件かが削除されていました。
レプリケーションの履歴を参照すると、レコードを削除したというログがありました。
----------------------------------------
(試した方法 その2)
パブリッシャおよびサブスクライバに設定するデータベースを(その1)と同じ設定とし
スナップショットレプリケーションを作成しました。
サブスクライバの選択では、「即時更新」としました。
セカンダリのデータベースサーバの電源を落とした状態で
プライマリのデータベースのあるテーブルに対し、変更を加えたのち
セカンダリのデータベースサーバの電源を投入しました。
(プライマリで変更された内容がセカンダリに反映されるか確認したかったのです)
いつになっても反映されません。
-----------------------------------------
(その2)では、サブスクライバに「即時更新」ではなく
「キュー更新をフェールオーバーとする即時更新」を指定すれば良かった?という予想はあります。
どのようにしたら、上記の実現が行えるのでしょう。
よろしくお願いします。
[MSDE/SQLServerに関して、今、どんなことにお困りですか?] |
よろしければお困りの内容を、電子メールで教えて下さい。 |
質問を電子メールで作成する
|
[ウィンドを閉じる][MSDE/SQLServer FAQ ][MSDE / MSDE2000 技術サポート情報一覧]
|