Open6
【Google Cloud/GCP】Cloud SQLについて📝
ピン留めされたアイテム

CloudSQLのコストを抑える方法について📝
料金体系について
調整した後の状態📝
対応内容の詳細
ゾーンの可用性
- マルチゾーン -> シングルゾーン
マシンのコア/メモリ
- 8vCPU、32GB -> 4vCPU、16GB
バックアップ/ログ関連の変更
- バックアップの保持日数を7日 → 3日
- バックアップの保存先をマルチリージョン → シングルリージョン
- ログの日数を7日 → 3日
参考・引用📝

Cloud SQLについて📝

CloudSQLのDATABASE_URLの形式は?
Cloud SQL (PostgreSQL/MySQL) の接続文字列は 一般的な “スキーマ(方言)://ユーザー:パスワード@ホスト:ポート/データベース?オプション” という形ですが、
Cloud Run やコンテナ内から Cloud SQL Auth Proxy/Cloud SQL Connector を使う場合と、IP(パブリック/プライベート)で直接つなぐ場合とで書き方が少し変わります。代表的なパターンをまとめると下記のとおりです。
1. TCP (IP) で直接つなぐ場合
RDBMS | 例 | 備考 |
---|---|---|
PostgreSQL | postgresql://<USER>:<PASSWORD>@<IPアドレス>:5432/<DB_NAME>?sslmode=require |
✔︎ Cloud SQL インスタンスの パブリック/プライベート IP を指定 ✔︎ Cloud Run からプライベート IP でつなぐときは VPC コネクタを介して Private Service Connect を推奨 |
MySQL | mysql://<USER>:<PASSWORD>@tcp(<IPアドレス>:3306)/<DB_NAME>?charset=utf8mb4&parseTime=true&loc=Asia%2FTokyo |
loc= の値は URL エンコード必須 (Asia/Tokyo → Asia%2FTokyo ) |
Prisma で TCP 接続を使うならそのまま
DATABASE_URL=
に入れれば OK。SSL を必須にする場合、PostgreSQL は?sslmode=require
、MySQL は?tls=true
などのオプションを追加します。
2. Cloud SQL Auth Proxy/Connector(Unix ソケット)経由
Cloud Run 内で ❝/cloudsql/INSTANCE_CONNECTION_NAME❞ の Unix ドメインソケットをマウントして接続する形式です。IP を意識せず IAM + 自己署名 TLS で安全につながるので 公式推奨。
PostgreSQL
DATABASE_URL="postgresql://<USER>:<PASSWORD>@/cloudsql/<INSTANCE_CONNECTION_NAME>/<DB_NAME>?host=/cloudsql/<INSTANCE_CONNECTION_NAME>&sslmode=disable"
-
<INSTANCE_CONNECTION_NAME>
= PROJECT:REGION:INSTANCE(例:aiproduct-crowdchem:asia-northeast1:my-postgres
) -
sslmode=disable
は Unix ソケット接続時の定番。TCP で Proxy を使う場合はsslmode=require
が必要です。
MySQL
DATABASE_URL="mysql://<USER>:<PASSWORD>@unix(/cloudsql/<INSTANCE_CONNECTION_NAME>)/<DB_NAME>?charset=utf8mb4&parseTime=true&loc=Asia%2FTokyo"
-
unix(/cloudsql/…)
でソケットパスを指定するのが MySQL 方言の書式です。 - Prisma は
mysql://
のままunix(...)
句を解釈できます。
3. Prisma 固有のオプション(必要なら)
オプション | 主な用途 |
---|---|
connection_limit= |
Cloud Run で大量同時接続を避ける場合(例: ?connection_limit=5 ) |
pgbouncer=true |
pgbouncer 経由で接続するとき |
pool_timeout= |
Cloud SQL 側の idling 切断対策 |
どれを選ぶ?
条件 | 推奨 |
---|---|
Cloud Run から同じプロジェクトの Cloud SQL に接続 | Auth Proxy/Connector (Unix ソケット) |
VPC コネクトや他プロジェクト・オンプレから接続 | プライベート IP(Private Service Connect) |
外部ツール/ローカル PC から簡単に試すだけ | パブリック IP + Cloud SQL Auth Proxy (TCP) |
補足
Cloud SQL Auth Proxy をコンテナに sidecar 方式で同梱する場合は、Cloud Run の service から見ると “ローカルホスト + 5432/3306” で露出します。その場合 TCP の localhost でつないでも構いませんが、最近の Google 公式サンプルは /cloudsql ソケット をマウントする形が主流です。
まとめ
-
共通フォーマット:
方言://USER:PASSWORD@接続先/DB?パラメータ
-
Unix ソケット接続は
@/cloudsql/<INSTANCE_CONNECTION_NAME>/
(PostgreSQL)または@unix(/cloudsql/<INSTANCE_CONNECTION_NAME>)/
(MySQL) -
TCP 接続は
@<IP>:<PORT>/
- Prisma を含むほとんどの OR マッパ/ドライバは上記文字列をそのまま
DATABASE_URL
環境変数に入れれば認識します。
この形式をベースに、ご自身の ユーザー名・パスワード・インスタンス接続名・データベース名 を差し替えて .env (.env.prod) に記載すれば OK です。

Cloud SQL のロール

Terraformを使って、CloudRunからPublicIPを持つCloudSQLに対して、DB接続をする📝

CloudSQLとの接続📝
CloudRun(Prisma)からプライベートIPのCloudSQLの接続📝
Cloud SQL Proxyを用いたCloud SQLへの接続(with Prisma)