Open棟梁Project - マイクロソフト系技術情報 Wiki -[[戻る>SQL Server]] * 目次 [#jd27a72c] #contents *概要 [#t8b1cecc] SQL Serverには以下のレプリケーション機構がある。 -レプリケーション --スナップショット レプリケーション~ データの変更は追跡されず、スナップショットが適用されるたびに、~ 既存のデータがすべて上書きされます。 --トランザクション レプリケーション~ トランザクション ログを使用して変更が追跡されます。 --マージ レプリケーション~ トリガーとメタデータ テーブルを使用して変更が追跡されます。 -ログ配布~ トランザクションログの転送をベースに利用しているようです。 -データベースミラーリング~ トランザクションログの転送をベースに利用しているようです。 -AlwaysOn~ データベースミラーリングをベースに利用しているようです。 *用語(パブリッシング モデル) [#z3154660] レプリケーションでは、レプリケーション トポロジ内のコンポーネントを出版業界に例えて表します。 レプリケーションのパブリッシング モデルの概要~ http://technet.microsoft.com/ja-jp/library/ms152567.aspx~ ***パブリッシャー (出版社) [#mfc31339] -レプリケーションを介して他の場所でデータを使用できるようにするデータベース インスタンス。 -パブリッシャーは、 --1 つ以上のパブリケーションを持つことができ、 --各パブリケーションには、論理的に関連する ---レプリケート対象のオブジェクトと ---データのセットが定義される。 ***ディストリビューター (流通業者) [#b9c7e497] -1 つ以上のパブリッシャーに関連付けられた~ レプリケーション固有のデータの保存場所として機能するデータベース インスタンス -各パブリッシャーは、ディストリビューターの単一のディストリビューション データベースと関連付けられる。 -ディストリビューション データベース --レプリケーション状態データ、パブリケーションに関するメタデータが保存される。 --場合によっては、パブリッシャーからサブスクライバーへ移動するデータのキューとしても機能する。 -モデル --ローカル ディストリビューター~ 単一のデータベース サーバー インスタンスが、パブリッシャーとディストリビューター両方の役割を果たす場合。 --リモート ディストリビューター~ パブリッシャーとディストリビューターが別のデータベース サーバー インスタンス上で構成される場合。 ***サブスクライバー (購読者) [#ebcf72ea] -レプリケートされたデータを受信するデータベース インスタンス。 -サブスクライバーは、複数のパブリッシャーおよびパブリケーションからデータを受信できる。 -選択したレプリケーションの種類に応じて、サブスクライバーは --パブリッシャーにデータの変更を戻したり、 --データを他のサブスクライバーに再パブリッシュしたりできる。 ***パブリケーション (出版物) [#ob574639] データベースからの1つないし複数のアーティクルの集合。 ***アーティクル (記事) [#gb5821c7] -テーブルやレプリケーション用に指定されたデータベース・オブジェクト。 -パブリケーションには、さまざまな種類のアーティクルを含めることができる。 --テーブル --ビュー --ストアド プロシージャ --その他のオブジェクト -テーブルがアーティクルとしてパブリッシュされている場合は、~ フィルターを使用してサブスクライバーに送信するデータの列と行を制限することができる。 ***サブスクリプション (定期購読物) [#a0341495] パブリケーションのコピーを要求すること。 -パブリケーションをいつ、どこで受信するのかが定義される。 -サブスクリプションには、プッシュとプルの 2 つの種類がある。 *レプリケーション [#i642d5d1] **種類 [#i359cd7f] http://technet.microsoft.com/ja-jp/library/ms152531.aspx ***スナップショット レプリケーション [#m377dd37] http://technet.microsoft.com/ja-jp/library/ms151832.aspx -スナップショット レプリケーションでは、特定の時間に表示されていた状態のデータを配信します。 -データに対する更新は監視されません。 -同期が発生するとデータ全体のスナップショットが作成され、サブスクライバーに送信されます。 VSSのスナップショットでファイルの変更点を配布している。 ***トランザクション レプリケーション [#of525a21] http://technet.microsoft.com/ja-jp/library/ms151176.aspx -パブリケーションのデータベース オブジェクトとデータのスナップショットで開始されます。 -最初のスナップショットが取得されるとすぐ、それ以後パブリッシャーでデータやスキーマが変更されると、通常はその都度 (ほぼリアルタイムで) サブスクライバーに配信されるようになります。 -データの変更は、パブリッシャーで発生したのと同じ順序で、同じトランザクションの中で、サブスクライバーに適用されます。したがって、パブリケーション内では、トランザクションの一貫性が保証されます。 ***マージ レプリケーション [#c5a3bf05] http://technet.microsoft.com/ja-jp/library/ms152746.aspx -トランザクション レプリケーションと同様に、パブリケーションのデータベース オブジェクトとデータのスナップショットで開始されます。 -その後にパブリッシャーとサブスクライバーで行われたデータおよびスキーマの変更は、トリガーを使って追跡されます。 -サブスクライバーは、ネットワークに接続されたときにパブリッシャーと同期して、前回の同期以降にパブリッシャーとサブスクライバーの間で変更されたすべての行を交換します。 ***ログ配布 [#j0f51aa5] 以下を参照すると明らかですが、ログ配布は、 -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] データベース ミラーリングは、可用性向上のための冗長化の仕組みです。~ (ミラーリングもトランザクションログの転送によって実現されているようです)。 ***AlwaysOn 可用性グループ用のレプリケーションの構成 [#d18d57ee] こちらも、可用性向上のための冗長化の仕組みです。~ こちらもミラーリング(トランザクションログの転送)をベースに利用しているようです。 -柔軟で確実な高可用性を実現するSQL Server 2012の「AlwaysOn」機能:CodeZine~ http://codezine.jp/article/detail/6480 --AlwaysOn可用性グループ~ 旧バージョンでは、ミラーリング機能に相当する ---データ同期モード~ オリジナルデータベースと複製するデータベースとの同期方法の選択 ---フェールオーバーモード~ オリジナルデータベースで障害発生時に、複製先データベースへフェールオーバーする方法の選択 ---アクティブセカンダリ~ 複製したデータベースを参照専用データベースとして使用できる機能 ---セカンダリバックアップ~ 複製したデータベース上でバックアップを取得できる機能 --AlwaysOnフェールオーバークラスタインスタンス~ 旧バージョンでは、フェールオーバー機能に相当する。~ ~ フェールオーバー クラスタリング (WSFC)の共有ディスクに変わって、~ データベース ミラーリングされたデータを使用することで、共有ディスクを使用せず~ 地理的に離れた2つのノードのフェールオーバー クラスタリングを実現します。 **エージェント [#me608e9f] レプリケーションでは、~ エージェントと呼ばれる多数のスタンドアロン プログラムを使用して、~ 変更の監視やデータの配信に関連するタスクを実行します。 ***スナップショット エージェント [#za39ccd3] http://technet.microsoft.com/ja-jp/library/ms146939.aspx -一般的にすべての種類のレプリケーションで使用されます。 -スナップショット エージェントは、パブリッシュされたテーブルやその他のオブジェクトのスキーマと初期データ ファイルを作成し、スナップショット ファイルを格納して、同期に関する情報をディストリビューション データベースに記録します。 -スナップショット エージェントはディストリビューター側で実行されます。 ***ログ リーダー エージェント [#se1ecc72] http://technet.microsoft.com/ja-jp/library/ms146878.aspx -ログ リーダー エージェントは、トランザクション レプリケーションで使用されます。~ -レプリケーションとしてマークが付けられたトランザクションを、パブリッシャーのトランザクション ログから、ディストリビューション データベースに移動します。 -トランザクション レプリケーションを使用してパブリッシュされた各データベースには、ディストリビューター上で実行され、パブリッシャーに接続する独自のログ リーダー エージェントがあります (ディストリビューターはパブリッシャーと同じコンピューター上に存在していてもかまいません)。 ***ディストリビューション エージェント [#zfeb1015] http://technet.microsoft.com/ja-jp/library/ms147328.aspx -ディストリビューション エージェントは、スナップショット レプリケーション、およびトランザクション レプリケーションで使用されます。 -ディストリビューション エージェントは初期スナップショットをサブスクライバーに適用し、ディストリビューション データベースに保持されているトランザクションをサブスクライバーに移動します。 -ディストリビューション エージェントは、プッシュ サブスクリプションの場合はディストリビューターで実行され、プル サブスクリプションの場合はサブスクライバーで実行されます。 ***マージ エージェント [#y1668d17] http://technet.microsoft.com/ja-jp/library/ms147839.aspx -マージ エージェントは、マージ レプリケーションで使用されます。 -マージ エージェントは、初期スナップショットをサブスクライバーに適用し、データの増分変更を移動および調整します。 -マージ サブスクリプションごとにマージ エージェントがあり、パブリッシャーとサブスクライバーの両方に接続し、両方を更新します。 -マージ エージェントは、プッシュ サブスクリプションの場合はディストリビューターで実行され、プル サブスクリプションの場合はサブスクライバーで実行されます。 -既定では、マージ エージェントはサブスクライバーからパブリッシャーに変更をアップロードし、パブリッシャーからサブスクライバーに変更をダウンロードします。 ***キュー リーダー エージェント [#u15f2c8f] http://technet.microsoft.com/ja-jp/library/ms147378.aspx -キュー リーダー エージェントは、キュー更新オプションによるトランザクション レプリケーションで使用されます。 -このエージェントはディストリビューターで実行され、サブスクライバーで行われた変更をパブリッシャーに戻します。 -ディストリビューション エージェントやマージ エージェントとは異なり、キュー リーダー エージェントは 1 つのインスタンスだけで、ディストリビューション データベースのすべてのパブリッシャーおよびパブリケーションに対応します。 ***レプリケーション メンテナンス ジョブ [#keac3982] -レプリケーションには、定期的なメンテナンスや要求時メンテナンスを実行する多数のメンテナンス ジョブがあります。 *詳細 [#c767b6a2] **レプリケーションの定義 [#ra40908a] +パブリケーションを作成し、 +アーティクルを定義する。 +サブスクリプションの作成 -アーティクルの種類の指定 (レプリケーション Transact-SQL プログラミング)~ https://msdn.microsoft.com/ja-jp/library/ms147873.aspx~ --レプリケーションにおける既定の種類のアーティクルはテーブル アーティクル --ビュー、ストアド プロシージャ、ユーザー定義関数、ストアド プロシージャ実行など、他のデータベース オブジェクトもパブリッシュできる。 ***パブリッシュ [#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 ***サブスクライブ [#f9f807d0] パブリケーションのサブスクライブ~ http://msdn.microsoft.com/ja-jp/library/ms151170.aspx -プッシュ サブスクリプションの作成 -プル サブスクリプションのプロパティの表示または変更 -プッシュ サブスクリプションのプロパティの表示または変更 -プル サブスクリプションの削除 -プッシュ サブスクリプションの削除 ***参考 [#f268f4da] -SQL Server 2005 自習書シリーズ~ http://technet.microsoft.com/ja-jp/sqlserver/cc721623.aspx~ ※「管理編」にレプリケーションの自習書があります。 -データベースアクセスツール 技術ブログ ~ http://www.climb.co.jp/blog_dbmoto/archives/472 *参考情報 [#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] -フェールオーバー クラスタリング --Windows Server フェールオーバー クラスタリング (WSFC) と SQL Server~ http://technet.microsoft.com/ja-jp/library/hh270278.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 -データベース ミラーリング --データベース ミラーリング エンドポイント~ 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 -ログ配布 --ログ配布について~ http://technet.microsoft.com/ja-jp/library/ms187103.aspx >SQL Server のログ配布を使用すると、トランザクション ログ バックアップを、プライマリ サーバー インスタンスのプライマリ データベースから、別のセカンダリ サーバー インスタンスの 1 つ以上のセカンダリ データベースに自動的に送信できます。トランザクション ログ バックアップはセカンダリ データベースごとに個別に適用されます。オプションで用意する 3 台目のサーバー インスタンス (監視サーバー) では、バックアップ操作と復元操作の履歴と状態が記録されます。また、これらの操作がスケジュールどおりに実行されなかった場合に警告を通知することもできます。