マージ レプリケーションのバックアップと復元の方式
マージ レプリケーションでは、次のデータベースを定期的にバックアップします。
- パブリッシャーにあるパブリケーション データベース
- ディストリビューターにあるディストリビューション データベース
- 各サブスクライバーにあるサブスクリプション データベース
- パブリッシャー、ディストリビューター、およびすべてのサブスクライバーにある master および msdb システム データベース。 これらのデータベースは、相互に関連するレプリケーション データベースとして、同時にバックアップする必要があります。 たとえば、パブリッシャーでパブリケーション データベースをバックアップするときに、 master および msdb データベースも同時にバックアップします。 パブリケーション データベースを復元するときは、 master および msdb データベースのレプリケーションの構成と設定が、パブリケーション データベースと一致していることを確認します。
定期的なログ バックアップを実行する場合は、レプリケーション関連の変更をログ バックアップでキャプチャする必要があります。 ログ バックアップを実行しない場合は、レプリケーションに関連する設定を変更するたびに、バックアップを実行する必要があります。 詳細については、「 Common Actions Requiring an Updated Backup」を参照してください。
以下で詳しく説明するパブリケーション データベースのバックアップと復元の方法のいずれかを選択し、ディストリビューション データベースとサブスクリプション データベースに対する推奨事項に従ってください。
パブリケーション データベースのバックアップと復元
マージ パブリケーション データベースの復元方法は 2 とおりあります。 バックアップからパブリケーション データベースを復元した後に、次のいずれかを実行する必要があります。
パブリケーション データベースとサブスクリプション データベースを同期する。
パブリケーション データベースにあるパブリケーションへのすべてのサブスクリプションを再初期化する。
これらのいずれかの方法を使用すると、復元の実行後にパブリッシャーとすべてのサブスクライバーが同期されます。
注意
ID 列を含むテーブルを使用している場合は、復元後、正しい ID 範囲を割り当てる必要があります。 詳細については、「Replicate Identity Columns」 (ID 列のレプリケート) を参照してください。
パブリケーション データベースの同期
パブリケーション データベースとサブスクリプション データベースを同期すると、パブリケーション データベースで以前に変更され、復元されたバックアップに表示されていない変更を 1 つ以上のサブスクリプション データベースからアップロードできます。 アップロードできるデータは、パブリケーションのフィルター選択方法によって次のように異なります。
パブリケーションがフィルター選択されていない場合は、最新のサブスクライバーと同期することでパブリケーション データベースを最新の状態に更新できます。
パブリケーションがフィルター選択されている場合は、パブリケーションを最新の状態に更新できない場合があります。 各サブスクリプションが 1 つの地域の顧客データのみを受信できるようにパーティション分割されているテーブルがあるとします。北、東、南、西のいずれかです。 データの各パーティションに 1 つ以上のサブスクライバーがある場合、各パーティションのサブスクライバーと同期することにより、パブリケーション データベースを最新の状態に更新できます。 ただし、たとえば、西パーティションのデータがすべてのサブスクライバーにレプリケートされていない場合は、パブリッシャーでこのデータを最新の状態に更新することはできません。
重要
パブリケーション データベースとサブスクリプション データベースを同期することによって、復元対象のパブリッシュされたテーブルを、バックアップから復元されたパブリッシュされていないテーブルよりも新しい状態にすることができます。
Microsoft SQL Server 2005 より前のバージョンの Microsoft SQL Serverを実行しているサブスクライバーと同期する場合、サブスクリプションは匿名にできません。クライアント サブスクリプションまたはサーバー サブスクリプション (以前のリリースではローカル サブスクリプションとグローバル サブスクリプションと呼ばれます) である必要があります。
サブスクリプションを同期するには、「 Synchronize a Push Subscription 」および「 Synchronize a Pull Subscription」を参照してください。
すべてのサブスクリプションの再初期化
すべてのサブスクリプションを再初期化すると、すべてのサブスクライバーを、復元されたパブリケーション データベースと一貫性のある状態に保つことができます。 特定のパブリケーション データベースのバックアップで再現される、以前の状態にトポロジ全体を戻す場合は、この方法を使用する必要があります。 たとえば、誤って実行したバッチ操作から復旧するメカニズムとして、パブリケーション データベースをより古い時点に復元する場合に、すべてのサブスクリプションを再初期化することができます。
このオプションを選択する場合には、パブリケーション データベースを復元した直後に、再初期化されたサブスクライバーに配信するための新しいスナップショットを生成します。
サブスクリプションを再初期化するには、「 Reinitialize a Subscription」を参照してください。
スナップショットを作成および適用するには、「 Create 」および「 Apply the Initial Snapshot 」および「 Create a Snapshot for a Merge Publication with Parameterized Filters」を参照してください。
ディストリビューション データベースのバックアップと復元
マージ レプリケーションでは、ディストリビューション データベースを定期的にバックアップする必要があります。この場合、使用されるバックアップがディストリビューターを使用するすべてのパブリケーションの最短の保有期間よりも古くない限り、特に注意することなく復元できます。 たとえば、保有期間がそれぞれ 10、20、および 30 日に設定されている 3 つのパブリケーションがある場合は、10 日より長く経過したバックアップはデータベースの復元に使用できません。 マージ レプリケーションでは、ディストリビューション データベースの役割が制限されています。変更の追跡に使用されるすべてのデータは保存されず、トランザクション レプリケーションのような、サブスクリプション データベースの転送先となるマージ レプリケーションの変更の一時的な保存場所も用意されません。
サブスクリプション データベースのバックアップと復元
サブスクリプション データベースを正常に復元するためには、サブスクライバーとパブリッシャーを同期してから、サブスクリプション データベースをバックアップする必要があります。また、サブスクリプション データベースの復元後にも同期を行う必要があります。
サブスクリプション データベースのバックアップの前にパブリッシャーと同期することにより、サブスクライバーをバックアップから復元した場合に、サブスクリプションをパブリケーションの保有期間内の状態に保つことができます。 たとえば、保有期間が 10 日間に設定されているパブリケーションがあるとします。 最後の同期が 8 日前で、現在バックアップが実行されています。 4 日後にバックアップが復元されると、最後の同期は 12 日前に行われたことになり、保有期間は過ぎてしまいます。 この場合は、サブスクライバーを再初期化する必要があります。 バックアップの前にサブスクライバーを同期しておくと、サブスクリプション データベースを保有期間内の状態に保つことができます。
サブスクライバーがサブスクライブするすべてのパブリケーションの最短の保有期間よりも古いバックアップは使用できません。 たとえば、保有期間がそれぞれ 10、20、および 30 日に設定されている 3 つのパブリケーションをサブスクライバーがサブスクライブする場合、10 日より長く経過したバックアップはデータベースの復元に使用できません。
復元後にサブスクリプション データベースとそれぞれのパブリケーションを同期すると、パブリッシャーのすべての変更を含む最新の状態にサブスクライバーを保つことができます。
パブリケーションの保有期間を設定する場合は、「サブスクリプションの有効期限の設定」を参照してください。
サブスクリプションを同期するには、「 Synchronize a Push Subscription 」および「 Synchronize a Pull Subscription」を参照してください。
再パブリッシュ データベースのバックアップと復元
あるデータベースがパブリッシャーからのデータをサブスクライブしてから、同じデータを別のサブスクリプション データベースにパブリッシュするとき、このデータベースのことを再パブリッシュ データベースと言います。 再パブリッシュ データベースを復元する場合は、このトピックの「パブリケーション データベースのバックアップと復元」および「サブスクリプション データベースのバックアップと復元」で説明されているガイドラインに従ってください。