MS SQL Server レプリケーションの設定方法

Microsoft SQL Server は、Windows Server オペレーティングシステムにインストール可能なデータベース管理ソフトウェアです。データベースはあらゆる業界の企業で利用されており、多くのソフトウェアソリューションでは、集中型および分散型のデータベースが活用されています。データベースの可用性とデータの整合性はビジネスにおいて極めて重要であるため、データベースのバックアップとレプリケーションは不可欠です。

SQL Server のレプリケーションの種類、SQL Server におけるレプリケーションの仕組み、および SQL Server レプリケーションの実行方法について学びましょう。

NAKIVO for Windows バックアップ

NAKIVO for Windows バックアップ

Windowsサーバーおよびワークステーションのデータを、オンプレミス、オフサイト、クラウドへ高速にバックアップします。マシン全体やオブジェクトを数分で復旧できるため、RTOを短縮し、稼働時間を最大化します。

SQL Serverのレプリケーションとは何ですか?

MS SQL Serverのレプリケーションとは、特定のデータベースオブジェクトを含め、あるデータベースから別のデータベースへデータをコピーし、ソースデータベースとターゲットデータベース間でこのデータの同期化されたコピーを維持するプロセスです。SQL Serverのレプリケーションを使用すると、プライマリデータベースと完全に同一のコピーを作成し、データの整合性と完全性を維持しながら、2つのデータベース間の変更を同期させることができます。

MS SQL Serverのレプリケーションで使用される用語

MS SQL Serverのレプリケーションの設定方法について詳しく説明する前に、まずは主な用語とレプリケーションモデルについて簡単に確認しておきましょう。

Articles テーブル、プロシージャ、関数、ビューなど、複製対象となる基本単位です。フィルターを使用することで、記事を垂直方向または水平方向に拡張できます。同じオブジェクトに対して複数の記事を作成することができます。

A publication これは、論理的にまとまった一連の記事です。これは、レプリケーションの対象として指定されたデータベースからの最終的なエンティティのセットです。

A filter これは、記事に対する一連の条件です。MS SQL Serverのレプリケーションでは、フィルターを使用してレプリケーション対象となるエンティティをカスタマイズすることができ、その結果、トラフィックや冗長性を低減し、データベースレプリカに保存されるデータ量を削減できます。たとえば、フィルターを使用して最も重要なテーブルやフィールドのみを選択し、そのデータのみをレプリケートすることができます。

Agents これらは、リレーショナルデータベース管理システムのバックグラウンドサービスとして機能するMS SQL Serverのコンポーネントであり、MS SQLデータベースのバックアップやレプリケーションなどのジョブの自動実行をスケジュールするために使用されます。エージェントには、スナップショット・エージェント、ログ・リーダー・エージェント、ディストリビューション・エージェント、マージ・エージェント、キュー・リーダー・エージェントの5種類があります。

Metadata これは、データベース内のエンティティを記述するために使用されるデータです。MS SQL Server インスタンス、データベース インスタンス、およびデータベース エンティティに関する情報を取得できる、豊富な組み込みのメタデータ関数が用意されています。

SQL Database レプリケーションにおける役割

MS SQLデータベースのレプリケーションには、主に3つの役割があります。それは、ディストリビューター、パブリッシャー、およびサブスクライバーです。

  • A Distributor これは、パブリケーションからトランザクションを収集し、それらをサブスクライバーに配信するように構成されたMS SQLデータベースインスタンスです。ディストリビューターは、レプリケートされたトランザクションを格納するためのデータベースとして機能します。

    ディストリビューター・データベースは、パブリッシャーとディストリビューターの両方の役割を兼ねるものと見なすことができます。ローカル・ディストリビューター・モデルでは、単一の Microsoft SQL Server インスタンスがパブリッシャーとディストリビューターの両方を実行します。リモート・ディストリビューター・モデルは、サブスクライバーが単一の Microsoft SQL Server インスタンスを使用して異なるパブリケーションを取得するように構成したい場合(集中型ディストリビューション)に使用できます。このモデルでは、パブリッシャーとディストリビューターは別々のサーバー上で実行されます。

  • A Publisher これは、パブリケーションが構成されているメインのデータベースのコピーであり、レプリケーションプロセスで使用されるように構成された他のMS SQLサーバーに対してデータを提供します。パブリッシャーは、複数のパブリケーションを持つことができます。
  • A Subscriber これは、パブリケーションからレプリケートされたデータを受信するデータベースです。1つのサブスクライバーが、複数のパブリッシャーやパブリケーションからデータを受信することができます。サブスクライバーが1つの場合は、シングルサブスクライバーモデルが使用されます。1つのパブリケーションに複数のサブスクライバーが接続されている場合は、マルチサブスクライバーモデルが使用されます。

    Subscription これは、購読者に配信されるべき出版物のコピーを請求するものです。サブスクリプションは、受信すべき出版物のデータ、およびそのデータがどこでいつ受信されるかを定義するために使用されます。サブスクリプションには2つの種類があります:

    • Push subscription: 変更されたデータは、ディストリビューターからサブスクライバーのデータベースへ強制的に送信されます。サブスクライバーからのリクエストは不要です。
    • Pull subscription: パブリッシャー側で変更されたデータが、サブスクライバーから要求されます。エージェントはサブスクライバー側で実行されます。

    サブスクリプション・データベースとは、MS SQLレプリケーション・モデルにおけるターゲット・データベースのことです。

    MS SQL Server replication scheme

その 複数の発行者-複数の購読者 このモデルでは、パブリッシャーがMS SQLサーバーの1台でサブスクライバーとして機能することができます。このMS SQL Serverレプリケーションモデルを使用する際は、更新の競合が発生しないよう十分注意してください。

MS SQL Server のレプリケーションの種類

MS SQL Serverのレプリケーションは、データベース間でデータを継続的または定期的に、スケジュールに従ってコピーおよび同期させるための技術です。レプリケーションの方向性については、MS SQL Serverのレプリケーションには、一方向、一対多、双方向、および多対一の形式があります。MS SQL Serverのレプリケーションには、スナップショット・レプリケーション、トランザクション・レプリケーション、ピア・ツー・ピア・レプリケーション、マージ・レプリケーションの4つの種類があります。

スナップショットレプリケーション

Snapshot replication データベースのスナップショットが作成された時点のデータをそのまま複製するために使用されます。このタイプのレプリケーションは、データの変更頻度が低い場合、マスターデータベースよりも古いレプリカが存在しても問題にならない場合、または短期間に大量の変更が行われる場合に適しています。 スナップショットレプリケーションでは変更追跡は使用されません。

たとえば、為替レートや価格表が1日1回更新され、メインサーバーから支店のサーバーへ配布する必要がある場合などに、スナップショットレプリケーションを使用できます。

How snapshot replication works

トランザクションレプリケーション

Transactional replication これは、マスターデータベースからデータベースのレプリカへ、データをリアルタイム(またはニアリアルタイム)で配信する、定期的な自動レプリケーションです。 トランザクションレプリケーションは、スナップショットレプリケーションよりも複雑です。実行されたすべてのトランザクションとデータベースの最終状態がレプリケートされるため、レプリカ上でトランザクション履歴全体を監視することが可能になります。

トランザクションレプリケーションのプロセス開始時には、サブスクライバーにスナップショットが適用され、その後、データに変更が加えられるたびに、マスターデータベースからデータベースレプリカへデータが継続的に転送されます。トランザクションレプリケーションは、一方向レプリケーションとして広く利用されています。

How transactional replication works

トランザクションレプリケーションのユースケース:

  • メインのデータベースサーバーに障害が発生した場合にフェイルオーバーに使用するための、データベースレプリカを備えたデータベースサーバーを作成する。
  • 各支店に複数のパブリッシャーを配置し、本社に1つのサブスクライバーを設置して、支店で行われた業務に関するレポートを受信する。
  • 変更が発生した直後にレプリケーションを行う。
  • ソースデータベースのデータは頻繁に変更されます。

ピアツーピア複製

Peer-to-peer replication は、データベースのデータを複数のサブスクライバーに同時に複製するために使用されます。このMS SQL Serverのレプリケーション方式は、データベースサーバーが世界中に分散している場合に利用できます。変更はどのデータベースサーバーで行ってもよく、その変更はすべてのデータベースサーバーに反映されます。ピアツーピア・レプリケーションは、データベースを利用するアプリケーションのスケールアウトに役立ちます。その主な動作原理は、トランザクション・レプリケーションに基づいています。

Peer-to-peer replication

以下では、世界中に分散しているデータベースサーバー間で、MS SQL Serverのピアツーピアレプリケーションをどのように活用できるかをご紹介します。

Peer-to-peer replication in a distributed environment

マージレプリケーション

Merge replication これは、データベースサーバー間で継続的な接続が確立できない場合に、サーバーとクライアントの環境においてデータを同期させるために通常使用される双方向レプリケーションの一種です。両方のデータベースサーバー間でネットワーク接続が確立されると、マージレプリケーションエージェントは両方のデータベースで行われた変更を検出し、データベースを修正して状態を同期・更新します。マージレプリケーションはトランザクションレプリケーションと似ていますが、データはパブリッシャーからサブスクライバーへ、そしてその逆の方向にもレプリケートされます。

Merge replication

この種のデータベースレプリケーションは、MS SQL Serverのレプリケーション方式の中で最も複雑であり、ほとんど使用されません。 例えば、マージレプリケーションは、共有倉庫と連携する複数のピアストアで使用できます。各ストアは倉庫データベース内の情報を変更することが許可されていますが、同時に、倉庫への商品出荷や資材の納入後には、すべてのストアがデータベースの最新の状態を保持している必要があります。マージレプリケーションは、更新された情報をメイン(または中央)データベースと支店データベースの両方で同時に利用可能にする必要がある場合に使用できます。

MS SQL Server レプリケーションの要件

インバウンドトラフィックを受け入れるには、以下のポートを開く必要があります:

  • TCP 1433、1434、2383、2382、135、80、443
  • UDP 1434

MS SQL Server をインストールする前に、各ホストで Windows ファイアウォールを設定し、着信トラフィック用に適切なポートを有効にしてください。MS SQL レプリケーションに参加するホストは、ホスト名を使用して相互に解決できる必要があります。

MS SQL Server レプリケーションを設定する前に、MS SQL Server 用に以下のソフトウェアをインストールする必要があります:

  • .NET Framework – 一連のライブラリ
  • MS SQL Server – データベースサーバーソフトウェア
  • MS SQL Server Management Studio (SSMS) – GUI(グラフィカル・ユーザー・インターフェース)を備えた、MS SQLデータベースを管理するためのソフトウェア。

注: この記事では、設定にMS SQL Server 2016を使用しています。同じ原理を用いて、より新しいバージョンのSQL Serverでもレプリケーションを設定することができます。

ソースデータベースが配置されている最初のマシンに MS SQL Server 2016 をインストールする場合、データベースが正常に機能するためには、2 台目のマシンにも MS SQL Server 2016 をインストールする必要がある点に注意してください。

たとえば、MS SQL トランザクションレプリケーションを設定する場合、パブリッシャーが構成されているソースデータベースサーバーから 2 バージョン以内のバージョンの 2 台目のデータベースサーバー(サブスクライバーが構成されている場所)を使用できます。 MS SQL Server上のパブリッシャーのバージョンが2016の場合、ディストリビューターは2016、2017、2019、および2022のバージョンで構成でき、サブスクライバーはMS SQL Server 2012、2014、2016、2017、および2019で構成できます。 ディストリビューターのバージョンは、パブリッシャーのバージョンより低いことはできません。たとえば、2台目のマシンにMS SQL Server 2008をインストールした場合、レプリケーションは機能しません。

MS SQLデータベースのレプリケーションに関する基本的な推奨事項

MS SQL Server の環境設定を行う前に、以下の点を考慮してください:

  • IDフィールドとトリガーには制限があります。
  • パブリケーションには、主キーを持つテーブルのみを含めることができます。
  • 大規模なデータベースでは、大量のコンピューティングリソースを消費することを避けるため、スナップショットの作成スケジュール機能を使用しないことをお勧めします。
  • サブスクライバー上に存在するデータベースレプリカのデータを変更する際は注意が必要です。データを変更するトランザクションが送信される際に、そのデータが編集または削除されていると、問題が解決されるまでレプリケーションが停止する可能性があります。

環境の設定

MS SQLのレプリケーションを初めて設定する際は、まずテスト環境で行うことをお勧めします。例えば、仮想マシン上で動作するSQL Serverでレプリケーションを設定します。このチュートリアルでは、Windows Server 2016とMS SQL Server 2016を実行している2台のホストを使用して、MS SQL Serverのレプリケーションについて解説します。

このブログ記事の作成に使用したテスト環境の構成を確認し、MS SQL Serverのレプリケーション設定についてより深く理解しましょう。

Host 1

  • IPアドレス:192.168.101.101
  • ホスト名: MSSQL01
  • MS SQL Server インスタンス ID: MSSQLSERVER1

Host 2

  • IPアドレス:192.168.101.102
  • ホスト名: MSSQL02
  • MS SQL Server インスタンス ID: MSSQLSERVER2

両方のマシンには、ディスク構成としてディスク C: とディスク D: があります。

MS SQL Server のレプリケーション設定を練習する際は、インストール中に Windows ファイアウォールを一時的に無効にすることができます。

このチュートリアルは MS SQL Server のレプリケーション設定に焦点を当てているため、本ブログ記事では MS SQL Server のインストール方法については詳しく説明しません。この例では、両方の MS SQL Server は PolyBase なしでインストールされています。

MS SQL Server のインストールが完了したら、MS SQL Server のレプリケーションに必要な機能がインストールされていることを確認してください。 なお、SQL Server レプリケーションや R-Services などのデータベースエンジンサービスは、MS SQL Server のインストール時に選択する必要があります。この例では、デフォルトのインストールパス(C:Program FilesMicrosoft SQL Server)を使用しています。

The components that must be installed with SQL Server

その他の設定:

  • 混合認証モード(Windows 認証と MS SQL Server 認証)
  • データのルートディレクトリ:D:MSSQL_Server
  • システムデータベースのディレクトリ:D:MSSQL_ServerMSSQL13.MSSQLSERVER1MSSQLData
  • ユーザーデータベースのディレクトリ:D:MSSQL_ServerMSSQL13.MSSQLSERVER1MSSQLData
  • ユーザーデータベースのログディレクトリ:D:MSSQL_ServerMSSQL13.MSSQLSERVER1MSSQLData
  • バックアップディレクトリ:D:MSSQL_ServerMSSQL13.MSSQLSERVER1MSSQLBackup

各マシンにMS SQL Server 2016とSQL Server Management Studioをインストールしたら、データベースのレプリケーションに向けてMS SQL Serverの準備を行うことができます。

MS SQL Server レプリケーションの準備

データベースのレプリケーションを開始するには、事前にサーバーの設定を行う必要があります。この例では、MS SQL Serverのレプリケーション・エージェント用に1つのWindowsアカウントを使用します。

  1. 作成する mssql 両方のサーバーでユーザーを作成し、同じパスワードを設定します。
  2. その mssql この例では、ユーザーは以下のグループのメンバーです:
    • 管理者(ローカル マシンのローカル管理者。ドメイン管理者は除く)
    • SQLユーザーグループMSSQLSERVER1
    • SQLServer2005SQLBrowserUser$MSSQL01
  3. [編集]ボタンを押すと、ユーザーやグループを編集できます Win+R、開幕 CMD、そして lusrmgr.msc コマンド。

この例で使用している 2 台の Windows Server マシンは、Active Directory に所属していません。Active Directory を使用している場合は、 mssql ドメイン コントローラー上のユーザー。

MS SQL Serverへの接続

  1. SQL Server Management Studio を起動します。
  2. ログイン(スクリーンショット参照) sa SQL Server 認証を使用することで。
    • MSSQL01MSSQLSERVER1 は、最初のサーバーのホスト名および MS SQL インスタンス名です。
    • MSSQL02MSSQLSERVER2 は、2台目のサーバーのホスト名およびMS SQLインスタンス名です。

    Log into MS SQL Server instance by using SQL Server authentication

同様に、2台目のサーバー(MSSQL02)から、2つ目のMS SQL Serverインスタンス(MSSQLSERVER2)に接続することもできます。 また、SQL Server Management Studioで認証情報を入力することで、最初のMS SQL Server(MSSQL01)から2番目のMS SQL Serverインスタンス(MSSQLSERVER2)に接続することもできます。1つのSQL Server Management Studioインスタンスで、両方のMS SQL Serverインスタンス(MSSQL01およびMSSQL02)に接続できます。

これを行うには、オブジェクトエクスプローラーで、[ Connect > Database engineこのチュートリアルでは、SQL Server Management Studio を使用して、MSSQL01 から MSSQLSERVER1 に、また MSSQL02 から MSSQLSERVER2 に接続し、MS SQL サーバーの設定を行います。

エージェントの起動

MS SQL Server インスタンスにログインすると、エージェントが実行されていないことがわかります。デフォルトでは、SQL Server エージェントは自動的に開始されません。このサービスを手動で開始することもできますが、Windows の起動後に自動的に開始されるように設定することをお勧めします。

Starting SQL Server agent

エージェント・サービスを自動起動するように設定するには:

  1. 報道 Win+R、実行 cmd, そして、 services.msc コマンド。
  2. SQL Server Agent サービスのプロパティを開き、S を設定しますスタートアップの種類を Automatic.

    SQL Server Agent is running and starts automatically after Windows boot

MS SQL Server のユーザー設定

SQL Server Management StudioでMSSQLSERVER1インスタンスに接続した後、ユーザーの設定を行う必要があります:

  1. 移動 Object Explorer そして開く Security > Logins.
  2. 右クリック Logins そして選択してください New Login. 選択 Windows authentication.
  3. ログイン名を入力してください MSSQL ~の中で 概要 セクション。
  4. クリック Search、その後、 Check names 確認して、クリックしてください OK 設定を保存するには、2回クリックしてください。

    Configuring users and permissions

  5. さて、 MSSQL01mssql Windowsユーザーが、データベースにログインできるユーザーのリストに追加されます(同様に、 mssql ユーザーに ログイン (2台目のマシン"MSSQL02"上のSQL Server Management Studioで)。
  6. ""を追加する mssql ユーザーを sysadmins のサーバーロール セキュリティ SQL Server Management Studio でのデータベースの設定。
  7. 移動 MSSQL01MSSQLSERVER1 > Server roles、右クリック sysadmin、そして開く Properties.
  8. その 会員 ページで、[クリック] Add、ユーザー名を入力してください mssql, をクリックして Check names.
  9. ユーザー名のチェックボックスを選択してください MSSQL01mssql をクリックして OK.

    Adding a user to server roles on MS SQL Server

  10. 2台目のマシン(この場合はMSSQL02)でも同じ設定を行ってください。
  11. 両方のマシンを再起動してください。

    これで、両方のサーバーで Windows 認証を使用してログインできるようになりました。

    Log in to MS SQL Server instance by using Windows authentication

バックアップからデータベースをインポートする

バックアップからサンプルデータベースをインポートし、そのデータベースを1台目のマシンから2台目のマシンへレプリケートしてみましょう。 AdventureWorks 2016 この例では、このデータベースがサンプルデータベースとして使用されています。

  1. をコピーして AdventureWorks2016.bak データベースのバックアップファイルをMSSQLのバックアップディレクトリに保存します。今回のケースでは、第1サーバー上のこのディレクトリは D:MSSQL_ServerMSSQL13.MSSQLSERVER1MSSQLBackup です。
  2. サンプルデータベースをインポートします。最初のマシンで SQL Server Management Studio を起動し、[ MSSQL01MSSQLSERVER1、右クリック Databases, そして選択してください Restore Database コンテキストメニューで。

    Restoring a sample database to reveal MS SQL Server replication configuration

  3. その データベースを復元する ウィンドウで、必要なパラメータを選択してください:
    • ソース: Device.
    • をクリックして three dots データベースのバックアップファイルを閲覧するには。
      • その バックアップデバイスを選択 ウィンドウで、バックアップメディアの種類を選択してください: file.
      • クリック Add.
    • 必要なものを選択してください .bak ファイル – D:MSSQL_ServerMSSQL13.MSSQLSERVER1MSSQLBackupAdventureWorks2016.bak
    • ヒット OK、そして OK またしても。
  4. その AdventureWorks 2016 データベースの復元が正常に完了しました。

    Restoring a sample database in MS SQL Server

データベースのレプリカが実行される2台目のマシン上のバックアップから、データベースをインポートすることができます。この方法では、空のデータベースにデータベースデータ全体をコピーすることなく、バックアップ作成以降の変更内容をコピーすることからレプリケーションが開始されるため、ネットワークトラフィックを削減できます。

2台目のサーバー上のバックアップからデータベースを復元し、データベースの名前を AdventureWorks 2016ここで、"r"は"レプリカ"を意味します。

最終的に、次のようになります:

ホスト名:MSSQLインスタンス名 データベース名
MSSQL01MSSQLSERVER1 AdventureWorks 2016
MSSQL02MSSQLSERVER2 AdventureWorks 2016

データベースをインポートした後、MS SQLサーバーの準備を整えるために、いくつかのチューニングを行う必要があります

  1. ~について MSSQL01 マシン、[ここ](https://example.com) へ移動 MSSQL01MSSQLSERVER1 > Security > Logins、選択 MSSQL01mssql. 右クリック(またはダブルクリック) mssql ユーザーを選択 Properties.
  2. サーバーの役割、の横にあるチェックボックスを選択し、 dbcreator 役割。

    Enabling the dbcreator role for mssql user

  3. ~について ユーザーマッピング ページで、このログインに紐付けられているユーザーを選択し、 AdventureWorks2016 データベースのチェックボックス(選択) AdventureWorks 2016 (2台目のサーバーでも同様に)。
  4. その データベース・ロールのメンバーシップ セクションで、[チェック] を入れてください db_owner チェックボックス。

    Configuring user mapping on MS SQL Server

  5. クリック OK 設定を保存するには。

MSSQL02 マシンでも同様の設定を行ってください。その後、データベースのレプリケーションに必要な MS SQL Server コンポーネントの設定を行うことができます。

データベースのレプリケーションの設定

グラフィカルモードでのレプリケーション設定は、最も便利な方法です。次の設定は、SQL Server Management Studio で行います。 この例では、最もよく使用されるMS SQL Serverのレプリケーションタイプの一つであるトランザクション・データベース・レプリケーションについて説明します。

以下のスクリーンショットは、SQL Server Management Studioにおけるメインのデータベースサーバー(MSSQL01MSSQLSERVER1)のビューと、セカンダリサーバー(MSSQL02MSSQLSERVER2)のビューを示しています。

The view of two MS SQL Server instances in MS SQL Server Management Studio

配布の設定

ディストリビューションは、複数のパブリッシャーやサブスクライバーで利用できます。この例では、ソースデータベースが格納されているメインサーバーでディストリビューションが構成されています。メインサーバー(MSSQL01MSSQLSERVER1)上で、右クリックして Replication そして、コンテキストメニューから、[選択] を選択します Configure Distribution.

Configuring Distribution

その 配布設定ウィザード 開きます。

  1. Distributor. この例では、メインサーバー(MSSQL01MSSQLSERVER1)上で実行中の現在のデータベースインスタンスをディストリビューターとして選択します。[クリック] Next ウィザードの次の手順に進むたびに。
  2. SQL Server Agent Start. 上記の手順に従ってMS SQL Server Agentを自動起動するように設定していない場合、次のメッセージが表示されます。[選択] Yes, configure the SQL Server Agent service to start automatically.

    Configuring the Distributor and MS SQL Server Agent service startup options

  3. Snapshot Folder. ここではデフォルトのパスをそのまま使用できます。レプリケーションの初期化にはスナップショットが必要です。スナップショットディレクトリが配置されているディスクに十分な空き容量があることを確認してください。空き容量は、少なくともレプリケートされるデータベースのサイズと同等以上である必要があります。
  4. Distribution Database. ディストリビューション・データベース名を入力してください。デフォルト名をそのまま使用することもできます(流通) および配布用データベースファイルとログファイル用のフォルダ。

    Configuring snapshot folder and distribution database folders

  5. Publishers. ディストリビューターにアクセスできるMS SQL Serverレプリケーションのパブリッシャーを定義します。プライマリMS SQL Serverインスタンス(レプリケートされるソースデータベースをホストしているインスタンス)上で、ディストリビューションデータベース名の横にあるチェックボックスを選択します。この例では、インスタンス名はMSSQL01MSSQLSERVER1、ディストリビューションデータベース名は 流通.
  6. Wizard Actions. 選択 Configure distribution ウィザードの最終ステップで配布設定を行います。この例では、後で実行するためのスクリプトファイルは生成しません。

    Selecting the Publisher and the distribution database

  7. Complete the Wizard. "配布設定の概要"を確認し、[クリック] してください Finish ディストリビューターを作成する。

    Finishing configuring distribution

  8. その 成功 ディストリビューターの作成と設定が正常に完了していれば、ステータスが表示されるはずです。

    Configuring the Distributor

SQL Server Agent を自動起動するように設定する際にエラーが発生した場合は、サービスの設定を開き、SQL Server Agent の起動モードを確認してください(設定方法については、このブログ記事の上記"Agent の起動設定"を参照してください)。

また、SQL Server Management Studio で SQL Server Agent のプロパティを開き、サービスの状態や再起動オプションを確認することもできます。右クリックして SQL Server Agent リストの最後にある オブジェクト エクスプローラー そしてクリック Properties エージェントのプロパティを表示または編集するには。

Checking MS SQL Server Agent startup options

パブリッシャーの設定

配布の設定が完了したら、パブリッシャーの設定を行うことができます。パブリッシャーは、レプリケート対象のマスターデータベースが格納されているメインサーバー(MSSQL01MSSQLSERVER1)上で設定する必要があります。選択してください Replication、右クリック Local Publications そして、コンテキストメニューから、[ New Publication.

Creating a new publication

その 新しい出版ウィザード 開きます。

  1. Publication Database. レプリケートしたいデータベースを選択します(AdventureWorks 2016 (この場合)。クリック Next ウィザードの各ステップで、次へ進むには

    Selecting a publication database

  2. Publication Typeこの手順では、データベースに対してMS SQL Serverのレプリケーションの種類を選択できます。ここでは、広く利用されているレプリケーションの種類である"トランザクション・パブリケーション"を選択してみましょう。
  3. Articles. 記事として公開するテーブル、プロシージャ、ビュー、インデックス付きビュー、ユーザー定義関数など、必要なオブジェクトを選択します。必要に応じて、テーブル内のカスタムフィールドのレプリケーションを選択したり、記事のプロパティを設定したりすることも可能です。この例では、いくつかのテーブルが選択されています。

    Selecting the transactional publication type and articles

  4. Filter Table Rowsこの例ではフィルタは追加されていません(これがフィルタのデフォルト設定です)。必要に応じてフィルタを追加することができます。
  5. Snapshot Agent. スナップショット・エージェントの実行タイミングを指定します。エージェントをすぐに実行するように設定しましょう。選択してください Create a snapshot immediately and keep the snapshot available to initialize subscriptions.

    Filter options and Snapshot Agent options

  6. Agent Security. 選択 Use the security settings from the Snapshot Agentをクリックしてください Security Settings ボタンをクリックして、エージェントを実行するアカウントを選択します。

    その スナップショット・エージェントのセキュリティ 表示されるウィンドウに、の認証情報を入力してください mssql 以前に作成したWindowsユーザーです。"パブリッシャーに接続"を選択してください By impersonating the process account"OK"をクリックして設定を保存し、ウィザードに戻ります。

    Configuring agent security options

    必要なユーザーを定義すると、そのユーザーを スナップショット・エージェント そして ログリーダーエージェント セクション。

    Agent security options are configured

  7. Wizard Actions. ウィザードの最終ステップで、上部のチェックボックスを選択してパブリケーションを作成します。
  8. Complete the Wizard. 公開設定を確認し、[クリック] してください Finish 新しい出版物を作成する。

    Selecting wizard actions and completing the wizard

その 出版物の作成 ウィンドウでは、新しいパブリケーションの作成進捗状況を確認できます。しばらく待つと、すべてが正しく行われていれば、成功ステータスが表示されるはずです。

Creating the publication

パブリケーションが作成されました。次の手順で"オブジェクト エクスプローラー"に表示されます。 Replication > Local Publications.

The publication is created

サブスクライバーの設定

ご存じのとおり、MS SQL Serverのレプリケーションには、プル型とプッシュ型の2種類があります。プッシュ型レプリケーションを設定する場合は、サブスクライバーがメインのデータベースサーバー(この場合はMSSQL01)上でエージェントを実行するように設定する必要があります。プル型レプリケーションを設定する場合は、サブスクライバーが2台目のマシン(MSSQL02)、つまりデータベースのレプリカが作成されるマシン上でエージェントを実行するように設定する必要があります。

プッシュレプリケーションを設定し、マスターデータベースが存在する最初のMS SQL Server(MSSQL01MSSQLSERVER1)で新しいサブスクリプションを作成しましょう。

オブジェクトエクスプローラーで、[ Replication、右クリック Local Subscriptions そして、コンテキストメニューから、[選択] を選択します New Subscriptions.

Creating a new subscription

その 新しいサブスクリプションウィザード 開きます。

  1. Publication. 新規サブスクリプションを作成するパブリケーションを選択します。この例では、パブリッシャーの名前は MSSQL01MSSQLSERVER1 で、パブリケーション名(先に作成されたもの)は AdvWorks_Pub. クリック 次へ ウィザードの各ステップで、続行するには
  2. Distribution Agent Location. プッシュ・サブスクリプションまたはプル・サブスクリプションのいずれかを選択して、レプリケーションの種類を指定します。この例では、すべてのエージェントをソースサーバー側で実行したいので、最初のオプションを選択してプッシュ・サブスクリプションを作成します。これにより、MS SQL Serverのレプリケーションを一元的に管理できるようになります。

    Selecting the publisher and distribution agent location

  3. Subscribers. デフォルトでは、ウィザードを実行しているサーバー(この場合は MSSQL01MSSQLSERVER1)がサブスクライバーとして表示され、サブスクリプション データベースは定義されていません。新しいサブスクライバーを追加し、2 台目のデータベース サーバー(MSSQL01MSSQLSERVER2)にあるサブスクリプション データベースを選択しましょう。[クリック] Add Subscriber そして、コンテキストメニューから、[選択] を選択します Add SQL Server Subscriber.
    • ポップアップウィンドウで、2つ目のMSSQL Serverインスタンス(この例ではMSSQL01MSSQLSERVER2)の認証情報を入力し、[クリック]します Connect.

      Adding MS SQL Server subscriber

    • データベースのレプリカを保存する2台目のサーバー(MSSQL02MSSQLSERVER2)のチェックボックスを選択し、 定期購読データベース ドロップダウンメニューから、データベースレプリカとして使用する新しいデータベース、またはバックアップから復元した既存のデータベースを選択します。

      この例では、 AdventureWorks 2016 メイン(ソース)を復元することで、2台目のサーバー上に作成されました AdventureWorks 2016 バックアップからデータベースを復元してレプリケーションを開始します。レプリケーションは、レプリケーションプロセスの開始後にデータベース全体をコピーするのではなく、新しいデータのみを複製することで開始されます。したがって、 AdventureWorks 2016 この例では、サブスクリプション・データベースとして選択されています。

      Selecting a subscriber and a subscription database

  4. Distribution Agent Security. 三つの点があるボタンをクリックしてください()、そしてディストリビューション・エージェントのユーザーおよびその他のセキュリティ設定を選択します。

    その 販売代理店のセキュリティ 表示されるウィンドウで、ディストリビューション・エージェントが MSSQL01 以下のホスト mssql ユーザーアカウント。のパスワードを入力してください。 mssql Windowsユーザー。選択 Connect to the Distributor by impersonating the process account そして選択してください Connect to the Subscriber by impersonating the process account. ヒット 了解 設定を保存するには。

    Distribution Agent security settings

    これで、サブスクリプションのプロパティの設定が完了しました。

    Distribution Agent security settings are configured

  5. Synchronization Scheduleディストリビュータ上に配置されているエージェントを選択して 連続運転 現在の加入者について。
  6. Initialize Subscriptions. を選択してください Initialize チェックボックスをオンにし、ドロップダウンメニューから選択してください Immediately サブスクリプションを初期化するタイミングについて。また、 メモリ最適化 必要に応じてこのオプションを選択してください。

    Synchronization schedule options and initialize subscription options

  7. Wizard Actions. ウィザードの最後にサブスクリプションを作成するには、上のチェックボックスを選択してください。
  8. Complete the Wizard. 購読設定を確認し、[クリック] してください Finish サブスクリプションを作成するには。

    Selecting subscription wizard actions and completing the wizard

  9. サブスクリプションが作成されるまでお待ちください。もし 成功 ステータスがこの状態であれば、サブスクリプションが正常に作成されたことを意味します。

    The progress of creating subscriptions and the action status

  10. SQL Server でレプリケーションを設定すると、オブジェクト エクスプローラーに 3 つのジョブが表示されます。これらは、次の場所から確認できます。 SQL Server Agent > Jobs.

    MS SQL Server Agent jobs are created for MS SQL Server replication

レプリケーション設定の確定

ディストリビューター、パブリッシャー、およびサブスクライバーの設定が完了したら、MS SQL Serverのレプリケーションの状態を確認できます。

  1. 最初のサーバー(MSSQL01MSSQLSERVER1)で、レプリケーション・モニターを起動し、MS SQL Serverのレプリケーションの状態を確認します。SQL Server Management Studioで、MS SQL Serverインスタンス(MSSQLSERVER1)を選択し、[ Replication、右クリック Local Publications そして、コンテキストメニューから、[選択] を選択します Launch Replication Monitor.

    Launching the Replication Monitor to check MS SQL Server replication status

  2. ある ログリーダーエージェント このケースではエラーが発生しました。エラーの詳細を確認するには、左ペインでソースデータベース(パブリッシャー)を選択し、 Agents 右側のペインにあるタブをクリックし、エラー名をダブルクリックします。

    The error status of the Log Reader Agent

  3. 開いたウィンドウには、エージェントの履歴とエラーメッセージが表示されます。エラーメッセージは以下の通りです:
    • MSSQL01MSSQLSERVER1 サーバーで sp_replcmds を実行できませんでした。原因: MSSQL_REPL。エラー番号: MSSQL_REPL20011。
    • データベースのプリンシパルとして実行できません。プリンシパル"dbo"が存在しないか、この種類のプリンシパルを代行できないか、または必要な権限がありません。(ソース: MSSQLServer、エラー番号: 15517)。

    Viewing the Log Reader Agent history to fix errors

    2つ目のエラーメッセージは、何らかの権限が不足していることを示唆しています。このエラーを修正しましょう。

  4. MS SQL Management Studio で新しいクエリを作成し、このクエリを実行します。メインウィンドウで、 New Query ボタン。
  5. メインウィンドウの"SQLクエリ"セクションに、次のクエリを入力してください:

    USE AdventureWorks2016

    GO

    EXEC sp_changedbowner 'sa'

    GO

    をクリックして Execute ボタン。

    Viewing Snapshot Agent Status to run database replication in SQL Server

    コマンドが正常に完了しました。

  6. 次に、次のページへ進んでください MSSQL01MSSQLSERVER1 > Replication > Local Publications > [AdventureWorks2016]: AdvWorks_Pub. パブリケーション名を右クリックし、コンテキストメニューから スナップショット・エージェントのステータスを表示。クリックできます Action > Refresh ステータスを更新し、 Reinitialize All Subscriptions 各サブスクライバーにスナップショットを適用する。

    これで問題はすべて解決し、エラーも表示されなくなりました。MS SQL Serverのレプリケーションは正常に動作するはずです。

    The running status of the subscription

レプリケーションの仕組みを確認する

MS SQL Serverのレプリケーションが実際にどのように動作するか見てみましょう。テーブルの内容を表示して、 AdventureWorks 2016 最初のMS SQLサーバーに保存されているデータベース(MSSQL01MSQLSERVER1)。この例では、 人物.住所の種類 テーブル。これを行うには、次のクエリを実行します:

USE AdventureWorks2016;

GO

SELECT *

FROM Person.AddressType

;

クエリを実行した結果は、以下のスクリーンショットに表示されています:

Viewing the content of the table of the master database

2台目のサーバーでも同様のクエリを実行し、 人物.住所の種類AdventureWorks 2016 MSSQL02MSSQLSERVER2に保存されているデータベース。

USE AdventureWorks2016r;

GO

SELECT *

FROM Person.AddressType

;

上のスクリーンショットと下のスクリーンショットを比較すると、 人物.住所タイプ 両方のデータベース(1台目のサーバー上のソースデータベースと、2台目のサーバー上のデータベースレプリカであるターゲットデータベース)で同一です。

Viewing the content of the table of the second database that will be used as a database replica

の表から1行削除しましょう 人物の住所タイプ 表から AdventureWorks 2016 最初のサーバー(MSSQL01MSSQLSERVER1)上のデータベース(ソース)。次のクエリを実行して、以下の条件に一致する行を削除します。 "請求" その後にテーブルの名前を指定し、その内容を表示するには:

DELETE FROM Person.AddressType WHERE Name='Billing';

SELECT * FROM Person.AddressType;

Deleting the line in the table of the master database

ご覧の通り、最初の行には アドレス種別ID 1 と名前 "請求" はから削除されました 人物.住所の種類 の表 AdventureWorks 2016 データベース上の MSSQL01 マシン。

トランザクションレプリケーションが実行されています。 人物.住所の種類 の表 AdventureWorks 2016 データベース上の MSSQL02 マシン。テーブルの内容を確認するために、上記と同様のクエリをもう一度実行してください:

USE AdventureWorks2016r;

GO

SELECT *

FROM Person.AddressType

;

複製が行われた結果、最初の行も 人物.住所タイプ データベースのレプリカとして機能するセカンダリデータベース内のテーブル(AdventureWorks 2016)。結果は以下のスクリーンショットでご確認いただけます。

The first line is deleted from the table in the database replica

SQL Server のデータベースレプリケーションは正常に動作しています。

結論

MS SQL Serverのレプリケーションには、スナップショット、トランザクション、ピアツーピア、マージの4種類があります。トランザクション・レプリケーションが広く利用されているため、本記事ではこのMS SQL Serverのレプリケーションタイプについて設定方法を解説します。 データベースのレプリケーションを機能させるには、ディストリビューター、パブリッシャー、およびサブスクライバーを設定する必要があります。サブスクライバーは、ソースサーバー(プッシュレプリケーション)およびターゲットサーバー(プルレプリケーション)に設定できます。

ただし、レプリケーションと MS SQLデータベースのバックアップ 成功の可能性を高めるために データベースのデータ復旧.

試してみてください NAKIVO Backup & Replication

試してみてください NAKIVO Backup & Replication

無料トライアルをご利用いただき、本ソリューションのデータ保護機能をすべてお試しください。15日間無料です。機能や容量の制限は一切ありません。クレジットカードも不要です。

People also read