このトピックでは、読み取り専用 ApsaraDB RDS for PostgreSQL インスタンスの概要について説明します。データベースシステムが少数の書き込みリクエストと多数の読み取りリクエストを受信する場合、1 つのプライマリ RDS インスタンスが読み取りリクエストによって過負荷になる可能性があります。1 つ以上の読み取り専用 RDS インスタンスを作成して、プライマリ RDS インスタンスから読み取りリクエストをオフロードできます。読み取り専用 RDS インスタンスは、データベースシステムの読み取り機能とアプリケーションのスループットを向上させるのに役立ちます。
概要
読み取り専用 RDS インスタンスを作成すると、システムはセカンダリ RDS インスタンスから読み取り専用 RDS インスタンスにデータをレプリケートします。これにより、プライマリ RDS インスタンスで実行されているワークロードの中断を防ぎます。プライマリ RDS インスタンスのデータが更新されると、更新はすべての読み取り専用 RDS インスタンスに自動的に同期されます。
プライマリ RDS インスタンスがプレミアムローカル SSD を使用している場合、最大 5 つの読み取り専用 RDS インスタンスを作成できます。プライマリ RDS インスタンスがクラウドディスクを使用している場合、最大 32 の読み取り専用 RDS インスタンスを作成できます。
プライマリ RDS インスタンスがプレミアムローカル SSD を使用している場合、その読み取り専用 RDS インスタンスは高可用性アーキテクチャで実行されます。
プライマリ RDS インスタンスがクラウドディスクを使用している場合、その読み取り専用 RDS インスタンスはシングルノードアーキテクチャで実行されます。このアーキテクチャでは、読み取り専用 RDS インスタンスのスタンバイとしてセカンダリ RDS インスタンスは提供されません。サービスの可用性を確保するために、複数の読み取り専用 RDS インスタンスを購入し、libpq または Java Database Connectivity (JDBC) を使用して自動フェールオーバーを実装することをお勧めします。詳細については、「自動フェールオーバーと読み書き分離を実装する」をご参照ください。データベースプロキシ機能を使用して、自動読み取り/書き込み分離を実装することもできます。詳細については、「データベースプロキシとは」をご参照ください。
次の図は、プライマリ RDS インスタンスとその読み取り専用 RDS インスタンスのトポロジを示しています。
シナリオ
プライマリ RDS インスタンスが過負荷になっている場合は、読み取り専用 RDS インスタンスを作成して読み取りリクエストを処理できます。これは、プライマリ RDS インスタンスからの読み取りリクエストのオフロードに役立ちます。
バックアップまたはメンテナンスが原因でプライマリ RDS インスタンスが一時的に使用できない場合は、読み取り専用 RDS インスタンスを使用して読み取りリクエストを処理できます。これは、業務継続性を確保するのに役立ちます。
レポート分析などのシナリオでは、読み取り専用 RDS インスタンスを使用して大量のデータをクエリおよび分析できます。これは、プライマリ RDS インスタンスには影響しません。
読み書き分離機能を使用する場合、読み取り専用 RDS インスタンスを使用して読み書きロックの競合を防ぎ、システムのパフォーマンスとスループットを向上させることができます。
課金ルール
読み取り専用 RDS インスタンスは、サブスクリプションと従量課金の課金方法をサポートしています。サブスクリプションの読み取り専用 RDS インスタンスの料金の詳細については、ApsaraDB RDS の購入ページをご覧ください。従量課金の読み取り専用 RDS インスタンスの料金の詳細については、「読み取り専用 ApsaraDB RDS インスタンスのインスタンスタイプ」をご参照ください。
ハイライト
リージョンとゾーン: 読み取り専用 RDS インスタンスは、プライマリ RDS インスタンスと同じリージョン内にありますが、異なるゾーンに配置できます。
ネットワークタイプ: 読み取り専用 RDS インスタンスのネットワークタイプは、プライマリ RDS インスタンスのネットワークタイプと異なる場合があります。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスのネットワークタイプを変更する」をご参照ください。
アカウントとデータベースの管理: 読み取り専用 RDS インスタンスのアカウントとデータベースは、プライマリ RDS インスタンスから同期されます。読み取り専用 RDS インスタンスでデータベースまたはアカウントを管理する必要はありません。
IP アドレスホワイトリストの管理: 読み取り専用 RDS インスタンスを作成すると、システムはプライマリ RDS インスタンスの IP アドレスホワイトリストを読み取り専用 RDS インスタンスに自動的にレプリケートします。ただし、読み取り専用 RDS インスタンスの IP アドレスホワイトリストは、プライマリ RDS インスタンスの IP アドレスホワイトリストとは無関係です。読み取り専用 RDS インスタンスの IP アドレスホワイトリストを変更する場合は、「IP アドレスホワイトリストを設定する」に記載されている手順に従ってください。
監視とアラート: 読み取り専用 RDS インスタンスのパフォーマンスメトリックを監視できます。メトリックには、ディスク使用量、IOPS、接続数、CPU 使用率が含まれます。メトリックの監視データはチャートで提供されます。
読み書き分離: 読み書き分離機能はデータベースプロキシ機能と連携して、システムが書き込みリクエストをプライマリ RDS インスタンスに転送し、読み取りリクエストを読み取り専用 RDS インスタンスに転送できるようにします。これにより、プライマリ RDS インスタンスの負荷が軽減されます。プライマリ RDS インスタンスのデータベースプロキシ機能を有効にする方法の詳細については、「データベースプロキシとは」をご参照ください。
読み取り専用 RDS インスタンスの数: プライマリ RDS インスタンスがクラウドディスクを使用している場合、最大 32 の読み取り専用 RDS インスタンスを作成できます。プライマリ RDS インスタンスがプレミアムローカル SSD を使用している場合、最大 5 つの読み取り専用 RDS インスタンスを作成できます。
使用上の注意
データバックアップ: 読み取り専用 RDS インスタンスのバックアップポリシーを設定したり、手動でバックアップを作成したりすることはできません。これらの操作は、プライマリ RDS インスタンスで実行されます。
データ移行: 読み取り専用 RDS インスタンスにデータを移行することはできません。
データベース管理: データベースを作成または削除することはできません。
アカウント管理: 読み取り専用 RDS インスタンスでアカウントを作成したり、アカウントに権限を付与したり、アカウントのパスワードを変更したり、アカウントを削除したりすることはできません。
仕様とストレージ容量:
プライマリ RDS インスタンスがクラウドディスクを使用している場合、読み取り専用 RDS インスタンスのストレージ容量は、プライマリ RDS インスタンスのストレージ容量以上である必要があります。プライマリ RDS インスタンスのメモリ容量が読み取り専用 RDS インスタンスのメモリ容量よりも大きい場合、プライマリ RDS インスタンスの仕様変更中に読み取り専用 RDS インスタンスが再起動します。
プライマリ RDS インスタンスがプレミアムローカル SSD を使用している場合、その読み取り専用 RDS インスタンスの仕様とストレージ容量は、プライマリ RDS インスタンスの仕様とストレージ容量よりも小さくすることはできません。
読み取り専用 RDS インスタンスで予期しないエラー(データベースエンジン設定のレプリケートの失敗など)が発生した場合、システムは読み取り専用 RDS インスタンスを再構築します。
プライマリ RDS インスタンスがリリースされると、プライマリ RDS インスタンスのサブスクリプション読み取り専用 RDS インスタンスは自動的に払い戻されてリリースされ、従量課金の読み取り専用 RDS インスタンスは直接リリースされます。
FAQ
読み取り専用 RDS インスタンスの課金方法を変更できますか?
はい、読み取り専用 RDS インスタンスの課金方法を変更できます。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスを従量課金からサブスクリプションに切り替える」または「課金方法をサブスクリプションから従量課金に変更する」をご参照ください。
読み取り専用 RDS インスタンスの構成を変更したり、読み取り専用 RDS インスタンスをリリースしたり、読み取り専用 RDS インスタンスの課金方法を変更したりすると、読み取り専用 RDS インスタンスが接続されているプライマリ RDS インスタンスは影響を受けますか?
いいえ、プライマリ RDS インスタンスは影響を受けません。
プライマリ RDS インスタンスでアカウントを作成した後、プライマリ RDS インスタンスの読み取り専用 RDS インスタンスでアカウントを管理できますか?
いいえ、読み取り専用 RDS インスタンスのアカウントを管理することはできません。プライマリ RDS インスタンスで作成されたアカウントは読み取り専用 RDS インスタンスに同期され、読み取り専用 RDS インスタンスでは読み取り権限のみを持ちます。
読み取り専用 RDS インスタンスを、ディザスタリカバリ RDS インスタンスなどの通常の RDS インスタンスに変換できますか?
いいえ、読み取り専用 RDS インスタンスを通常の RDS インスタンスに変換することはできません。
読み取り専用 RDS インスタンスのデータをバックアップできますか?読み取り専用 RDS インスタンスは自動バックアップをサポートしていますか?
読み取り専用 RDS インスタンスをバックアップする必要はありません。バックアップはプライマリ RDS インスタンスで実行されます。ApsaraDB RDS for PostgreSQL では、スナップショットバックアップが使用され、プライマリ RDS インスタンスにパフォーマンスオーバーヘッドは発生しません。
読み取り専用 RDS インスタンスは並列レプリケーションをサポートしていますか?
ApsaraDB RDS for PostgreSQL では、物理レプリケーションを使用してデータを同期します。物理レプリケーションは、データ同期と再生に WAL ファイルを使用するため、並列レプリケーションよりも効率的です。
トランザクションログはどのように削除されますか?
RDS インスタンスの WAL ファイルがバックアップされると、AliPG はチェックポイント中にトランザクションログをクリアします。
読み取り専用 RDS インスタンスのデータレプリケーションのレイテンシに基づいて、レプリケーションが正常かどうかをどのように判断しますか?
ほとんどの場合、読み取り専用 RDS インスタンスのデータレプリケーションのレイテンシが 1 秒以下の場合、データレプリケーションは想定どおりに実装されます。読み取り専用 RDS インスタンスのデータレプリケーションのレイテンシが 1 秒を超える場合、データは特定のレイテンシでレプリケートされ、切断が発生する可能性があります。
プライマリ RDS インスタンスと読み取り専用 RDS インスタンス間のレプリケーションレイテンシの原因は何ですか?
次のセクションでは、一般的な原因と解決策について説明します。
原因: プライマリ RDS インスタンスの仕様が読み取り専用 RDS インスタンスの仕様よりも高い。
解決策: 読み取り専用 RDS インスタンスの仕様をアップグレードします。詳細については、「インスタンス仕様の変更」をご参照ください。
原因:
max_standby_streaming_delay
パラメータが正しく構成されていない。詳細については、「ApsaraDB RDS for PostgreSQL インスタンスのパラメータを変更する」をご参照ください。解決策:
max_standby_streaming_delay
パラメータの値を変更します。このパラメータを小さい値に設定すると、読み取り専用 RDS インスタンスがプライマリ RDS インスタンスからデータをレプリケートするレイテンシが短縮されます。ただし、パラメータの値が小さすぎると、読み取り専用 RDS インスタンスで実行されたトランザクションがキャンセルされる場合があります。
値が大きすぎると、レプリケーションレイテンシが発生する可能性があります。