💬

Cloud SQL for PostgreSQLでリードレプリカのサイズをプライマリインスタンスより小さくできるようになりました

2023/04/21に公開

はじめに

こんにちは、クラウドエース データML ディビジョン所属の田中です。

クラウドエースのITエンジニアリングを担うシステム開発部の中で、特にデータ基盤構築・分析基盤構築からデータ分析までを含む一貫したデータ課題の解決を専門とするのがデータML ディビジョンになります。

データML ディビジョンでは活動の一環として、毎週 Google Cloud の新規リリースを調査・発表し、データ領域のプロダクトのキャッチアップをしています。その中でも重要と考えるリリースを本ページ含め記事として公開しています。

今回紹介するリリースは、「Cloud SQL for PostgreSQL にて、リードレプリカのCPU・RAMのサイズを、プライマリインスタンスのそれより小さくできる機能」が追加されたことについてです。
これにより、リードレプリカの使用量に応じてマシンタイプを選択できるようになり、より柔軟な運用が可能になります。

Cloud SQL for PostgreSQL の概要

PostgreSQLを用いたリレーショナルデータベースを、Google Cloud 上のフルマネージドプラットフォームにて実行できるサービスです。

リリース内容

今回、ご紹介するリリースは2023年3月21日付で発表された Cloud SQL for PostgreSQL における、という追加機能についてです。

該当リリースノートはこちらからご覧ください

あらためて追加機能について説明いたします。

Cloud SQL for PostgreSQL にてリードレプリカを作成する際、今回のリリースまではリードレプリカのCPUサイズやRAMのサイズを、プライマリインスタンスと同じもしくはそれ以上のサイズにしなければなりませんでした。

しかし、今回のリリースによってこの制限が解除され、リードレプリカのCPUやRAMのサイズをプライマリインスタンスより小さくすることができるようになります。これにより、リードレプリカのワークロードに応じたインスタンスの選択が可能になります。

また、このリードレプリカをプライマリインスタンスに昇格させる必要がある場合など、リードレプリカのサイズを大きくしたいという要求にも対応できます(ただし、インスタンスの再起動を伴います)。

この機能のリリースによってリードレプリカのサイズを柔軟に選べるようになりましたが、注意点もあります。必要以上にインスタンスのサイズを小さくしてしまうとメモリ不足(Out-of-Memory)が頻繁に発生するなど、パフォーマンスが低下してしまうことが考えられます。

このような状況を防ぐために、CPUやRAMの使用状況を適切にモニタリングすることが必要です。

加えて Cloud SQL for PostgreSQL では、プライマリインスタンスのmax_connectionsフラグを設定しない場合、Cloud SQL が自動的にその値を設定します。リードレプリカのmax_connectionsの値はプライマリの値と少なくとも同じでなければならないため、自動的に設定されたmax_connectionsの値をプライマリインスタンスより小さいサイズのリードレプリカが継承することがありえます。このようなケースでmax_connections設定を利用してリードレプリカへの接続数を制限した場合、インスタンスのマシンタイプに比べて大きな数字が割り振られたことで、過負荷になってしまう可能性があります。レプリカインスタンスのサイズを大きくする、クライアントアプリ側で接続数をmax_connections以下に制限する、プライマリとレプリカのmax_connectionsを適切な値に設定する、などの手段を考慮する必要があります。

確認してみた

概要

上記にて説明しましたとおり、リードレプリカのサイズを小さくする新機能がGoogle Cloud に追加されました。
そこで今回は、Google Cloud コンソールにて、プライマリインスタンスより小さいリードレプリカのサイズが選べることを Google Cloud上で確認してみましょう。

手順

  1. Google Cloud コンソールにログインし、Cloud SQL のページから「インスタンスを作成」ボタンをクリックします。

alt

  1. PostgreSQL を選択します。

alt

  1. 次の画面で、インスタンスの名前やパスワードを設定し、プライマリインスタンスを作成します。ページ下部の「インスタンスのカスタマイズ」から構成オプションを表示させることができ、ここで明示的にスペックを指定することができます。今回は 4 CPU, 26GB RAM の構成で作成してみます。

alt

  1. プライマリインスタンスが作成された後、リードレプリカの作成を行います。

alt

  1. リードレプリカを作成する際も、ページ下部の「インスタンスのカスタマイズ」から構成オプションを表示させることができ、ここで明示的にスペックを指定することができます。下の画像のように、デフォルトではプライマリインスタンスと同じ値が指定されています。

alt

  1. マシンタイプを展開し、「カスタム」を選択すると、vCPU の数や RAM の大きさを自分で設定できます。ここで画像のように、今回のプライマリインスタンスより小さいサイズのものを指定し、レプリカを作成してみます。

alt

  1. この設定で無事にリードレプリカが作成されることを確認できました。

alt

まとめ

今回は Cloud SQL for PostgreSQL にて、リードレプリカのCPU・RAMのサイズを、プライマリインスタンスのそれより小さくできる機能をご紹介しました。

リードレプリカの柔軟な運用ができて便利な反面、実際に運用する際には適切なサイズ設定が必要になるため、よく考慮した上での使用が必要です。

Discussion