.net column

.NET開発者のためのブログメディア
サーバーの同期

SQL Serverの同期ができる。レプリケーションの仕組みと種類をご紹介!

2020年07月31日

障害に備えてバックアップを作成するなど、データの保護はシステム開発において必須といえます。
バックアップ以外にもデータを復旧させる手段は用意されており、その一例がレプリケーションです。レプリケーションとバックアップの違いを含めて、ここではレプリケーションの概要を解説していきます。

SE
レプリケーションって初めて聞きました。具体的にどういったことを指すのでしょうか?
PM
レプリケーションは「複製」ともいわれます。2基のハードウェアの状態を同期させて、片方がシステム障害を起こしても、もう片方ですぐにシステムを復旧させることができます。

レプリケーションとバックアップの違い

バックアップとレプリケーションはデータを守るという観点では同じですが、それぞれの意味は異なります。

バックアップ

バックアップは任意のタイミングで、データやシステム全体などを元ある場所とは別の場所に保存しておくことです。別の場所として、バックアップ専用のハードウェア(ストレージ)を準備して対応します。

任意の時点でのデータを復旧できますが、最終バックアップから障害が発生するまでのデータを復旧できない点は注意が必要です。またバックアップの取得は、システムが稼働していない夜間や休日にするのが一般的です。

レプリケーション

レプリケーションとは、複製(レプリカ)することです。「稼働系・待機系」といわれる2基のハードウェアを含めた環境を準備し、それらの間では、常に同期がとられている状態にします。そのため、稼働系のシステムに不具合が発生しても、すぐに待機系に切り替えることで、容易にシステムを復旧させることが可能です。

しかし、その一方で注意も必要です。稼働系のデータはリアルタイム(若干のデータ遅延あり)で待機系のデータを更新しますので、特定の状態に戻すといったことができません。誤って消去してしまったファイルなども、元の状態に戻すことは不可能です。

こうした理由から、レプリケーションと同時にバックアップを行うことも忘れてはいけません。

レプリケーションの仕組みをパブリッシングモデルで解説

出版社

レプリケーションの仕組みを理解するためには、それぞれの用語の意味を把握することが必要です。
※()内の文言はマイクロソフトの公式サイトと同様に、雑誌に例えた表現です。

    • ■パブリッシャ(出版社)

ソースデータベースを保持しています。すべての変更内容をディストリビュータに送ります。

    • ■ディストリビュータ(流通業者)

メタデータやトランザクションなどをディストリビューションデータベースに格納します。スナップショットレプリケーション、トランザクションレプリケーションにおいて、ディストリビュータは、重要な役割を担っています。通常はパブリッシャ(出版社)と同一のサーバに設定していますが、不可分散を行いたい場合には、別のサーバーを準備して対応することもあります。

    • ■サブスクライバ(購読者)

データのコピーを保持し、変更を受け取ります。設定によっては、変更後のデータをパブリッシャに戻し、ほかのサブスクライバへ変更データをレプリケーションすることも可能です。

    • ■アーティクル(記事)

テーブルやストアドプロシージャ、ビュー、ユーザー定義関数、フィルタされた部分を指します。

レプリケーションの種類

SQL Serverではいくつかの種類のレプリケーションが準備されています。

種類説明
トランザクションレプリケーション変更されたデータのみが配布されます。トランザクションの順序は維持され、競合も発生しません。
スナップショットレプリケーション転送元データ全体のスナップショットに置き換わります。
マージレプリケーション複数のサイトがそれぞれで変更した情報をマージします。トランザクションの順序は維持されず、競合も発生する恐れがあります。
SE
レプリケーションもバックアップもどちらも大切なのですね。顧客のデータを守るためにも、併用したいと思います。
PM
データやアプリケーションを守るためには、二重三重と念には念を入れて対応を行うべきです。しっかりと意識しておきましょう。

レプリケーションも設定して、念には念を入れた対策を!

バックアップをこまめに行っているエンジニアも多いと思います。バックアップにプラスαとしてレプリケーションも追加して、システム障害に対応できる準備はしておきましょう。システムはどんなことで突然起動できなくなるか分かりません。できる対策は多めにしておいて損はないでしょう。

>>>SQL Serverの案件を探すならFEnet .NET Navi


.NET分野でのキャリアアップをお考えの方は、現在募集中の求人情報をご覧ください。

求人一覧

また、直接のエントリーも受け付けております。

エントリー(応募フォーム)