- Cloud SQL・AlloyDB・Spanner の守備範囲を理解し、互換性・スケール・可用性の要件から選び分ける
- Cloud SQL の高可用性(HA)構成とリードレプリカの違い、自動バックアップとポイントインタイムリカバリ(PITR)
- Cloud SQL への接続方法(Cloud SQL Auth Proxy / プライベート IP / 承認済みネットワーク)の使い分け
- Spanner の外部整合性、リージョナル / マルチリージョン構成、processing units による容量設計
- gcloud で Cloud SQL と Spanner のインスタンスを作成・接続・削除する
試験ガイド対応: セクション 1.3(ネットワーク、ストレージ、コンピューティング リソースの設計)、2.2(ストレージ システムの構成)
RDB 3 兄弟の全体像 — どれを選ぶか
前章のオブジェクトストレージが「ファイルの置き場」だったのに対し、本章はトランザクションを伴う構造化データ、つまりリレーショナルデータベースを扱います。Google Cloud のマネージド RDB は 3 つあります。Cloud SQL は MySQL・PostgreSQL・SQL Server をそのまま動かす定番のマネージド RDB、AlloyDB for PostgreSQL は PostgreSQL 互換のまま性能を引き上げた Google 独自エンジンの上位版、Spanner は書き込みまで水平スケールするグローバル分散 RDB です。まず選択の順序を頭に入れましょう。
| 観点 | Cloud SQL | AlloyDB for PostgreSQL | Spanner |
|---|---|---|---|
| 互換性 | MySQL / PostgreSQL / SQL Server をそのまま | PostgreSQL 完全互換 | GoogleSQL と PostgreSQL 互換の 2 方言 |
| 書き込みスケール | 単一プライマリ(垂直スケール) | 単一プライマリ + リードプール(読み取りのみ水平) | 自動シャーディングで水平スケール |
| 可用性 SLA(2026-08 時点) | Enterprise 99.95% / Enterprise Plus 99.99% | 99.99%(メンテナンス込み) | リージョナル 99.99% / マルチリージョン 99.999% |
| 得意分野 | 既存アプリの lift & shift、汎用 Web バックエンド | 高負荷 OLTP + リアルタイム分析(HTAP) | グローバル分散、超大規模 OLTP |
| コスト感 | 共有コアから小さく始められる | Cloud SQL より高性能・高価格帯 | プロビジョニング課金(最小 100 processing units) |
Cloud SQL — 定番のマネージド RDB
Cloud SQL は MySQL・PostgreSQL・SQL Server の 3 エンジンに対応するフルマネージドのリレーショナルデータベースです。実体としては、各インスタンスが Google 管理の VM + 永続ディスク + 静的 IP アドレスで構成され(第 4 章の部品と同じ土台です)、バックアップ・HA とフェイルオーバー・メンテナンスとパッチ適用・モニタリングを Google 側が引き受けます。利用者は SQL とスキーマ設計に集中できる、というのがマネージド DB の価値です。オンプレからの移行では Database Migration Service が使えます(第 17 章)。
2 つのエディション
Cloud SQL には Enterprise と Enterprise Plus の 2 エディションがあり、SLA・メンテナンスの影響・性能機能が異なります(2026-08 時点)。
| 項目 | Enterprise | Enterprise Plus |
|---|---|---|
| 可用性 SLA | 99.95%(メンテナンス除く) | 99.99%(メンテナンス込み) |
| 計画メンテナンスの停止時間 | 60 秒未満 | 1 秒未満(ニアゼロダウンタイム) |
| 性能機能 | 標準 | データキャッシュで読み取り性能最大 4 倍など |
| DR 機能 | 基本(クロスリージョンレプリカ) | 高度な DR(write endpoint による切り替え) |
学習用途やスモールスタートは Enterprise の共有コアマシン(db-f1-micro など)で十分です。試験では「メンテナンスの停止も許されない」「読み取り性能を強化したい」という文言が Enterprise Plus を指すシグナルになります。
高可用性(HA)構成 — リージョナルインスタンス
Cloud SQL の HA 構成はリージョナルインスタンスとも呼ばれ、同一リージョン内の異なるゾーンにプライマリとスタンバイの 2 台を配置します。書き込みは、トランザクションのコミットが応答される前に両ゾーンの永続ディスクへ同期複製されるため、フェイルオーバーでコミット済みデータは失われません。プライマリの死活は毎秒のハートビートで監視され、応答が複数回途絶えるとスタンバイへの自動フェイルオーバーが始まります。切り替え中は 60 秒程度利用できなくなります(2026-08 時点のドキュメント記載値。環境により変動)。
設計上の注意は 2 つです。第一に、スタンバイは読み取りクエリを処理しません。純粋な待機系です。第二に、HA 構成の料金は CPU・RAM・ストレージが 2 台分になるため単体構成の 2 倍です。「可用性のための HA」と「読み取りスケールのためのリードレプリカ」は目的が別物です。
リードレプリカ — 読み取りスケールとクロスリージョン DR
リードレプリカはプライマリのデータを非同期で複製する読み取り専用のコピーです。レポート集計や参照系トラフィックをオフロードしてプライマリの負荷を下げるのが本来の用途で、別リージョンに置くクロスリージョンレプリカにすればリージョン障害への備え(DR)や低レイテンシの読み取り拠点にもなります。レプリカの下にさらにレプリカをぶら下げるカスケードレプリカはプライマリを含めて最大 4 階層まで構成でき、プライマリ直下のレプリカ数は 10 以下が推奨です(2026-08 時点)。
重要な違いとして、リードレプリカにはフェイルオーバー機能がありません。プライマリが失われたときは、レプリカを独立したインスタンスへ手動で昇格(プロモート)します。昇格したレプリカは書き込み可能な単体インスタンスになり、配下のカスケードレプリカは階層ごと引き継がれます。
バックアップとポイントインタイムリカバリ
Cloud SQL のバックアップは初回を除いて増分バックアップで、自動バックアップ(スケジュール実行)とオンデマンドバックアップ(任意のタイミングで作成、明示的に削除するまで保持)の 2 種類があります。さらにポイントインタイムリカバリ(PITR)を有効にすると、バックアップ時点だけでなく「昨日 14:32 の状態」のような任意の時点へ復元できます。仕組みは、自動バックアップを土台に、そこからのトランザクションログ(MySQL ではバイナリログ)を連続適用するものです。したがって PITR には自動バックアップとバイナリログの両方が有効であることが前提で、復元は常に新しいインスタンスとして行われます。既存インスタンスをその場で巻き戻すことはできません。
接続方法 — Auth Proxy とプライベート IP
データベースは作って終わりではなく、「どこから・どう安全につなぐか」が設計問題です。Cloud SQL の接続は次の 3 パターンを押さえます。
| 方法 | 仕組み | 使いどころ |
|---|---|---|
| Cloud SQL Auth Proxy / コネクタ | IAM 認証と TLS 暗号化をプロキシが自動処理。承認済みネットワークの登録が不要 | パブリック IP 経由でも安全に接続したいとき。接続元 IP が変動するクライアント |
| プライベート IP | VPC 内部アドレスで直接接続(private services access または Private Service Connect) | 本番の Google Cloud 内アプリ。セキュリティ推奨・低レイテンシ(第 3 章) |
| パブリック IP + 承認済みネットワーク | 接続元 IP レンジを明示的に許可リスト登録 | 固定 IP を持つ外部クライアント。学習・検証用途 |
公式ドキュメントの推奨は、セキュリティ観点でプライベート IP、認証観点でIAM データベース認証です。パブリック IP を使うなら Auth Proxy などのコネクタを挟み、承認済みネットワークを広く開けることは避けます。
AlloyDB for PostgreSQL — PostgreSQL 互換の高性能版
AlloyDB for PostgreSQL は、PostgreSQL 完全互換のインターフェースに Google 製データベースエンジンとクラウドネイティブな分散アーキテクチャを組み合わせたフルマネージド DB です。Cloud SQL for PostgreSQL と同じアプリケーションコード・ドライバがそのまま動きつつ、より高い性能と可用性を狙うワークロードの受け皿になります。
- コンピュートとストレージの分離: 計算層とストレージ層が独立してスケールする分散構成(disaggregated architecture)です。リソースは「クラスタ」を頂点に、読み書きを担うプライマリインスタンス(クラスタに 1 つ、HA 構成可)と、読み取り専用のリードプールインスタンス(複数追加可)で構成されます
- 性能(Google 公表値、2026-08 時点): トランザクション処理で標準 PostgreSQL の 4 倍超、内蔵のカラム型エンジンにより分析クエリで標準 PostgreSQL の最大 100 倍。OLTP と分析を 1 つの DB でこなす HTAP(Hybrid Transactional and Analytical Processing)が設計思想です
- 可用性: 99.99% の稼働率 SLA をメンテナンス込みで提供します(2026-08 時点)
- AlloyDB Omni: ダウンロード版の AlloyDB で、オンプレミスや他クラウドなど自前の Linux 環境でも同じエンジンを動かせます
位置づけとしては「Cloud SQL for PostgreSQL では性能が足りない、しかし Spanner ほどの水平スケールとグローバル分散は要らない」という中間帯を埋めるプロダクトです。MySQL や SQL Server の互換性が要る場合は選択肢に入りません。
Spanner — 水平スケールとグローバル整合
外部整合性と自動シャーディング
Spanner は、リレーショナルの整合性と NoSQL 級の水平スケールを両立させた Google 独自の分散データベースです。リレーショナルに加えてグラフ・キー値・検索のモデルを 1 つのサービスに統合しており、SQL インターフェースは GoogleSQL と PostgreSQL 互換の 2 方言から選べます。
最大の特徴が外部整合性(external consistency)です。これは「分散トランザクションであっても、全世界のどこから見てもコミットの順序が実際の時刻順と一致する」という、単一マシンの直列化可能性をグローバル規模に広げた最強クラスの整合性保証です。全 Google サーバーに提供される高可用の分散クロック TrueTime がこれを支えています。またデータはスプリットという単位に自動分割(自動シャーディング)され、スプリットはサーバー間を独立に移動して負荷を分散します。コンピュート容量は稼働中のインスタンスに対して後から増減できます。
インスタンス構成と SLA
Spanner のインスタンスは、レプリカをどこへ配置するかを決めるインスタンス構成を選んで作成します(2026-08 時点。エディションは Standard / Enterprise / Enterprise Plus の 3 つで、デュアルリージョン以上は Enterprise Plus が必要です)。
- リージョナル構成(例: regional-asia-northeast1): 1 リージョン内の 3 ゾーンに read-write レプリカを 1 つずつ配置。SLA 99.99%
- デュアルリージョン構成: 同一国内の 2 リージョン間でレプリケーション(日本を含む一部の国で提供)。SLA 99.999%
- マルチリージョン構成(例: 東京を read-write リージョンに含む asia1): 2 つの read-write リージョン(各 2 レプリカ)+ witness リージョンで構成。SLA 99.999%。読み取り専用レプリカを追加してさらに読み取り拠点を広げられる
コンピュート容量(processing units)と無料トライアル
Spanner の性能はコンピュート容量で決まり、単位は processing units(PU)またはノードです。1,000 PU = 1 ノードで、100 PU 単位で指定できるため、1 ノード未満の小さなインスタンスから始められます。ストレージは 100 PU あたり 1,024 GiB、1 ノードあたり 10 TiB まで使えます(2026-08 時点)。課金は「使ったクエリ数」ではなくプロビジョニングした容量 × 時間で、レプリカ数分のノード時間に対して発生し、最低 1 時間分から按分されます。CPU 使用率などに応じて容量を自動調整するマネージドオートスケーラーも利用できます。
学習用には無料トライアルインスタンスが用意されています。90 日間・データ 10 GB・最大 5 データベースまで使えますが、SLA の適用外で、バックアップや CMEK は使えません。有効な請求先アカウントが必要で、作成できるのはプロジェクトのライフサイクルにつき 1 つ、請求先アカウントにつき最大 5 つです。期限が来る前に、ダウンタイムなしで有料インスタンスへアップグレードできます(2026-08 時点)。
共有コアの最小インスタンスを作り、Cloud Shell から接続して SQL を実行します。所要 30〜45 分(インスタンス作成の待ち時間を含む)。費用の目安: db-f1-micro 1 台を 1 時間弱 — 数円〜十数円程度。Cloud SQL に無料枠はないので、終わったら必ず削除します。コマンドは Cloud Shell 実行を想定しています(ローカルの gcloud CLI でも同じです)。
- Cloud SQL Admin API を有効化する。プロジェクトは第 1 章で作った学習用プロジェクトを使う(
gcloud config get-value projectで確認)
gcloud services enable sqladmin.googleapis.com
- MySQL 8.0 の最小インスタンスを作成する。
ROOT_PASSWORDは自分で決めた管理者パスワードに置き換える。作成完了まで数分〜10 分程度かかる
gcloud sql instances create handson-mysql \
--database-version=MYSQL_8_0 \
--tier=db-f1-micro \
--region=asia-northeast1 \
--root-password=ROOT_PASSWORD
- 状態を確認する。
STATUSがRUNNABLEになれば準備完了
gcloud sql instances list
期待される出力(要点列のみ抜粋):
NAME DATABASE_VERSION LOCATION TIER STATUS
handson-mysql MYSQL_8_0 asia-northeast1-b db-f1-micro RUNNABLE
- Cloud Shell から接続する。このコマンドは Cloud Shell の IP を 5 分間だけ承認済みネットワークに登録し、mysql クライアントを起動する(「Allowlisting your IP for incoming connection for 5 minutes...done.」と表示される)。パスワードを聞かれたら手順 2 のものを入力
gcloud sql connect handson-mysql --user=root
- mysql プロンプトでデータベースとテーブルを作り、読み書きを確認して切断する
CREATE DATABASE handson;
USE handson;
CREATE TABLE books (id INT PRIMARY KEY, title VARCHAR(100));
INSERT INTO books VALUES (1, 'Cloud SQL 入門'), (2, 'PCA 合格ガイド');
SELECT * FROM books;
EXIT;
後片付け: インスタンスを削除し、一覧に何も残っていないことを確認します。
gcloud sql instances delete handson-mysql --quiet
gcloud sql instances list
最小の 100 PU リージョナルインスタンスを作り、DDL と DML を gcloud だけで実行します。所要 20〜30 分。費用の目安: 100 PU は 1 ノードの 1/10 のノード時間として時間課金され、最低 1 時間分が課金されます。1 時間以内に削除すれば少額(東京リージョンの最新単価は公式の Spanner 料金ページで確認)ですが、無料枠はありません。
- API を有効化し、東京リージョンのリージョナル構成に 100 PU・Standard エディションのインスタンスを作成する
gcloud services enable spanner.googleapis.com
gcloud spanner instances create handson-spanner \
--config=regional-asia-northeast1 \
--description="PCA handson" \
--processing-units=100 \
--edition=STANDARD
- データベースを作成する(GoogleSQL 方言。PostgreSQL 方言にしたい場合は
--database-dialect=POSTGRESQLを付ける)
gcloud spanner databases create handson-db \
--instance=handson-spanner
- DDL でテーブルを作る。Spanner の GoogleSQL では主キーを括弧の外に書くことに注目
gcloud spanner databases ddl update handson-db \
--instance=handson-spanner \
--ddl='CREATE TABLE Players (PlayerId INT64 NOT NULL, Name STRING(100)) PRIMARY KEY (PlayerId)'
- DML で行を挿入し、クエリで読み出す
gcloud spanner databases execute-sql handson-db \
--instance=handson-spanner \
--sql="INSERT INTO Players (PlayerId, Name) VALUES (1, 'Sato'), (2, 'Suzuki')"
gcloud spanner databases execute-sql handson-db \
--instance=handson-spanner \
--sql='SELECT PlayerId, Name FROM Players ORDER BY PlayerId'
期待される出力:
PlayerId Name
1 Sato
2 Suzuki
後片付け: インスタンスを削除すると配下のデータベースも一緒に消えます。一覧が空になることまで確認します。
gcloud spanner instances delete handson-spanner --quiet
gcloud spanner instances list
つまずきポイント
gcloud sql connect はパブリック IP インスタンス前提で、Cloud Shell からプライベート IP のインスタンスには届きません。また「つながらないから」と承認済みネットワークに 0.0.0.0/0 を登録するのは、データベースをインターネットに公開するのと同じで厳禁です。本番はプライベート IP か Auth Proxy / コネクタ + IAM 認証を使います。理解度チェック
Q1. Cloud SQL の HA 構成のスタンバイとリードレプリカは何が違う?
スタンバイは同期複製 + 自動フェイルオーバーで可用性を守るための待機系で、読み取りクエリは処理できません。リードレプリカは非同期複製の読み取り専用コピーで、読み取りのオフロードやクロスリージョン DR に使いますが、自動フェイルオーバーはなく、障害時は手動で昇格します。
Q2. ポイントインタイムリカバリ(PITR)を使うための前提条件と、復元先の制約は?
自動バックアップとトランザクションログ(MySQL ならバイナリログ)の両方が有効であることが前提です。復元は常に新しいインスタンスの作成として行われ、既存インスタンスをその場で巻き戻すことはできません。
Q3. Spanner を 1 ノード未満の容量で使うには? そのときのストレージ上限は?
processing units(PU)を 100 PU 単位で指定します(1,000 PU = 1 ノード)。ストレージは 100 PU あたり 1,024 GiB、1 ノード以上では 1 ノードあたり 10 TiB まで使えます(2026-08 時点)。課金はプロビジョニングした容量に対する時間課金です。
Q4.(試験形式)世界中で展開するオンラインサービスが、全リージョンからの書き込みを強い整合性で処理でき、99.999% の可用性を満たすリレーショナルデータベースを求めている。選ぶべきは?
A. Cloud SQL Enterprise Plus + クロスリージョンリードレプリカ B. AlloyDB プライマリ + リードプール C. Spanner マルチリージョン構成 D. Firestore マルチリージョン
C。「グローバル書き込み + 強整合 + 99.999%」は Spanner マルチリージョン構成の定義そのものです。A はレプリカが非同期・読み取り専用で書き込みは単一リージョンのプライマリに集中し、SLA も 99.99% 止まり。B も単一リージョンの単一プライマリで 99.99%。D はリレーショナルデータベースではないため、SQL とリレーショナルスキーマを前提とする要件に合いません。
Q5.(試験形式)オンプレの MySQL 8.0 をアプリ改修なしで移行し、ゾーン障害時には自動でフェイルオーバーさせたい。計画メンテナンスの停止時間も 1 秒未満に抑えたい。最適な構成は?
A. Cloud SQL for MySQL Enterprise Plus・HA 構成 B. Cloud SQL for MySQL Enterprise・単一ゾーン + リードレプリカ C. AlloyDB・HA クラスタ D. Spanner リージョナル構成
A。MySQL 互換 + 自動フェイルオーバー(HA 構成)+ 計画メンテナンス 1 秒未満(Enterprise Plus)をすべて満たします。B のリードレプリカには自動フェイルオーバーがありません。C の AlloyDB は PostgreSQL 互換で MySQL は動きません。D の Spanner は MySQL 互換ではなく、アプリ改修なしの移行という要件に反します。
まとめと次章へ
- 選択の軸は「互換性・スケール・可用性」。既存 RDB の移行は Cloud SQL、PostgreSQL のまま高性能 / HTAP なら AlloyDB、水平スケールと 99.999% なら Spanner
- Cloud SQL の HA 構成はゾーンをまたぐ同期複製 + 自動フェイルオーバー(スタンバイは読めない・料金 2 倍)。読み取りスケールと DR は非同期のリードレプリカで担う
- PITR は自動バックアップ + バイナリログが前提で、復元先は常に新インスタンス
- 接続はプライベート IP と IAM 認証が推奨。パブリック IP なら Auth Proxy / コネクタを挟む
- Spanner は TrueTime による外部整合性と自動シャーディングが核。リージョナル 99.99% / マルチリージョン 99.999%、容量は 100 PU 単位のプロビジョニング課金(最低 1 時間)
リレーショナルで持つ必然性がないデータ — 柔軟なスキーマのドキュメント、超大量の時系列、キャッシュ — には、それぞれ専用のデータベースがあります。次の第 10 章では Firestore・Bigtable・Memorystore を取り上げ、ストレージプロダクト全体の選択マップを完成させます。