レプリケーション(replication)とは、その単語の意味のとおり『複製する』という意味です。データベースにおけるレプリケーションとは、データベースの内容を他の場所やシステムにコピーするプロセスのことを指します。
AWSにおけるレプリケーション
AWSが提供しているRDSにおいては、データベースのレプリケーションに関する設定が数クリックでできるようになっています。一方で、レプリケーションの形式には『マルチAZ』と『リードレプリカ』の2種類が存在しています。これらの使い分けを理解することで、アプリケーションのパフォーマンスや可用性を大幅に向上させることができます。
マルチAZ
「AZ」は「Availability Zone」の略で、AWSのデータセンターが存在する独立した物理的な場所を指します。各AZ同士は物理的に独立しており、それぞれ異なる電源、冷却装置、ネットワークを持つことで、障害が発生したとしても他のAZには影響が及びにくい設計となっています。
マルチAZとは、その言葉のとおり、データベースを異なる物理的な場所にある複数のデータセンター (AZ) に配置する仕組みのことを指します。具体的には、ユーザーが選択するプライマリDBインスタンスと、それとは異なるAZに自動的に作成されるスタンバイDBインスタンスといった、2つ以上のDBインスタンスが作られます。
これらのインスタンス間でデータは常に同期されています。この仕組みは、一つのAZがダウンした際にもデータベースが動作し続けることを保証します。
リードレプリカ
リードレプリカは、メイン(プライマリ)データベースから非同期でデータをコピーするセカンダリ(またはレプリカ)データベースを作成する機能です。このレプリカデータベースは、読み取り専用として使用されるため、「リードレプリカ」と呼ばれます。マルチAZと違って、レプリケーションを行っているデータベースを同一AZに置くことも可能です。
同期方法
マルチAZは同期でレプリケートされますが、リードレプリカは非同期でレプリケートされる仕様となっています。
データベースにおける同期レプリケーションは、一方のデータ更新がレプリケーション先に反映されるまで、データの読み取りや更新は行われないようになっています。非同期のレプリケーションは片方のレプリケーション処理が終わらなくても、読み取りの処理が行われます。したがって、極端な場合、プライマリデータベースとリードレプリカの間にわずかな期間の間、データの差分が生じる可能性があります。
目的の違い
マルチAZ
- 高可用性を担保する目的…一つのAZやハードウェアに問題が発生しても、自動的に別のAZのスタンバイDBインスタンスに切り替わるため、サービスの中断時間を大幅に短縮することができます。
- データ保護…マルチAZはデータベースのデータを自動的にバックアップし、それを異なるAZに保持するため、データの損失リスクを大幅に低減します
リードレプリカ
- パフォーマンスの向上…アプリケーションが大量の読み取りクエリを発行する場合、プライマリデータベースだけに頼ると、パフォーマンスに影響を及ぼす可能性があります。リードレプリカを使用することで、全体の読み取り性能を向上させることができます。
- 負荷分散…レポートやデータ分析を行う際に、プライマリデータベースに負荷をかけたくない場合、リードレプリカを使用してこれらのクエリを実行することができます。
この記事は役に立ちましたか?
もし参考になりましたら、下記のボタンで教えてください。
コメント