みなさん、こんにちは。サニービュー事業部の小寺です。

Amazon RDS for PostgreSQL は、PostgreSQL 14でカスケードされた読み取りレプリカをサポートするようになりました。

https://aws.amazon.com/jp/about-aws/whats-new/2022/05/amazon-rds-postgresql-cascaded-read-replicas-30x-capacity/

ストリーミングレプリケーションについて

PostgreSQLの標準機能であるストリーミングレプリケーションは、プライマリーサーバーで更新された情報を、リアルタイムでスタンバイサーバーに転送することで、プライマリーとスタンバイのデータベースを同じ状態に保つことができます。

PostgreSQLは、クラッシュリカバリーやロールバックに備え、プライマリーサーバーの更新情報をトランザクションログ(以降、WAL)として保存します。ストリーミングレプリケーションは、リアルタイムにこのWALをスタンバイサーバーへ転送し、スタンバイサーバーでそのWALを適用します。
ストリーミングレプリケーションは、「1対N」の構成で利用することができます。
プライマリーから全スタンバイサーバーにWALを転送するのがマルチスタンバイ、スタンバイからまた別のスタンバイにWALを転送するのが、この後に出てくるカスケードレプリケーションです。

カスケードリードレプリケーションについて

カスケードレプリケーションについて、耳にされたことはあるでしょうか。カスケードレプリケーションは多段レプリケーションとも呼ばれています。
PostgreSQLでカスケードレプリケーションについては、以下のイメージです。

master ==> slave1 ==> slave2

slave1はslave2にとってのmasterでもあり、稼働系→待機系→待機系と切り替えをすることができます。

スタンバイサーバから他のスタンバイにレプリケーション接続し、WALを送信することができます。 マスターサーバへ直接の接続を減らしたり、サイト相互の帯域オーバヘッドを最小化するために使用することができます。

カスケードスタンバイはマスターから受け取ったWALだけでなく、アーカイブからリストアしたWALも送信します。
このため、レプリケーション接続が上流サーバで切断しても、ストリーミングレプリケーションは下流サーバへ新しいWAL レコードがある限り継続します。

アップデートでのうれしいこと

本アップデートによりPostgreSQL14.1以降では、カスケードレプリケーションを利用することができます。
PostgreSQLでは元々あった機能なので、RDSにも対応がされるようになりました。

Amazon RDSのインスタンスが持てるレプリカは最大5までです。しかし、3段まで多段レプリケーションが構成できるので、レプリカを最大で 5 x 31 = 155インスタンス作ることができるようになりました。

そのため、参照系のインスタンスが約30倍の速度で、パフォーマンスが大幅に改善されています。
また、シングルAZまたはマルチ AZ カスケードリードレプリカ DB インスタンスを同じリージョンに作成することも、別のリードレプリカインスタンスから任意のクロスリージョンに作成することもできるため、より堅牢な構成を取ることができるようになっています。

ストリーミングレプリケーションのバージョン間の違いについて

Amazon RDS for PostgreSQLでは、元々のPostgreSQLのストリーミングレプリケーションの機能も利用しています。

PosgreSQL14.1以上とPostgreSQL13での違いとしては、PostgreSQL14.1以上では、マスターのデータベースのWALデータが削除されるのを防ぐために、レプリケーションのスロットが使われます。 PostgreSQL13では、WALを保存するためにS3を使っていますが、追加でスロットが利用できるようになりました。

https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/USER_PostgreSQL.Replication.ReadReplicas.htmlより引用

後は、本アップデートに関連するパラメータです。

max_wal_senders:待機系データベースの数
wal_keep_segments:アーカイブログの最小保持数
max_slot_wal_keep_size:-1 (デフォルト)なら、レプリケーションスロットは無制限のWALファイルを残します

まとめ

DR目的でセカンダリリージョンにスタンバイとして利用したり、読み取りパフォーマンスの向上のメリットがあるので、
本アップデートであるPostgreSQL14.1以上のカスケードレプリケーションは有効です。

AWSをご利用いただくには、直接契約するより断然お得。
AWS利用料が5%割引、さらに日本円の請求書による支払いが可能です!