Database

PostgreSQL の Database を作成し、手元の client から接続するまでの手順です。接続には acloud db proxy を使います。

始める前に

作成する

Console では Project の「資源」から「Database を作成」を開きます。CLI では次のとおりです。

acloud db create main --display-name "Main" --project PROJECT_ID
acloud db describe main

作成は Operation として受け付けられ、しばらく PENDING のままのことがあります。応答を受け取れなかった場合は、同じコマンドをもう一度実行します。止まった Operation は次のコマンドで再送できます。

acloud operations list
acloud operations retry OPERATION

接続する

acloud db proxy は手元に port を開き、Database の接続 gateway へ中継します。短時間だけ有効な client 証明書と、Database の login(user、password、dbname)を取得し、期限が近づくと次の接続前に更新します。鍵と証明書はメモリにだけ置き、ファイルに保存しません。

acloud auth login
acloud db proxy main --project PROJECT_ID --show-credentials

別の端末から、表示された dbname と user で接続します。gateway との間は proxy が暗号化するため、手元の接続では SSL を使いません。

psql "host=127.0.0.1 port=55432 sslmode=disable dbname=DBNAME user=USER"

接続方式を変える

PostgreSQL の接続方式には、client 証明書を必須にする相互 TLS(MTLS)と、user と password で接続できる TLS(TLS)があります。変更には roles/database.operator が必要です。

acloud db connection describe main
acloud db connection update main --tls-mode TLS --expected-tls-mode MTLS

メモリ上限を変える

変更できるのは 256〜2048 MiB のメモリ上限です。変更すると compute が再起動します。

acloud db configuration describe main
acloud db configuration update main --memory-limit-mi 1024

結果が不明な応答だった場合は、再実行する前に describe で現在の値を確かめます。

使用量を見る

Console では Database 詳細の「オブザーバビリティ」に表示します。読取には roles/database.viewer 以上が必要です。

acloud db metrics storage main
acloud db metrics network main --period 24h

通信量は gateway が中継した量です。報告の無い区間は 0 と区別して表示します。

削除する

acloud db delete main --project PROJECT_ID

削除には roles/database.operator が必要で、Owner だけではできません。削除すると credential が失効し、Platform には削除済みの記録が残ります。同じ ID は再利用できません。