PostgreSQL インスタンスのオペレーション ガイドライン

クラウド SQL SLA 契約では、「Google の合理的な制御が及ばない要因によって発生する」停止は除外されます。このページでは、Cloud SQL インスタンスの停止の原因になる可能性があり、除外されるユーザー制御構成の一部について説明します。

はじめに

Cloud SQL は、インスタンスの構成を可能な限り詳細に制御できるようにしています。これには、負荷やその他の構成パラメータに応じて、インスタンスのダウンタイムのリスクを高めるいくつかの構成も含まれます。インスタンスが停止し、Cloud SQL が、このページで説明されているオペレーション制限に準拠していないと判断した場合、ダウンタイム期間が Cloud SQL SLA 契約の対象外になります(または SLA の対象としてカウントされません)。

このオペレーション制限のリストは、どのような構成にこうしたリスクがあるのか、これらの構成のいずれかに誤って移行することを避ける方法、およびビジネス環境でそのような構成が必要な場合にリスクを軽減する方法をお知らせするために掲載しています。

除外される構成

除外される構成は、次のカテゴリに分類されます。

  • 一般的な構成要件
  • データベース フラグ値
  • リソースの制約

一般的な構成要件

少なくとも 1 つの専用 CPU によって高可用性を実現するように構成された Cloud SQL インスタンスのみが SLA の対象となります。共有コア インスタンスとシングルゾーン インスタンスは、SLA の対象外です。

データベース フラグ値

Cloud SQL では、データベース フラグを使用してインスタンスを構成できます。これらのフラグのいくつかは、安定性やインスタンスまたはそのデータの耐久性を損なうおそれのある方法で設定されることがあります。

次の表に、SLA から除外される値を持つフラグを示します。

フラグ 説明 除外される設定 発生する可能性のある影響 緩和策
autovacuum 自動バキューム ランチャー デーモンを有効にします。 オフ データベース コマンドの無効化に対するトランザクション ID のラップアラウンド。 autovacuum フラグをオンに設定します。
max_connections データベース サーバーへの同時接続の最大数を設定します。 インスタンスのメモリサイズに応じたデフォルト値よりも大きい。 詳細 メモリ不足(OOM)エラーによるインスタンスの停止。 デフォルト設定のままにします。 より多くのクライアント接続が必要な場合は、接続プーリングを使用します。
checkpoint_timeout 自動ログ先行書き込み(WAL)チェックポイント間の最大時間を設定します。 デフォルト値より大きい。 クラッシュ後の再起動またはフェイルオーバーが遅い デフォルト設定のままにします。
max_wal_size 自動 WAL チェックポイント間に WAL が増加するように最大サイズを設定します。 デフォルト値より大きい。 クラッシュ後の再起動またはフェイルオーバーが遅い。 デフォルト設定のままにします。
autovacuum_freeze_max_age, autovacuum_multixact_freeze_max_age これは、PostgreSQL が攻撃的な反ラップアラウンド バキュームを実行するタイミングを決定します。 デフォルトより 2 倍以上のもの。 値が大きすぎると、反ラップアラウンド バキュームの開始が、時間内に大量の関係をクリーンアップできなくなり、その結果、インスタンスはデータ操作言語(DML)コマンドを受け入れなくなります。 バキュームの遅延が必要ないように、他ののパラメータを調整します。

挿入専用テーブルでは、定期的な manual バキュームをスケジューリングすることが必要な場合があります。

PostgreSQL 13 以降、autovacuum は挿入専用ワークロードで実行するように設定することもできます。

リソースの制約

SLA が適用されるようにするには、次のリソース制約を回避する必要があります。

制約 説明 検出 対処方法 予防策
ストレージがいっぱいである インスタンスのストレージが不足していてストレージの自動増量機能が有効になっていない場合、インスタンスはオフラインになります。この停止は SLA の対象となりません。 インスタンスが使用しているストレージの量は、Cloud Console のインスタンスの詳細ページで確認できます。詳細

ストレージの使用状況をモニタリングし、指定されたしきい値でアラートを受信するために、Stackdriver アラートを設定します。詳細については、こちらをご覧ください。

インスタンスのストレージ サイズを増やします。ストレージのサイズは増やすことができますが、減らすことはできません。 インスタンスのストレージの自動増量を有効にします。詳細については、こちらをご覧ください。
CPU オーバーロード 6 時間にわたって CPU 使用率が 98% を超える場合、インスタンスはワークロードに適切なサイズではなく、SLA の対象となりません。 使用可能な CPU のうち、インスタンスが使用している割合は、Cloud Console のインスタンスの詳細ページで確認できます。詳細

CPU の使用率をモニタリングし、指定されたしきい値でアラートを受信するために、Stackdriver アラートを設定します。詳細については、こちらをご覧ください。

インスタンスの CPU 数を増やしてください。階層を変更するには、インスタンスを再起動する必要があります。

インスタンスがすでに CPU の最大数に達している場合は、データベースを複数のインスタンスにシャーディングします。

CPU 使用率をモニタリングし、必要に応じて増やします。インスタンス階層を変更するには、再起動が必要です。
メモリの過負荷 6 時間にわたってメモリ使用率が 90% を超える場合、インスタンスはワークロードに適切なサイズではなく、SLA の対象となりません。 使用可能なメモリのうち、インスタンスが使用している割合は、Cloud Console のインスタンスの詳細ページで確認できます。詳細については、こちらをご覧ください。

メモリの使用率をモニタリングし、指定されたしきい値でアラートを受信するために、Stackdriver アラートを設定します。詳細については、こちらをご覧ください。

インスタンスのメモリサイズを増やします。階層を変更するには、インスタンスを再起動する必要があります。インスタンスがすでに最大メモリサイズになっている場合は、データベースを複数のインスタンスにシャーディングします。 メモリ使用率をモニタリングし、必要に応じて増やします。インスタンス階層を変更するには、再起動が必要です。
トランザクション ID ラップアラウンド インスタンスのトランザクション ID がなくなると、インスタンスはオフラインになりますが、この停止は SLA の対象となりません。 インスタンスのトランザクション ID の使用状況は、Cloud Console のインスタンスの詳細ページで確認できます。詳細

トランザクション ID の使用状況をモニタリングし、指定されたしきい値でアラートを受信するために、Stackdriver アラートを設定します。詳細

データベース インスタンスのチューニングとモニタリングは、バキュームに関する問題の軽減または回避に役立ちます。> 詳細 インスタンスのトランザクション ID の使用状況をモニタリングします。インスタンスのワークロードに応じて、autovacuum パラメータを有効にして調整します。