カピバラ好きなエンジニアブログ

興味ある技術とか検証した内容を赴くままに書いていきます。カピバラの可愛さこそ至高。

SQL Serverレプリケーション(2012→2016)をやってみた(事前準備編)

はじめに

タイトル通り、以下のMicrosoftのページでも紹介されているSQL Serverレプリケーション機能を使用して、バージョンが異なる場合のレプリケーション設定を行なっていきます。

docs.microsoft.com

構築する環境情報は以下です。



SQL Serverレプリケーションについては、以下の記事がわかりやすいので、そちらをご確認ください。
dev.classmethod.jp


上記記事でも書いてありますが、レプリケーションには複数の種類があります。
今回はレプリケーションを行う前の事前準備のみ書いていきます。


実際のレプリケーション設定については、別途アップする記事をご確認ください。

SQL Serverレプリケーションの種類についてはこちらを参照

レプリケーションの種類 - SQL Server | Microsoft Docs

レプリケーションの設定はこちらです。 capybara-engineer.hatenablog.com



 

実施内容

実施作業

レプリケーションWindowsアカウント作成

まずはレプリケーション用のアカウントを作成していきます。

Windowsアカウント作成(レプリケーション元)

(公式手順によると)レプリケーションエージェントを実行する用のアカウントが必要なので、まずはレプリケーション元(2012)のEC2でアカウントを作成します。

作成対象ユーザ

ユーザ名
repl_snapshot
repl_distribution
repl_logreader
repl_merge


コントロールパネルを開き、以下の手順で新しいユーザを選択します。
f:id:live-your-life-dd18:20200212141319p:plain

この設定を元に4つ新規ユーザを作成します。
f:id:live-your-life-dd18:20200212141458p:plain

ユーザが作成されるとユーザー一覧に表示されるようになります。
f:id:live-your-life-dd18:20200212141910p:plain

Windowsアカウント作成(レプリケーション先)

同様にレプリケーション先(2016)のEC2でもアカウントを新規作成します。

作成対象ユーザ

ユーザ名
repl_distribution
repl_merge


作成したユーザが一覧に表示されました。 f:id:live-your-life-dd18:20200212142455p:plain

スナップショットフォルダー準備

次にレプリケーション元のDBのスナップショットの作成と保存に使用されるフォルダを作成します。
今回はレプリケーション元のDB(2012)上のCドライブ配下にbackupフォルダを作成し、その中にレプリケーション用フォルダを作成しました。
f:id:live-your-life-dd18:20200212144614p:plain

作成できたら、右クリック→プロパティを選択し、共有タブを開きます。
フォルダを作成したばかりでは共有設定がされていないので、共有設定をしていきます。

画像の通りの手順で共有を許可するユーザの追加ボタンを押下します。
f:id:live-your-life-dd18:20200212144731p:plain

以下の手順で事前に作成したスナップショット用のユーザを指定します。
f:id:live-your-life-dd18:20200212145111p:plain

『コンピュータ名(レプリケーション元)\ユーザ名』になっていればOKです。
f:id:live-your-life-dd18:20200212145402p:plain

追加対象のユーザとそれぞれの必要な権限は以下の通りです。
ここまで設定できれば、共有の画面は『OK』ボタンを押下して閉じます。
※プロパティ設定は続くので閉じないでください。

設定対象ユーザ

ユーザ名 アクセス権限
repl_snapshot フルコントロール権限
repl_distribution 読み取り権限
repl_merge 読み取り権限


f:id:live-your-life-dd18:20200212145811p:plain f:id:live-your-life-dd18:20200212145837p:plain f:id:live-your-life-dd18:20200212145859p:plain

今度はセキュリティタブの編集ボタンから先ほどと同じ手順でユーザの追加、権限の変更を行います。
※追加するユーザ、設定する権限は先ほどと一緒です。
f:id:live-your-life-dd18:20200212150645p:plain

f:id:live-your-life-dd18:20200212150907p:plain f:id:live-your-life-dd18:20200212150923p:plain f:id:live-your-life-dd18:20200212150941p:plain

最後に共有設定をしたフォルダのネットワークパスをメモして、『OK』ボタンを押下してプロパティ設定は閉じます。
f:id:live-your-life-dd18:20200212151056p:plain  
 

ディストリビューション構築

スナップショットフォルダーの設定ができたら、ディストリビューションの設定をしていきます。
ディストリビューションが何かよくわからないと思いますが、簡単に言うとプライマリDBのスナップショットやトランザクションログをレプリカDBに対して配布してくれる用の機能です。

Microsoft公式の手順では以下の通り、パブリッシャー(データ出力元)とディストリビューター(配布者)は共有のインスタンスで構築するようになっています。
f:id:live-your-life-dd18:20200212152044p:plain

SQL Server Management Studioを起動ログインし、Replicationフォルダの右クリックから『Configure Distribution...』を押下します。
f:id:live-your-life-dd18:20200212152613p:plain

ディストリビューション構成ウィザードが立ち上がるので、それを進めていきます。
f:id:live-your-life-dd18:20200212152841p:plain

上を選択し、『Next』を押下します。
f:id:live-your-life-dd18:20200212152917p:plain

スナップショットフォルダーは先ほど共有設定したフォルダを設定し、残りの設定は規定値で進めます。
f:id:live-your-life-dd18:20200212153147p:plain

問題なく完了したら『Close』ボタンで終了します。
f:id:live-your-life-dd18:20200212153324p:plain  
 

DBアクセス許可設定

事前準備の最後に、作成したWindowsアカウントでレプリケーションDBにアクセスできるように設定していきます。
SQL Server Management Studioを起動ログインし、Replicationフォルダの右クリックから『New Login...』を押下します。
f:id:live-your-life-dd18:20200212153822p:plain

  以下の手順で序盤に作成したWindowsアカウントを指定します。
f:id:live-your-life-dd18:20200212162654p:plain
f:id:live-your-life-dd18:20200212162851p:plain

Windowsアカウントの指定ができたら、DBとのマッピングを行います。
マッピング対象のDBはレプリケーション対象DBとディストリビューションDBの2つで、ロールはどちらともdb_ownerのロールを設定します。
f:id:live-your-life-dd18:20200212163114p:plain

同じ設定を以下のユーザすべてで行います。


設定対象ユーザ

ユーザ名
repl_snapshot
repl_logreader
repl_logreader
repl_merge


作成ができたら図のようにDBのログインユーザ一覧に、作成したWindowsアカウントが表示されます。
f:id:live-your-life-dd18:20200212163531p:plain

以上で事前準備は完了になります。
次回は今回実施した内容を元にトランザクションレプリケーションを実施していきます。
docs.microsoft.com