企業のデータ管理において、高可用性(High Availability, HA)と冗長化(Redundancy)は重要な要素です。SQL Serverでは、レプリケーション(Replication)を利用することで、データのコピーを別のサーバーに維持し、可用性と耐障害性を向上させることができます。
本記事では、SQL Serverのレプリケーション技術を活用し、パブリッシャー(Publisher)、ディストリビューター(Distributor)、サブスクライバー(Subscriber)の役割を理解しながら、セットアップ方法を解説します。
レプリケーションの主要コンポーネント
SQL Serverのレプリケーションとは、一つのデータベース(パブリッシャー)から他のデータベース(サブスクライバー)へデータをコピーし、同期を取る仕組みです。
レプリケーションには パブリッシャー(Publisher)、ディストリビューター(Distributor)、サブスクライバー(Subscriber) という3つの役割が存在します。
- パブリッシャー(Publisher):データを提供するサーバー
- ディストリビューター(Distributor):データ変更を管理・配信するサーバー
- サブスクライバー(Subscriber):データを受け取るサーバー
レプリケーションを理解する上で、以下の3つの役割が重要です。
- 元のデータを保持し、変更を配信する役割
- 変更が発生すると、それをディストリビューターに送信
- パブリッシャーから送信されたデータを管理
- サブスクライバーへの配信を制御
- 専用サーバーとして分離するとパフォーマンス向上
- 配信されたデータを受け取り、適用するサーバー
- 読み取り専用や、更新可能なモデルも選択可能
SQL Server レプリケーションのセットアップ
以下の手順で、トランザクションレプリケーションをセットアップします。
パブリッシャーの設定
- SQL Server Management Studio(SSMS)を開く
- レプリケーション > ローカルパブリケーション を右クリックし、新しいパブリケーション を選択
- パブリッシャーデータベースを選択(例: SalesDB)
- トランザクションレプリケーション を選択
- ディストリビューターの設定(ローカルまたはリモートを選択)
- 公開するテーブルやストアドプロシージャを選択
- スナップショットエージェントを設定(実行スケジュールを指定)
- パブリケーションの作成を完了
ディストリビューターの設定
- SQL Server Agent を有効化(自動起動を設定)
- ディストリビューター用の専用データベース(DistributorDB)を作成
- ログリーダーエージェントを設定(トランザクション変更を監視)
サブスクライバーの設定
- レプリケーション > ローカルサブスクリプション を右クリックし、新しいサブスクリプション を選択
- 対象のパブリケーションを選択
- サブスクライバーデータベースを指定(例: SalesReplicaDB)
- スナップショット適用方法を設定(即時適用またはスケジュール設定)
- サブスクリプションを作成して完了
演習問題
問題1
SQL Serverのレプリケーションにおける「パブリッシャー」「ディストリビューター」「サブスクライバー」の役割を簡潔に説明してください。
問題2
トランザクションレプリケーションとマージレプリケーションの違いを説明し、それぞれが適用されるユースケースを述べてください。
問題3
以下のSQL Server設定に関する説明のうち、正しいものを選んでください。
- パブリッシャーは、データを受信するだけの役割を持つ。(Yes/No)
- ディストリビューターは、データ変更をログに記録し、サブスクライバーに配信する役割を持つ。(Yes/No)
- スナップショットレプリケーションは、リアルタイムデータ転送に適している。(Yes/No)
解答例
解答1
- パブリッシャー: 元のデータを保持し、変更をディストリビューターへ送信
- ディストリビューター: 変更データを管理し、サブスクライバーへ配信
- サブスクライバー: 配信されたデータを適用し、利用する
解答2
- トランザクションレプリケーション: 変更を即座にサブスクライバーへ適用(金融取引など)
- マージレプリケーション: 双方向で変更を同期(オフライン編集が必要な環境)
解答3
- No(パブリッシャーはデータを送信する役割)
- Yes(ディストリビューターは変更データの管理と配信を担当)
- No(リアルタイム転送にはトランザクションレプリケーションが適している)
まとめ
SQL Serverのレプリケーションを活用することで、データの可用性と冗長化を強化できます。
本記事では、基本的なセットアップ手順を解説しました。実際の運用では、サーバー負荷やネットワーク環境を考慮しながら適切な設定を行うことが重要です。