「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。 -戻る --[[SQL Server]] --[[冗長化アーキテクチャ]] * 目次 [#jd27a72c] #contents *概要 [#t8b1cecc] -SQL Serverには以下のレプリケーション機構がある。 -古くからある機能だが、新規機能追加も頻繁に行われており、全体の再編も起こっている。 **スケールアウト [#n77817af] ***レプリケーション系 [#y9e9db8d] -[[スナップショット レプリケーション>#m377dd37]]~ データの変更は追跡されず、~ スナップショットが適用されるたびに、レプリケートされる。 -[[トランザクション レプリケーション>#of525a21]] --トランザクション ログを使用して変更が追跡される。 --ログ配布とは仕組みが異なり、よりリアルタイム。 -[[マージ レプリケーション>#c5a3bf05]]~ トリガーとメタデータ テーブルを使用して変更が追跡される。 ***その他 [#a51f06ec] -[[ログ配布>#j0f51aa5]] --トランザクションログの転送をベースに利用している。 --トランザクション レプリケーションとは仕組みが異なる。 -[[AlwaysOn>#d18d57ee]] --最近出てきた機能で、色々なパターンに対してワンストップ --同期/非同期モード、自動/手動フェールオーバーがある。 --トランザクション レプリケーションともログ配布とも仕組みが異なる。 **高可用性ソリューション [#f3cc9680] ***災害対策 [#t06e8cb0] -[[ログ配布>#j0f51aa5]]~ トランザクションログの転送をベースに利用している。 ***耐障害 [#le063fa6] -[[フェールオーバー クラスタリング (WSFC)>MSCS/WSFC]] -[[データベースミラーリング>#o00976a4]] --トランザクションログの転送をベースに利用している。 --ミラーサーバーは読み取り専用ではなく、 --フェールオーバー時にのみアクティブになる。 --SQL Serverの将来のバージョンで削除される予定。 -[[AlwaysOn>#d18d57ee]] --同期モード、非同期モードがある。 --自動フェールオーバー、手動フェールオーバーがある。 --最近出てきた機能で、色々なパターンに対してワンストップ *詳細 [#c767b6a2] **用語(パブリッシング モデル) [#z3154660] レプリケーション トポロジ内のコンポーネントを出版業界に例えて表す。 レプリケーションのパブリッシング モデルの概要~ http://technet.microsoft.com/ja-jp/library/ms152567.aspx~ ***パブリッシャー (出版社) [#mfc31339] -レプリケーションを介して他の場所でデータを使用できるようにするデータベース インスタンス。 -パブリッシャーは、 --1 つ以上のパブリケーションを持つことができ、 --各パブリケーションには、論理的に関連する ---レプリケート対象のオブジェクトと ---データのセットが定義される。 ***ディストリビューター (流通業者) [#b9c7e497] -1 つ以上のパブリッシャーに関連付けられた~ レプリケーション固有のデータの保存場所として機能するデータベース インスタンス -各パブリッシャーは、ディストリビューターの単一のディストリビューション データベースと関連付けられる。 -ディストリビューション データベース --レプリケーション状態データ、パブリケーションに関するメタデータが保存される。 --場合によっては、パブリッシャーからサブスクライバーへ移動するデータのキューとしても機能する。 -モデル --ローカル ディストリビューター~ 単一のデータベース サーバー インスタンスが、パブリッシャーとディストリビューター両方の役割を果たす場合。 --リモート ディストリビューター~ パブリッシャーとディストリビューターが別のデータベース サーバー インスタンス上で構成される場合。 ***サブスクライバー (購読者) [#ebcf72ea] -レプリケートされたデータを受信するデータベース インスタンス。 -サブスクライバーは、複数のパブリッシャーおよびパブリケーションからデータを受信できる。 -選択したレプリケーションの種類に応じて、サブスクライバーは --パブリッシャーにデータの変更を戻したり、 --データを他のサブスクライバーに再パブリッシュしたりできる。 ***パブリケーション (出版物) [#ob574639] データベースからの1つないし複数のアーティクルの集合。 ***アーティクル (記事) [#gb5821c7] -テーブルやレプリケーション用に指定されたデータベース・オブジェクト。 -パブリケーションには、さまざまな種類のアーティクルを含めることができる。 --テーブル --ビュー --ストアド プロシージャ --その他のオブジェクト -テーブルがアーティクルとしてパブリッシュされている場合は、~ フィルターを使用してサブスクライバーに送信するデータの列と行を制限することができる。 ***サブスクリプション (定期購読物) [#a0341495] パブリケーションのコピーを要求すること。 -パブリケーションをいつ、どこで受信するのかが定義される。 -サブスクリプションには、プッシュとプルの 2 つの種類がある。 **レプリケーションの種類 [#i359cd7f] 主にスケールアウトで利用されるレプリケーションの種類。 http://technet.microsoft.com/ja-jp/library/ms152531.aspx ***スナップショット レプリケーション [#m377dd37] データの変更は追跡されず、~ スナップショットが適用されるたびに、レプリケートされる。 http://technet.microsoft.com/ja-jp/library/ms151832.aspx スナップショット レプリケーションでは、 -特定の時間のデータを配信する。 -データに対する更新は監視されない。 -同期が発生すると --データ全体のスナップショットが作成され、 --サブスクライバーに送信される。 VSSのスナップショットでファイルの変更点を配布している。 ***トランザクション レプリケーション [#of525a21] SQL Server トランザクション ログを使用して変更が追跡される。 http://technet.microsoft.com/ja-jp/library/ms151176.aspx -開始~ パブリケーションのデータベース オブジェクトとデータのスナップショットで開始される。 -配信 --最初のスナップショットが取得されるとすぐに配信される。 --それ以後パブリッシャーでデータやスキーマが変更されると、~ 通常はその都度 (ほぼリアルタイムで) サブスクライバーに配信される。 -データの変更 --パブリッシャーで発生したのと同じ順序で、~ 同じトランザクションの中で、サブスクライバーに適用される。 --したがって、パブリケーション内では、トランザクションの一貫性が保証される。 ***マージ レプリケーション [#c5a3bf05] トリガーとメタデータ テーブルを使用して変更が追跡される。 http://technet.microsoft.com/ja-jp/library/ms152746.aspx -開始~ [[トランザクション レプリケーション>#of525a21]]と同様に、~ パブリケーションのデータベース オブジェクトとデータのスナップショットで開始される。 -追跡~ その後にパブリッシャーとサブスクライバーで行われた~ データおよびスキーマの変更は、トリガーを使って追跡される。 -同期~ サブスクライバーは、ネットワークに接続されたときにパブリッシャーと同期して、~ 前回の同期以降にパブリッシャーとサブスクライバーの間で変更されたすべての行を交換する。 **エージェント [#me608e9f] レプリケーションでは、~ エージェントと呼ばれる多数のスタンドアロン プログラムを使用して、~ 変更の監視やデータの配信に関連するタスクを実行する。 ***スナップショット エージェント [#za39ccd3] http://technet.microsoft.com/ja-jp/library/ms146939.aspx -一般的にすべての種類のレプリケーションで使用される。 -ディストリビューター側で実行される。 -スナップショット エージェントは、 --パブリッシュされたテーブルやその他のオブジェクトの ---スキーマと初期データ ファイルを作成、 ---スナップショット ファイルを格納して、 --同期に関する情報をディストリビューション データベースに記録する。 ***ログ リーダー エージェント [#se1ecc72] http://technet.microsoft.com/ja-jp/library/ms146878.aspx: -ログ リーダー エージェントは、~ [[トランザクション レプリケーション>#of525a21]]で使用される。 -レプリケーションとしてマークが付けられたトランザクションを、 --パブリッシャーのトランザクション ログから、 --ディストリビューション データベースに移動する。 -[[トランザクション レプリケーション>#of525a21]]を使用してパブリッシュされた各データベースには、~ ディストリビューター上で実行され、パブリッシャーに接続する独自のログ リーダー エージェントがある~ (ディストリビューターはパブリッシャーと同じコンピューター上に存在していてもイイ)。 ***ディストリビューション エージェント [#zfeb1015] http://technet.microsoft.com/ja-jp/library/ms147328.aspx -ディストリビューション エージェントは、 --[[スナップショット レプリケーション>#m377dd37]]、~ および[[トランザクション レプリケーション>#of525a21]]で使用される。 --初期スナップショットをサブスクライバーに適用し、~ ディストリビューション データベースに保持されている~ トランザクションをサブスクライバーに移動する。 --プッシュ or プル ---プッシュ サブスクリプションの場合はディストリビューターで実行され、 ---プル サブスクリプションの場合はサブスクライバーで実行される。 ***マージ エージェント [#u87214b3] http://technet.microsoft.com/ja-jp/library/ms147839.aspx -マージ エージェントは、[[マージ レプリケーション>#c5a3bf05]]で使用される。 -マージ サブスクリプションごとにマージ エージェントがあり、~ パブリッシャーとサブスクライバーの両方に接続し、両方を更新する。 -マージ エージェントは、 --初期スナップショットをサブスクライバーに適用し、 --データの増分変更を移動および調整する。 --既定では、 ---サブスクライバーからパブリッシャーに変更をアップロードし、 ---パブリッシャーからサブスクライバーに変更をダウンロードする。 --プッシュ or プル ---プッシュ サブスクリプションの場合はディストリビューターで実行され、 ---プル サブスクリプションの場合はサブスクライバーで実行される。 ***キュー リーダー エージェント [#u15f2c8f] http://technet.microsoft.com/ja-jp/library/ms147378.aspx -キュー リーダー エージェントは、 --キュー更新オプションによる[[トランザクション レプリケーション>#of525a21]]で使用される。 --ディストリビューターで実行され、サブスクライバーで行われた変更をパブリッシャーに戻す。 --[[ディストリビューション エージェント>#zfeb1015]]や[[マージ エージェント>#y1668d17]]とは異なり、~ キュー リーダー エージェントは 1 つのインスタンスだけで、~ ディストリビューション データベースのすべてのパブリッシャーおよびパブリケーションに対応する。 *定義 [#s69f5f8b] **レプリケーションの定義 [#ra40908a] ***パブリケーション作成 [#g2e99836] レプリケーションで配布されるデータの集合をパブリッシャ(元データの持ち主)で設定 ***アーティクル定義 [#z4e000f9] パブリケーション内で配布対象となる個々のオブジェクトを定義 ***サブスクリプション作成 [#p3404505] パブリケーションを受け取る側(サブスクライバー)で設定 **レプリケーション メンテナンス ジョブ [#keac3982] ***メンテナンス ジョブとは? [#h23290ae] -レプリケーションには、 --定期的なメンテナンスや --要求時メンテナンスを >実行する多数のメンテナンス ジョブがある。 ***SQL Serverの主なメンテナンス ジョブ [#ob757189] -スナップショット エージェント~ スナップショットを作成し、配布データベースに格納 -ログ リーダー エージェント~ トランザクションログを監視し、変更を配布データベースに送信 -配布エージェント~ 配布データベースからサブスクライバーにデータを送信 -マージ エージェント~ マージレプリケーションで変更を同期 -クリーンアップ ジョブ~ 古いスナップショットや履歴データを削除してパフォーマンスを維持 **参考 [#p6f5cba3] ***パブリッシュ [#kb025c4f] データとデータベース オブジェクトのパブリッシュ~ http://msdn.microsoft.com/ja-jp/library/ms152559.aspx -パブリケーション データベースでのスキーマの変更~ http://msdn.microsoft.com/ja-jp/library/ms151870.aspx -パブリケーションとアーティクルの作成、変更、および削除 (レプリケーション)~ http://msdn.microsoft.com/ja-jp/library/ms152542.aspx --アーティクルの定義~ http://msdn.microsoft.com/ja-jp/library/ms146887.aspx ---アーティクルの種類の指定 (レプリケーション Transact-SQL プログラミング)~ http://msdn.microsoft.com/ja-jp/library/ms147873.aspx -レプリケーション ストアド プロシージャ (Transact-SQL)~ http://msdn.microsoft.com/ja-jp/library/ms174364.aspx --sp_addarticle (Transact-SQL)~ http://msdn.microsoft.com/ja-jp/library/ms173857.aspx --sp_changearticle (Transact-SQL)~ http://msdn.microsoft.com/ja-jp/library/ms175980.aspx ***アーティクル [#p07a726f] -アーティクルの種類の指定 (レプリケーション Transact-SQL プログラミング)~ https://msdn.microsoft.com/ja-jp/library/ms147873.aspx~ --レプリケーションにおける既定の種類のアーティクルはテーブル アーティクル --ビュー、ストアド プロシージャ、ユーザー定義関数、ストアド プロシージャ実行など、他のデータベース オブジェクトもパブリッシュできる。 ***サブスクライブ [#f9f807d0] パブリケーションのサブスクライブ~ http://msdn.microsoft.com/ja-jp/library/ms151170.aspx -プッシュ サブスクリプションの作成 -プル サブスクリプションのプロパティの表示または変更 -プッシュ サブスクリプションのプロパティの表示または変更 -プル サブスクリプションの削除 -プッシュ サブスクリプションの削除 ***自習書 [#u15f04bc] -SQL Server 2005 シリーズ~ http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx~ ※「管理編」にレプリケーションの自習書があります。 *追加機能 [#e34afaa5] **ログ配布 [#j0f51aa5] ログ配布は、トランザクションログのバックアップ&リストアの~ テクノロジを使用してデータベースのレプリケーションを実現しているもよう。 >「トランザクション ログ バックアップを、~ "プライマリ サーバー" インスタンスの "プライマリ データベース" から、~ 別の "セカンダリ サーバー" インスタンスの 1 つ以上の "セカンダリ データベース" に~ 自動的に送信」 -参考 --ログ配布について (SQL Server) | Microsoft Docs~ https://docs.microsoft.com/ja-jp/sql/database-engine/log-shipping/about-log-shipping-sql-server --DO’s&DONT’s #16 やってはいけないこと~ ' - ログ配布プライマリデータベースのログバックアップ~ ' - Microsoft SQL Server Japan Support Team Blog - Site Home - MSDN Blogs~ http://blogs.msdn.com/b/jpsql/archive/2012/12/21/do-s-amp-dont-s-16.aspx **データベース・ミラーリング [#o00976a4] データベース ミラーリングは、可用性向上のための冗長化の仕組み。 -ミラーリングもトランザクションログの転送によって実現されている。 -読み取り専用の機能はなく、障害時フェールオーバーする。 --[[フェールオーバー クラスタリング (WSFC)>MSCS/WSFC]]と違って共有ディスク不要 -[[フェールオーバー クラスタリング (WSFC)>MSCS/WSFC]]と違って共有ディスク不要 -SQL Serverの将来のバージョンで[[AlwaysOn>#d18d57ee]]に再編され削除される予定。 ※ RAID1的、ちなみにRAID0は[[シャーディング>Elastic Scale, Elastic Database Pool]]的 **AlwaysOn [#d18d57ee] (可用性グループ用のレプリケーションの構成) こちらは、スケールアウトにも可用性向上にも対応した仕組み。~ ログ転送の仕組みはトランザクション レプリケーションともログ配布とも異なる。 -柔軟で確実な高可用性を実現するSQL Server 2012の「AlwaysOn」機能:CodeZine~ http://codezine.jp/article/detail/6480 --AlwaysOn可用性グループ~ 旧バージョンでは、ミラーリング機能に相当する ---データ同期モード~ オリジナルデータベースと複製するデータベースとの同期方法の選択 ---フェイル・オーバーモード~ オリジナルデータベースで障害発生時に、~ 複製先データベースへフェイル・オーバーする方法の選択 ---アクティブセカンダリ~ 複製したデータベースを参照専用データベースとして使用できる機能 ---セカンダリバックアップ~ 複製したデータベース上でバックアップを取得できる機能 --AlwaysOnフェイル・オーバークラスタインスタンス~ 旧バージョンでは、フェイル・オーバー機能に相当する。~ ~ [[フェイル・オーバー クラスタリング (WSFC)>MSCS/WSFC]]の共有ディスクに変わって、~ データベース ミラーリングされたデータを使用することで、共有ディスクを使用せず~ 地理的に離れた2つのノードのフェイル・オーバー クラスタリングを実現する。 *参考 [#tc83833f] -トランザクションレプリケーションの基本的な仕組み at SE の雑記~ http://blog.engineer-memo.com/2014/10/13/%E3%83%88%E3%83%A9%E3%83%B3%E3%82%B6%E3%82%AF%E3%82%B7%E3%83%A7%E3%83%B3%E3%83%AC%E3%83%97%E3%83%AA%E3%82%B1%E3%83%BC%E3%82%B7%E3%83%A7%E3%83%B3%E3%81%AE%E5%9F%BA%E6%9C%AC%E7%9A%84%E3%81%AA%E4%BB%95/ -オンプレのSQL ServerからAWSへレプリケーションをする – 1.基礎知識 – | Developers.IO~ http://dev.classmethod.jp/cloud/aws/sqlserver-replication/ **MSDN [#v0d95269] ***レプリケーション [#l171ac6d] http://technet.microsoft.com/ja-jp/library/ms151198.aspx -新機能 (レプリケーション)~ http://technet.microsoft.com/ja-jp/library/bb500342.aspx -レプリケーションの旧バージョンとの互換性~ http://technet.microsoft.com/ja-jp/library/ms143323.aspx --SQL Server レプリケーションの非推奨機能~ http://technet.microsoft.com/ja-jp/library/ms143550.aspx --SQL Server レプリケーションにおける重大な変更~ http://technet.microsoft.com/ja-jp/library/ms143550.aspx -レプリケーション機能とタスク~ http://technet.microsoft.com/ja-jp/library/bb677158.aspx --データとデータベース オブジェクトのパブリッシュ~ https://msdn.microsoft.com/ja-JP/library/ms152559.aspx ---レプリケーションのパブリッシング モデルの概要~ https://msdn.microsoft.com/ja-jp/library/ms152567.aspx -テクニカル リファレンス~ http://technet.microsoft.com/ja-jp/library/bb677162.aspx ***レプリケーション機能とタスク [#u499e4e8] http://technet.microsoft.com/ja-jp/library/bb677158.aspx -レプリケーションの種類~ http://technet.microsoft.com/ja-jp/library/ms152531.aspx --スナップショット レプリケーション~ http://technet.microsoft.com/ja-jp/library/ms151832.aspx --トランザクション レプリケーション~ http://technet.microsoft.com/ja-jp/library/ms151176.aspx --マージ レプリケーション~ http://technet.microsoft.com/ja-jp/library/ms152746.aspx -レプリケーションおよび高可用性機能の相互運用性 --AlwaysOn 可用性グループ用のレプリケーションの構成 (SQL Server)~ http://technet.microsoft.com/ja-jp/library/hh710046.aspx --AlwaysOn パブリケーション データベースのメンテナンス (SQL Server)~ http://technet.microsoft.com/ja-jp/library/hh710048.aspx~ --レプリケーション、変更の追跡、変更データ キャプチャ、および AlwaysOn 可用性グループ (SQL Server)~ http://technet.microsoft.com/ja-jp/library/hh403414.aspx --ログ配布とレプリケーション (SQL Server)~ http://technet.microsoft.com/ja-jp/library/ms151224.aspx --データベース ミラーリングとレプリケーション (SQL Server)~ http://technet.microsoft.com/ja-jp/library/ms151799.aspx ***追加機能 [#q9f4cf2a] -ログ配布 --ログ配布について~ http://technet.microsoft.com/ja-jp/library/ms187103.aspx -データベース ミラーリング --データベース ミラーリング エンドポイント~ http://technet.microsoft.com/ja-jp/library/ms179511.aspx --データベース ミラーリング~ http://technet.microsoft.com/ja-jp/library/ms189852.aspx --ページの自動修復 (可用性グループ/データベース ミラーリング)~ http://technet.microsoft.com/ja-jp/library/bb677167.aspx -AlwaysOn --AlwaysOn フェールオーバー クラスター インスタンス~ http://technet.microsoft.com/ja-jp/library/ms189134.aspx --AlwaysOn 可用性グループ~ http://technet.microsoft.com/ja-jp/library/hh510230.aspx --フェールオーバー クラスタリングと AlwaysOn 可用性グループ (SQL Server)~ http://technet.microsoft.com/ja-jp/library/ff929171.aspx ---- Tags: [[:データアクセス]], [[:SQL Server]]