【AWS】RDSのレプリケーションについて解説します。

世の中の多くのシステムは、データベースが壊れるとシステム全体が止まってしまいます。そのため、データベースが止まらないように設計・運用する必要があります。Amazon RDSはAWSが提供しているデータベースサービスです。サービスと付くのには理由があり、それはRDSが高可用性や耐障害性を実現しているためです。ここでは、RDSのレプリケーションについて解説していきます。

■そもそもレプリケーションとは

レプリケーションとは、「複製(レプリカ)を作る」という意味です。同じネットワーク内や遠隔地にサーバーを設置して、リアルタイムでデータをコピーする技術のことを指します。マスターのデータベースと全く同じ内容のデータベースを作成できるため、負荷分散やホットスタンバイに有効な手段として普及しています。万が一障害が起こっても、システムを停止させることなく継続でき、予備を遠隔地に置くことで広域災害時の対策としても有効です。その反面、予備にほぼ同じシステムが必要になるため、初期投資がかかるという欠点もあります。また、ウイルスなどに感染してデータが破壊されると、その破壊されたデータもそのままレプリケートされてしまうというリスクもあります。

■バックアップとの違い

バックアップは、ある時点(静止点)のファイルやアプリケーション、またはそれらを含むシステム全体を別の場所に保存することです。バックアップは静止点を記録する関係上、業務が動いていない夜間帯や、時期を設定して定期的に行われることが多く、用途やニーズに合わせて一定期間を保持します。バックアップでは、サーバーやストレージなど対象となるハードウェアとは別のバックアップ専用ハードウェアにデータをコピーするのが一般的です。

◇メリット比較◇

レプリケーション
・システム復旧までの時間を最小限にすることが可能
・バックアップで対応できない大容量でも、複製を置くことができる

バックアップ
・任意の時点を指定してシステム復旧できる

◇デメリット比較◇

レプリケーション
・任意の時点を指定したシステムを復旧できない

バックアップ
・最終バックアップ以降の更新データは復元不可
・バックアップのための作業負荷が継続的に発生する
・日単位でシステム停止を余儀なくされる場合がある

■RDSのレプリケーション

AWSのRDSでは、マルチAZ構造と言いマスターと呼ばれる実際にデータ処理が行われるRDSインスタンスと、そのインスタンスがあるAZとは別のAZにスレーブと呼ばれる別のRDSインスタンスが自動的に用意され、そこにデータを複製することで可用性を高めています。細かな設定をせずとも、このようなレプリケーションが利用できるのは、RDSの特徴のひとつです。

■同期レプリケーション

RDSのマルチAZは、データベースの障害時の影響を最小化するために同期レプリケーションを行っています。これは、マスターへの変更後にスレーブを変更し確定してから反応するという流れです。よって、マスターとスレーブ間の通信の分だけ遅くなってしまいますが、RDSはデータセンター間を高速な回線で繋ぐことで数msの遅延と非常に高速です。RDSのようなマルチAZ構造において同期レプリケーションは非常に便利なシステムです。

■リードレプリカ(Read Replica / 非同期レプリケーション)

そもそもリードレプリカとは、読み込み専用として利用することができるマスターの複製データベースを指します。Amazon RDSでは、マスターのDBインスタンスのデータを非同期にレプリケーションする機能としてこのリードレプリカを提供しています。リードレプリカの場合、DBインスタンスに対して直接アクセスすることが可能です。

読み込みが多いアプリケーション等に有効ですが、非同期のため常にマスターと完全に内容が一致しているわけではなく、常に最新のデータが取得できるということはできません。しかし、マスターの読み取りにかかる負荷を軽減でき、これによりマスターのパフォーマンスが向上するため、マスターの負荷分散として多く利用されています。

【様々なパフォーマンスの向上オプション】
・レプリカDBで読み取り処理をスケールアウト(リードレプリカは5台まで増設可能)
 ※Auroraは15台まで
・マルチAZとの併用やクロスリージョン対応も可能
・インスタンスやストレージをマスターと異なるタイプに設定可能
・リードレプリカはスタンドアロンのDBインスタンスに昇格可能
・MySQL、MariaDBではパラメータ設定で書き込みも可能
・MySQL、MariaDB、PostgreSQL、Auroraに対応
・AWS Database Migration Service(DMS)によりOracle、SQL Serverでも実現可能

■論理レプリケーションと物理レプリケーション

RDSのマルチAZは、マスターとスレーブ間で物理レプリケーションを行っています。これは、トランザクションが完了する前のマスターへのページ書き込みが起こったタイミングでスレーブにも並行で書き込みを行うため高速で、DRBDの仕組みに似ています。RDSは、InnoDBを使用しており、電源やネットワーク障害が発生した場合にデータの整合性を保ちます。また、論理レプリケーションは、マスターに対するSQL文等のトランザクションレベルの操作をスレーブにも行います。

【物理レプリケーション】
・データべースエンジンがMySQL、MariaDB、PostgreSQL、Oracleの時に選べるのは物理レプリケーション
・スレーブのデータをマスターに合わせて最新の状態に維持
・AWSが提供している機能
・データベース作成時にマルチAZ配置にするか選択することで適用される

【論理レプリケーション】
・データべースエンジンがSQLServerの場合は論理レプリケーション
・スタンバイしているデータをプライマリに合わせて最新の状態に維持、という機能は物理レプリケーションと同じ
・SQLServerが提供しているミラーリングテクノロジーという方法で実現している
 。ミラーリングの場合はマスター/スレーブをプリンシパルサーバー/ミラーサーバーと呼ぶ
 。コミット済みのトランザクションのデータをスレーブに反映

~参考~

DRBD
DRBD (Distributed Replicated Block Device)とは、ネットワークを通じてハードディスク(ブロックデバイス)をリアルタイムに複製(レプリケート)するソフトウェアの総称。クラウド上なので、ラック設置などの物理的な運用はもちろん、パッチ更新やレプリケーション、リードレプリカの作成、さらに作成後にサーバのスペックを変更できたり、ストレージの容量を増やせるなどの特徴がある。

InnoDB
MySQL ABが配布している全てのバイナリに標準搭載されている、MySQLのためのデータベースエンジン。

■まとめ

バックアップと目的は近いものはありますが、それぞれの仕様によりメリットやデメリットがあるため、システム構築時は用途の精査も重要になります。同期や非同期、物理や論理レプリケーションについてイメージが掴めましたでしょうか。RDSの特徴をしっかりおさえて、ノンストップでノンメンテナンス、ノンアドミンなデータベース環境を利用しましょう。

参考文献:
https://qiita.com/sr-mtmt/items/c063201f7fa1f7abf4bd
http://itlib1.sakura.ne.jp/test380/pdfichuran/0453/015-Amazon-RDS.pdf
https://dev.classmethod.jp/articles/amazon-rds-replication/

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です