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のレプリケーションの設定方法について詳しく説明する前に、まずは主な用語とレプリケーションモデルについて簡単に確認しておきましょう。
記事 テーブル、プロシージャ、関数、ビューなど、レプリケーションの対象となる基本単位です。フィルターを使用することで、記事の垂直方向または水平方向のスケーリングが可能です。同じオブジェクトに対して複数の記事を作成することができます。
出版物 これは、記事の論理的な集合です。これは、レプリケーションの対象として指定されたデータベースからのエンティティの最終セットです。
フィルター これは、記事に対する一連の条件です。MS SQL Serverのレプリケーションでは、フィルタを使用してレプリケーション対象となるエンティティをカスタマイズすることができ、その結果、トラフィックや冗長性を低減し、データベースレプリカに保存されるデータ量を削減できます。たとえば、フィルタを使用して最も重要なテーブルやフィールドのみを選択し、そのデータのみをレプリケートすることができます。
エージェント これらは、リレーショナルデータベース管理システムのバックグラウンドサービスとして機能するMS SQL Serverのコンポーネントであり、MS SQLデータベースのバックアップやレプリケーションなどのジョブの自動実行をスケジュールするために使用されます。エージェントには、スナップショット・エージェント、ログ・リーダー・エージェント、ディストリビューション・エージェント、マージ・エージェント、キュー・リーダー・エージェントの5種類があります。
メタデータ これは、データベースのエンティティを記述するために使用されるデータです。MS SQL Server インスタンス、データベース インスタンス、およびデータベース エンティティに関する情報を取得できる、幅広い組み込みのメタデータ関数が用意されています。

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

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

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

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

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

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

    • プッシュ通知の購読: 変更されたデータは、ディストリビューターからサブスクライバーのデータベースへ強制的に送信されます。サブスクライバーからのリクエストは必要ありません。
    • 購読の解除: パブリッシャー側で変更されたデータが、サブスクライバーから要求されます。エージェントはサブスクライバー側で実行されます。

    サブスクリプション・データベースとは、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つの種類があります。

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

スナップショットレプリケーション データベースのスナップショットが作成された時点のデータをそのまま複製するために使用されます。この種のレプリケーションは、データの変更頻度が低い場合、マスターデータベースよりも古いレプリカが存在しても重大な問題とならない場合、あるいは短期間に大量の変更が行われる場合に適しています。 スナップショットレプリケーションでは、変更追跡は使用されません。
たとえば、為替レートや価格表が1日1回更新され、メインサーバーから支店のサーバーへ配布する必要がある場合などに、スナップショットレプリケーションを使用できます。
How snapshot replication works

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

トランザクションレプリケーション これは、マスターデータベースからデータベースレプリカへ、データをリアルタイム(またはニアリアルタイム)で配信する、定期的な自動レプリケーションです。 トランザクションレプリケーションは、スナップショットレプリケーションよりも複雑です。実行されたすべてのトランザクションとデータベースの最終状態がレプリケートされるため、レプリカ上でトランザクション履歴全体を監視することが可能になります。
トランザクションレプリケーションプロセスの開始時には、サブスクライバーにスナップショットが適用され、その後、データに変更が加えられるたびに、マスターデータベースからデータベースレプリカへデータが継続的に転送されます。トランザクションレプリケーションは、一方向レプリケーションとして広く利用されています。
How transactional replication works
トランザクションレプリケーションのユースケース:

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

ピア・ツー・ピア複製

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

マージレプリケーション

マージレプリケーション これは、データベースサーバー間で継続的に接続できない場合に、データを同期させるために、通常はサーバーからクライアントへの環境で使用される双方向レプリケーションの一種です。両方のデータベースサーバー間でネットワーク接続が確立されると、マージレプリケーションエージェントは両方のデータベースで行われた変更を検出し、データベースを修正して状態を同期・更新します。マージレプリケーションはトランザクションレプリケーションと似ていますが、データはパブリッシャーからサブスクライバーへ、そしてその逆の方向にもレプリケートされます。
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のレプリケーションの構成についてより深く理解しましょう。
司会者1

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

司会者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 この例では、ユーザーは以下のグループのメンバーです:
    • 管理者(ローカルマシン上のローカル管理者。ドメイン管理者は除く)
    • SQLRUserGroupMSSQLSERVER1
    • 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 は、1台目のサーバーのホスト名および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で認証情報を入力することで、1番目のMS SQL Server(MSSQL01)から2番目のMS SQL Serverインスタンス(MSSQLSERVER2)に接続することもできます。1つのSQL Server Management Studioインスタンスで、両方のMS SQL Serverインスタンス(MSSQL01およびMSSQL02)に接続できます。
これを行うには、オブジェクトエクスプローラーで、[ 接続 > データベースエンジン. このチュートリアルでは、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 を設定します。“スタートアップ”と入力して 自動.

    SQL Server Agent is running and starts automatically after Windows boot

MS SQL Server のユーザー設定

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

  1. [移動] オブジェクトエクスプローラー そして開く セキュリティ > ログイン.
  2. 右クリック ログイン そして、[選択] をクリックします 新規ログイン. 選択 Windows 認証.
  3. ログイン名を入力してください mssql その中では 概要 セクション。
  4. クリック 検索, その後、 名前を確認する 確認して、クリックしてください OK 設定を保存するには、2回クリックしてください。

    Configuring users and permissions

  5. さて、 MSSQL01mssql Windows ユーザーが、データベースにログインできるユーザーのリストに追加されます(同様に、 mssql ユーザーを ログイン (2台目のマシン”MSSQL02″上のSQL Server Management Studioで)。
  6. mssql ユーザーを システム管理者 のサーバーロール セキュリティ SQL Server Management Studio でのデータベースの設定。
  7. [移動] MSSQL01MSSQLSERVER1 > サーバーの役割, 右クリック システム管理者, そして開く プロパティ.
  8. その メンバー ページで、[クリック] 追加, ユーザー名を入力してください mssql, そして、クリックして 名前を確認する.
  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. サンプルデータベースをインポートします。1台目のマシンで、SQL Server Management Studio を起動し、次の場所に移動します。 MSSQL01MSSQLSERVER1, 右クリック データベース、 そして、[選択] をクリックします データベースの復元 コンテキストメニュー内で。

    Restoring a sample database to reveal MS SQL Server replication configuration

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

    Restoring a sample database in MS SQL Server

データベースのレプリカが実行される2台目のマシン上のバックアップから、データベースをインポートすることができます。この方法では、空のデータベースにデータベースデータ全体をコピーすることなく、バックアップ作成以降の変更内容をコピーすることからレプリケーションが開始されるため、ネットワークトラフィックを削減できます。
2台目のサーバー上のバックアップからデータベースを復元し、データベースの名前を AdventureWorks2016rここで、”r”は”レプリカ”を意味します。
最終的に、次のようになります:

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

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

  1. その MSSQL01 マシン、[ここ](https://example.com)へ移動 MSSQL01MSSQLSERVER1 > セキュリティ > ログイン, 選択 MSSQL01mssql. 右クリック(またはダブルクリック) mssql ユーザーと選択 プロパティ.
  2. In サーバーの役割, の横にあるチェックボックスを選択し、 dbcreator 役割。

    Enabling the dbcreator role for mssql user

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

    Configuring user mapping on MS SQL Server

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

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

お客様の環境に適したプランを見つけましょう

お客様の環境に適したプランを見つけましょう

お客様の予算に合わせて、エンタープライズレベルのデータ保護を実現する、柔軟なNAKIVOのエディションとライセンスモデルをご覧ください。

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

グラフィカルモードでのレプリケーションの設定は、最も便利な方法です。次の設定は、SQL Server Management Studio で行います。 この例では、MS SQL Server のレプリケーションタイプの中で最もよく使用されるものの 1 つであるトランザクション データベース レプリケーションについて説明します。
以下のスクリーンショットは、SQL Server Management Studio におけるメインのデータベース サーバー (MSSQL01MSSQLSERVER1) のビューと、2 番目のサーバー (MSSQL02MSSQLSERVER2) のビューを示しています。
The view of two MS SQL Server instances in MS SQL Server Management Studio

配布の設定

ディストリビューションは、複数のパブリッシャーおよびサブスクライバーで利用できます。この例では、ソースデータベースが格納されているメインサーバー上でディストリビューションが構成されています。メインサーバー(MSSQL01MSSQLSERVER1)で、右クリックして レプリケーション そして、コンテキストメニューから、[ ] を選択します。 配布の設定.
Configuring Distribution
その 配布設定ウィザード 開きます。

  1. 販売代理店. この例では、メインサーバー(MSSQL01MSSQLSERVER1)上で実行中の現在のデータベースインスタンスをディストリビューターとして選択します。[クリック] 次へ ウィザードの次の手順に進むたびに。
  2. SQL Server Agent の起動. 上記で説明したように、MS SQL Server Agent が自動的に起動するように設定されていない場合、次のメッセージが表示されます。[選択] をクリックしてください。 はい、SQL Server Agent サービスを自動起動するように設定してください.

    Configuring the Distributor and MS SQL Server Agent service startup options

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

    Configuring snapshot folder and distribution database folders

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

    Selecting the Publisher and the distribution database

  7. ウィザードを完了する. “配布設定の概要”を確認し、[ ] をクリックします。 終了 ディストリビューターを作成するには。

    Finishing configuring distribution

  8. その 成功 ディストリビューターが正常に作成・設定された場合、ステータスが表示されるはずです。

    Configuring the Distributor

SQL Server Agent を自動起動するように設定する際にエラーが発生した場合は、サービス設定に移動し、SQL Server Agent の起動モードを確認してください(Agent の起動設定方法については、このブログ記事の上記部分を参照してください)。
また、SQL Server Management Studio で SQL Server Agent のプロパティを開き、サービスの状態や再起動オプションを確認することもできます。右クリックして SQL Server エージェント リストの最後にある オブジェクトエクスプローラー そして、クリックして プロパティ エージェントのプロパティを表示または編集するには。
Checking MS SQL Server Agent startup options

パブリッシャーの設定

配布の設定が完了したら、パブリッシャーの設定を行うことができます。パブリッシャーは、レプリケート対象のマスターデータベースが格納されているメインサーバー(MSSQL01MSSQLSERVER1)上で設定する必要があります。選択してください レプリケーション, 右クリック 地元出版物 そして、コンテキストメニューから、[ ] を選択します。 新刊.
Creating a new publication
その 新しい出版ウィザード 開きます。

  1. 出版物データベース. レプリケートしたいデータベースを選択します(AdventureWorks 2016 (この場合は)。クリック 次へ ウィザードの各ステップで、[次へ]をクリックして進めてください。

    Selecting a publication database

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

    Selecting the transactional publication type and articles

  4. テーブルの行をフィルタリングする. この例ではフィルタは追加されていません(これがフィルタのデフォルト設定です)。必要に応じてフィルタを追加することができます。
  5. スナップショット・エージェント. スナップショット・エージェントの実行タイミングを指定します。エージェントを直ちに実行するように設定しましょう。選択してください 直ちにスナップショットを作成し、サブスクリプションを初期化するためにそのスナップショットを利用可能な状態にしておく.

    Filter options and Snapshot Agent options

  6. エージェントのセキュリティ. 選択 スナップショット・エージェントのセキュリティ設定を使用する. をクリックして セキュリティ設定 ボタンをクリックして、エージェントが実行されるアカウントを選択します。

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

    Configuring agent security options

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

    Agent security options are configured

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

    Selecting wizard actions and completing the wizard

その 出版物の作成 このウィンドウでは、新しいパブリケーションの作成進捗状況を確認できます。しばらく待つと、すべてが正しく行われていれば、成功ステータスが表示されるはずです。
Creating the publication
これでパブリケーションが作成されました。以下の手順で”オブジェクト エクスプローラー”に表示されるパブリケーションを確認できます。 レプリケーション > 地元出版物.
The publication is created

サブスクライバーの設定

ご存じのとおり、MS SQL Serverのレプリケーションには、プル型とプッシュ型の2種類があります。プッシュ型レプリケーションを設定する場合は、サブスクライバーがメインのデータベースサーバー(この場合はMSSQL01)上でエージェントを実行するように設定する必要があります。プル型レプリケーションを設定する場合は、サブスクライバーが2台目のマシン(MSSQL02)、つまりデータベースのレプリカが作成されるマシン上でエージェントを実行するように設定する必要があります。
プッシュレプリケーションを設定し、マスターデータベースが存在する最初の MS SQL Server(MSSQL01MSSQLSERVER1)で新しいサブスクリプションを作成しましょう。
オブジェクトエクスプローラーで、次の場所へ移動します。 レプリケーション, 右クリック ローカルサブスクリプション そして、コンテキストメニューから、[ ] を選択します。 新規の定期購読.
Creating a new subscription
その 新しいサブスクリプションウィザード 開きます。

  1. 出版物. 新規サブスクリプションを作成するパブリケーションを選択します。この例では、パブリッシャーの名前は MSSQL01MSSQLSERVER1 で、パブリケーション名(先に作成されたもの)は AdvWorks_Pub. クリック 次へ ウィザードの各ステップで、[次へ] をクリックして進めてください。
  2. 販売代理店の所在地. レプリケーションの種類として、”プッシュ型サブスクリプション”または”プル型サブスクリプション”のいずれかを選択します。この例では、すべてのエージェントをソースサーバー側で実行したいので、最初のオプションを選択してプッシュ型サブスクリプションを作成します。これにより、MS SQL Serverのレプリケーションを一元的に管理できるようになります。

    Selecting the publisher and distribution agent location

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

      Adding MS SQL Server subscriber

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

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

      Selecting a subscriber and a subscription database

  4. 販売代理店のセキュリティ. 三つの点が付いたボタンをクリックしてください()、ディストリビューション・エージェントのユーザーやその他のセキュリティ設定を選択します。

    その 販売代理店のセキュリティ 表示されるウィンドウで、ディストリビューション・エージェントが MSSQL01 ~の下でホストする mssql ユーザーアカウント。のパスワードを入力してください。 mssql Windowsユーザー。選択してください プロセスアカウントを代行してディストリビューターに接続する そして、[選択] をクリックします プロセスアカウントを代行して、サブスクライバーに接続する. ヒット OK 設定を保存するには。

    Distribution Agent security settings

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

    Distribution Agent security settings are configured

  5. 同期スケジュール. ディストリビュータ上に配置されているエージェントを選択して、 連続して実行する 現在の加入者について。
  6. サブスクリプションの初期化. を選択してください。 初期化 チェックボックスにチェックを入れ、ドロップダウンメニューから選択してください 直ちに サブスクリプションをいつ初期化するかを指定します。また、 メモリ最適化 必要に応じて、このオプションを選択してください。

    Synchronization schedule options and initialize subscription options

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

    Selecting subscription wizard actions and completing the wizard

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

    The progress of creating subscriptions and the action status

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

    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)を選択し、[ レプリケーション, 右クリック 地域出版物 そして、コンテキストメニューから、[ ] を選択します。 レプリケーション・モニターを起動する.

    Launching the Replication Monitor to check MS SQL Server replication status

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

    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 で新しいクエリを作成し、このクエリを実行します。メインウィンドウで、[ 新しいクエリ ボタン。
  5. メインウィンドウの”SQLクエリ”セクションに、次のクエリを入力してください:

    USE AdventureWorks2016

    GO

    EXEC sp_changedbowner 'sa'

    GO

    をクリックして 実行 ボタン。

    Viewing Snapshot Agent Status to run database replication in SQL Server

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

  6. 次に、次のページへ進んでください。 MSSQL01MSSQLSERVER1 > レプリケーション > 地元出版物 > [AdventureWorks2016]: AdvWorks_Pub. パブリケーション名を右クリックし、コンテキストメニューから以下を選択します。 スナップショット・エージェントのステータスを表示. クリックすると アクション > 更新 ステータスを更新して、 すべてのサブスクリプションを再初期化する 各サブスクライバーにスナップショットを適用する。

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

    The running status of the subscription

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

MS SQL Serverのレプリケーションが実際にどのように動作するか見てみましょう。あるテーブルの内容を表示して、 AdventureWorks 2016 最初のMS SQLサーバーに保存されているデータベース(MSSQL01MSQLSERVER1)。この例では、 Person.AddressType テーブル。これを行うには、次のクエリを実行してください:
USE AdventureWorks2016;
GO
SELECT *
FROM Person.AddressType
;
クエリを実行した結果は、以下のスクリーンショットに表示されています:
Viewing the content of the table of the master database
2台目のサーバーでも同様のクエリを実行して、 Person.AddressTypeAdventureWorks2016r MSSQL02MSSQLSERVER2 に保存されているデータベース。
USE AdventureWorks2016r;
GO
SELECT *
FROM Person.AddressType
;
上のスクリーンショットと下のスクリーンショットを比較すると、 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
ご覧の通り、最初の行には AddressTypeID 1 と名前 “請求” から削除されました Person.AddressType の表 AdventureWorks 2016 のデータベース MSSQL01 マシン。
トランザクションレプリケーションが実行されています。のコンテンツを確認してみましょう。 Person.AddressType の表 AdventureWorks2016r のデータベース MSSQL02 マシン。テーブルの内容を確認するには、上記と同様のクエリをもう一度実行してください:
USE AdventureWorks2016r;
GO
SELECT *
FROM Person.AddressType
;
複製が行われた結果、1行目も Person.AddressType データベースのレプリカとして機能するセカンダリデータベース内のテーブル(AdventureWorks2016r)。結果は以下のスクリーンショットでご確認いただけます。
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日間無料。機能や容量の制限は一切ありません。クレジットカードも不要です。

関連記事