2016-09-26 10 views
-1

私はmaintananceのために私の複製データベースをシャットダウンしたいです。同じサーバー上のプライマリDBとディストリビュータDB。レプリケーションDB再同期2日後

これを行うと、どうなりますか?私のトランザクションは2日後に処理を続けますか?

答えて

0

メンテナンスを行っているデータベースによって回答が異なります(想定されるシナリオに基づいて加入者を推測しますが、完全性のために3つすべてを詳しく説明します)。私がここで概説していることはすべて、単純な「データベースをシャットダウンしてからバックアップを開始する」ことを前提としています。つまり、(同じサーバーまたは別のサーバーへの)リストアやそのようなものはありません。

出版社:これは3つの中で最も簡単です。パブリッシャをシャットダウンすると、ディストリビューターまたはサブスクライバが行うことはありません。サイト運営者がオンラインに戻ったとき、ログリーダーは途中で中断した部分を取り上げます。

ディストリビュータ:ディストリビュータを長期間オフラインにすると、複製がログの再利用を妨げるため、パブリッシャにとって危険です。具体的には、パブリッシュされたテーブルのいずれかで挿入、更新、または削除を生成するコマンドが実行されると、レプリケーションは、トランザクションログ内のエントリがクリアされるのを防ぎますリーダーエージェント。それ以外にも、ディストリビューターをオンラインに戻した後にどうなるかは、かなり簡単です。ディストリビューターがディストリビューターに配送した時点で発生したコマンドをログリーダーエージェントが処理できるようにするだけです。

加入者:長期間にわたって加入者をオフラインにしても、出版社または代理店にリスクが発生することはありません。ただし、保持期間が十分に長く設定されていない場合は、ディストリビュータで必要なコマンドを使用していない加入者がダウンタイムに追いつく危険性があります。ここにはいくつかのオプションがあります。まず、ディストリビュータの保持期間を、加入者の停止に加えて、同じ期間のすべてのコマンドを再生するのにかかる時間の長さに充分な時間間隔で増やすことができます。もう1つの選択肢は、メンテナンス期間が終了した後に加入者を再初期化することです。これは、スナップショットまたはデータベースバックアップのいずれかで行うことができます(ただし、元の初期化を行います)。これにより、加入者に2日間のコマンドを再生する必要がなくなります。環境内のトランザクションボリュームに応じて、どちらか一方がより意味をなさないかもしれません。

+0

greateの説明に感謝します。最高の !しかし、私はいくつかの質問があります。私の出版社のDBは単純な復旧モデルであり、私は5日間、私の流通保持プロパティを設定します。だから、購読者がオフラインの間、publishersはdistribituiondbにトランザクションを保存しますか? 一方、再初期化には時間がかかります。だから私はどこからサブスクライバのデータベースをダウンしてレプリケーションを開始する必要がありますthats。それは可能ですか? –

+0

はい。ディストリビューターがオンラインである限り、後で加入者に配信するために発行者からコマンドを受け取る状態にある。加入者がオンラインに戻ったときには、「最後に加入者がオンラインになってから」というメッセージが表示され、あなたがまだ配信保持ウィンドウ内にいると仮定すると、配信者が配信します。 –

+0

私が持っているもう1つのヒントは、サブスクライバがオフラインになっていて捕らえられるまで、ポストトレーサトークンを定期的に(SQLエージェントジョブを通じて15分ごとに)送信します。これにより、配信の待ち時間を監視し、必要に応じて配信の保持を増やすことができます。 –

関連する問題