Cloud SQL for PostgreSQL のよくある質問

概要

Cloud SQL とは?
Cloud SQL は、クラウドでフルマネージドの SQL データベースを提供するサービスです。Cloud SQL では PostgreSQL、SQL Server、MySQL データベースを使用できます。
Cloud SQL を使用するとどのようなメリットがありますか?
Cloud SQL を使用すると、些末ではあっても必要であり時間がかかることが多いタスク(パッチの適用、アップデート、バックアップの管理、レプリケーションの構成など)を Google に任せることができ、ユーザーは優れたアプリケーションの開発に集中できます。さらに、標準のワイヤ プロトコルを使用しているため、アプリケーションやロケーションを問わずに接続できます。
Cloud SQL ではどのデータベース バージョンを使用できますか?アップデートはどのように管理されますか?

Cloud SQL for PostgreSQL は、PostgreSQL 9.6、10、11、12、13、14、15(デフォルト)、16 をサポートします。

マイナー バージョン更新は定期メンテナンスの一環としてデプロイされるため、ユーザー側での対応は必要ありません。更新の詳細については、Cloud SQL インスタンスでのメンテナンスの概要をご覧ください。

インスタンスの現在のバージョンを確認するには、Google Cloud Console に移動し、インスタンス名をクリックして [インスタンスの詳細] ページを開きます。または、gcloud sql instances describe コマンドを使用することもできます。

Cloud SQL はすべてのデータベース機能をサポートしていますか?
Cloud SQL は PostgreSQL の一般的な機能のほとんどをサポートしています。標準 PostgreSQL と Cloud SQL が提供する機能とのすべての違いの一覧については、Cloud SQL と標準 PostgreSQL の機能の違いをご覧ください。
サイズや QPS に制限はありますか?
Cloud SQL インスタンスの秒間クエリ数(QPS)に上限はありません。接続数やサイズの上限と App Engine 固有の上限については、割り当てと上限をご覧ください。
Cloud SQL に変更があった場合、どのようにして通知を受け取ることができますか?
google-cloud-sql-announce フォーラムに登録し、そこに投稿された Cloud SQL に関するお知らせやニュースを受け取ることができます。
バグの報告、機能のリクエスト、質問がある場合はどうすればいいですか?
google-cloud-sql-discuss グループに対してバグの報告や機能のリクエストを行えます。質問は Stack Overflow で行うことができます。その他のサポート オプションについては、Cloud SQL のサポートのページをご覧ください。
トップへ戻る

スタートガイド

データが存在しない新しいインスタンスに使用ディスク領域が表示されるのはなぜですか?
Cloud SQL とデータベースはどちらも、インスタンスの作成時にシステム ファイル用とメタデータ用の領域を使用します。
トップへ戻る

データストレージ、レプリケーション、認証

データはどこに保存されますか?

インスタンス データは、そのインスタンスが存在するリージョンに保存されます。ストレージ ロケーションを指定しない場合、バックアップは Cloud SQL インスタンスのロケーションに最も近いマルチリージョン ロケーションに保存されます。たとえば、Cloud SQL インスタンスが us-central1 にある場合、デフォルトでは us マルチリージョンにバックアップが保存されます。ただし、australia-southeast1 のようなデフォルトのロケーションはマルチリージョンのいずれにも該当しません。最も近いマルチリージョンは asia です。

ゾーンとは?

ゾーンは、リソースを実行できる、特定の地理的な場所にある独立したエンティティです。たとえば、us-central1-a という名前のゾーンは米国中部のロケーションを示します。

ゾーンの詳細については、Compute Engine のドキュメントのゾーンリソースをご覧ください。

ストレージにはどのような制限がありますか?
ストレージの上限については、割り当てと上限をご覧ください。
どのようにデータをレプリケーションしますか?

PostgreSQL のインスタンスは高可用性構成リードレプリカを提供します。

どのような種類のリードレプリカを作成できますか?

リードレプリカの詳細については(各タイプの用途など)、レプリケーションのオプションをご覧ください。

Cloud SQL のフェイルオーバーはどのように動作しますか?

フェイルオーバーの詳細については、高可用性構成の概要をご覧ください。

データは暗号化されますか?
Cloud SQL 顧客データは、データベース テーブル、一時ファイル、バックアップに保存されるときに暗号化されます。外部接続は、SSL を使用するか、Cloud SQL Auth Proxy を使用して暗号化できます。
保存されているデータの暗号化はどのように管理されますか?

データの暗号化には、256 ビットの Advanced Encryption Standard(AES-256)以上の暗号化方式と対称鍵が使用されます。つまり、データ保存時の暗号化とデータ使用時の復号に同じ鍵が使用されます。これらのデータ鍵はそれ自体が、安全なキーストアに保存されている鍵を使用して暗号化され、定期的に変更されます。

詳しくは、Google Cloud での保存時の暗号化をご覧ください。

転送中のデータの暗号化はどのように管理されますか?

すべての転送中のデータは、Google が管理している物理的境界または Google のために管理されている物理的境界の外へ出るときに、1 つ以上のネットワーク レイヤで暗号化され認証されます。これらの物理的境界の内部で転送されるデータについては、認証は通常行われますが、暗号化はデフォルトでは行われない場合があります。パブリック IP アドレスを使用してインスタンスに接続する場合は、SSL / TLS 証明書を使用して、転送中のデータを保護します。そのため、ユーザーの判断で、脅威モデルに基づいて追加のセキュリティ対策を適用できます。たとえば、Cloud SQL へのゾーン内接続に対して SSL を構成できます。

詳しくは、Google Cloud での転送データの暗号化をご覧ください。

トップへ戻る

データの移行

データと制約はどのように Cloud SQL に移行されますか?
移行プロセスの中では、データが最初に移行され、制約(主キー、外部キー、インデックスなど)は後からインスタンス上に再作成されます。
データを速く移行するには、どうすればよいですか?
現在では、データベースのテーブル内のデータを並行して移行できます。Cloud SQL では 1 つのデータベース内で複数の並行プロセスを使用してデータを転送できるため、パフォーマンスが向上します。Cloud SQL によるこのデータの転送速度を minoptimal、または max として設定できます。詳細については、マネージド インポートを使用して外部データベースからのレプリケーションを設定するをご覧ください。
トップへ戻る

バックアップと復元

どのようにすればインスタンスを復元できますか?

バックアップに復元するには、Google Cloud Consolegcloud コマンドライン ツールを使用します。詳しくは、インスタンスを復元するをご覧ください。

インスタンスを特定の時点に復元するには、ポイントインタイム リカバリを使用します。 詳細については、ポイントインタイム リカバリを使用するをご覧ください。

バックアップにはどのくらいの費用がかかりますか?

バックアップはインスタンス ストレージの料金に基づいて課金されます。

インスタンス ストレージとインスタンスの料金については、料金をご覧ください。

7 日以上前の自動バックアップにアクセスできますか?

自動バックアップは毎日行われ、デフォルトでは 7 日間保持されます。バックアップ保持期間の値は、1~365 に構成できます。保持期間が終了すると、最も古いバックアップは削除されます。自動バックアップは増分バックアップです。このバックアップには、前回のバックアップの作成後に変更されたデータのみが含まれます。最も古いバックアップはデータベースと同程度のサイズです。最も古いバックアップが削除されると、完全なバックアップを維持するため、その次に古いバックアップのサイズが増加します。

オンデマンド バックアップは手動で削除するまで削除されないことに注意してください。

リージョンの障害対策に対して、外部レプリケーションとクロスリージョン レプリケーションは、それぞれどのような場合に適していますか?
外部レプリケーション クロスリージョン レプリケーション
お客様による自己管理 Cloud SQL マネージド クロスリージョン レプリカ
Google Cloud 以外のインスタンスと Google Cloud インスタンスの間で複製可能 Cloud SQL インスタンス間でのみ複製可能
Google Cloud に対する移行を行うことで、ダウンタイムの最小化や、ハイブリッド / マルチクラウド データ保護を行う Google Cloud のリージョン間でデータを移行してダウンタイムを最小限に抑える
メジャー バージョン間レプリケーションがサポートされている メジャー バージョン間レプリケーションはサポートされていない
トップへ戻る

インスタンスの管理

Cloud SQL インスタンスを再起動する原因となるアクションはどれですか?
Cloud SQL で次の操作を行うと、Cloud SQL インスタンスが再起動される場合があります。
  • 更新
  • 作成
  • レプリカのプロモート
  • メンテナンス
  • レプリカの再作成
  • フェイルオーバー
  • 再起動
  • バックアップからのインスタンスの復元
  • 既存のインスタンスでの高可用性の有効化(インスタンスへの更新)
  • 再起動が必要なデータベース フラグの追加

インスタンスを再起動しても、インスタンスのパブリック IP アドレスやプライベート IP アドレスは変更されません。

再起動時のインスタンスのシャットダウン時間はどの程度ですか?をご覧ください。

再起動時のインスタンスのシャットダウン時間はどの程度ですか?

インスタンスが再起動されると、インスタンスの大部分は 1~2 分間シャットダウンされます。インスタンスがシャットダウンされる前に、すべての接続が終了し、現在の作業はディスクからフラッシュされます。

負荷が大きいインスタンスの場合、このプロセスには時間がかかり、インスタンスが停止しているように見えることがあります。このような場合、インスタンスがシャットダウンして再起動するまで 1 時間ほどかかることがあります。書き込みトランザクションが多数存在する場合や、トランザクションが長時間実行されている場合は、インスタンスのシャットダウンと再起動に時間がかかります。

データベースを拡大または縮小することはできますか?

インスタンスに使用できるストレージの量はいつでもダウンタイムなしに増やすことができます。インスタンスのストレージのサイズを減らすことはできません。また、インスタンスの空き容量が残り少ないときに自動的にストレージ容量を増やすように構成することもできます。詳細については、こちらをご覧ください。

vCPU をアップグレードしてダウングレードできますか?

はい。インスタンスで使用する vCPU の数を変更できます。使用するコアの数は必要に応じて増減できます。通常、vCPU 数の変更には 5 分もかかりません。Cloud SQL Enterprise Plus エディションのプライマリ インスタンスの vCPU の数を増やす場合は、ダウンタイムはほぼゼロでこの変更が有効になります。

Cloud SQL の管理には Google Cloud コンソールを使用する必要がありますか?
いいえ。コンソールを使用して実行できるすべての管理タスクは、Cloud SQL Admin API を使用してプログラムで行うことや、gcloud コマンドライン ツールを使用したスクリプト化が可能です。
一時ファイルによって使用されるスペースを再利用するにはどうすればよいですか?
SQL クエリで多数の一時テーブルが作成されると、一時ファイルが大きくなる可能性があります。一時テーブルによって使用されるスペースを再利用するには、データベースを再起動する必要があります。データベースを再起動して一時ファイルが増えても、プロビジョニングされるディスク スペースは減少しません。
特定のデータベースをインポートまたはエクスポートできますか?
はい。特定のデータベースのみをインポートまたはエクスポートできます。複数のデータベースを一度にインポートまたはエクスポートすることはできません。詳細については、データのインポートまたはデータのエクスポートをご覧ください。
CSV ファイルをインポートまたはエクスポートできますか?
MySQL または PostgreSQL の CSV ファイルをインポートまたはエクスポートできます。詳細については、CSV ファイルの作成をご覧ください。

現在、Cloud SQL for SQL Server で CSV はサポートされていません。

インスタンスのデータのインポートまたはエクスポートには Cloud Storage アカウントが必要ですか?
Cloud SQL では、CSV ファイルまたは pg_dump ファイルを使用して、データベースのインポートとエクスポートを行うことができます。詳細については、pg_dump と pg_restore を使用したエクスポートとインポートまたは CSV ファイルを使用したエクスポートとインポートをご覧ください。
削除したインスタンスのインスタンス名を再使用できますか?
はい。
Cloud SQL ではどの程度のトランザクション分離が可能ですか?

PostgreSQL インスタンス: Cloud SQL では Read committed トランザクション分離が可能です。特定のセッションに対してトランザクションの分離レベルを変更することはできますが、通常はデフォルト値の使用が推奨されます。詳細については、PostgreSQL ドキュメントでトランザクション分離をご覧ください。

インスタンスを誤って削除しないようにするにはどうすればよいですか?
削除保護は、インスタンスの作成時または後で有効にできます。この設定が有効になっている場合は、インスタンスを削除する前に無効にする必要があります。インスタンスの削除を防止するをご覧ください。
トップへ戻る

Insights

Insights でクエリプランのサンプルが見つからないのはなぜですか?
クエリに対するパフォーマンスへの影響があるため、クエリプランを取得するためのサンプルクエリのみを用意しています。その結果、クエリプランのサンプルが表示されない場合があります。
トップへ戻る

料金と課金

Cloud SQL を試すにはどうすればよいですか?
最小インスタンスは db-f1-micro です。このインスタンスを使用してサービスを試すことができます。共有コア インスタンスは SLA の対象外であるので注意してください。
プロジェクトではインスタンスをいくつ作成できますか?
インスタンスの上限については、割り当てと上限をご覧ください。
どれくらいのサイズのデータベース インスタンスが必要ですか?RAM はどれくらい必要ですか?
一般に、RAM と CPU が多い大きなインスタンスを選択すると、データベースのパフォーマンスが向上します。これにより、結合、ORDER BY、GROUP などを含む計算量の多い多数のクエリのパフォーマンスが向上します。ただし、単一の行が影響を受ける更新のパフォーマンスはそれほど変わりません。ただし、インスタンスのサイズが大きいほど、処理のレイテンシは大きくなります。インスタンスのサイズと料金の詳細については、料金をご覧ください。
インスタンスの使用時間はどのようにして算出されますか?

インスタンスがアクティブになっている間、1 分単位で課金されます。

ストレージはどのようにして算出されますか?
ストレージは、インスタンスに対してプロビジョニングされたストレージの量を基に算出されます。バックアップ用のストレージは、バックアップが使用しているスペースの量によって課金されます。ストレージはインスタンスがアクティブであってもなくても課金されます。
請求額はどこで確認できますか?
Google Cloud Console の [お支払い] タブに、前回の請求書の発行後に発生したインスタンスの課金額が表示されます。
インスタンスが上限サイズに達したらどうなりますか?
プロビジョニングされているストレージ サイズにインスタンスが達し、ストレージの自動増量が有効にされていないかまたは構成されている上限に達した場合、ユーザーがストレージ サイズを増やすまで、データベースへのそれ以上の書き込みは許可されません。ストレージ サイズを増やすためにインスタンスを再起動する必要はなく、ダウンタイムも発生しません。
インスタンスが一時停止しているのはなぜですか?
おそらく Google Cloud アカウントに関する問題が原因です。請求サポート リクエストを提出することで、課金のステータスを確認できます。請求に関する問題を解決してから数時間以内に、インスタンスは実行可能なステータスに戻ります。一時停止された MySQL インスタンスは 90 日後に削除されることに注意してください。
インスタンスが削除されたのはなぜですか?
90 日間停止されているインスタンスは削除されます。これは SUSPENDED 状態のインスタンスに適用されます。RUNNABLE 状態で停止しているインスタンスは削除されません。
Cloud SQL アカウントをキャンセルするにはどうすればよいですか?
プロジェクトで Cloud SQL を無効にするには、Google Cloud Console に移動し、プロジェクトを選択してから、[API] サービスを選択して API ダッシュボードを開きます。Cloud SQL API を探し、その API の [無効にする] をクリックします。
課金を無効にするにはどうすればよいですか?
[課金と設定] ペインで、Google Cloud Console の [課金を無効にする] をクリックすると、課金を無効にできます。課金を無効にすると、Cloud SQL サービスも無効になります。課金を無効にする前に、Cloud SQL サービスを無効にしてもよいことを確認してください。

課金を無効にすると、課金サイクルの初日からキャンセルした時点までに発生した料金に関する最後の請求が届きます。

トップへ戻る

App Engine での Cloud SQL の使用

App Engine から PostgreSQL インスタンスに接続できますか?
環境と使用している言語によっては、App Engine アプリケーションから PostgreSQL インスタンスに接続できます。詳細については、App Engine スタンダード環境からの接続または App Engine フレキシブル環境からの接続をご覧ください。
米国の App Engine アプリケーションから EU の Cloud SQL インスタンスにアクセスできますか(またはその逆は可能ですか)?

Cloud SQL インスタンスに接続する場合、App Engine アプリケーションは同じリージョン内に存在していなくてもかまいません。ただし、Cloud SQL インスタンスと App Engine アプリケーションの距離が大きく離れていると、データベース接続のレイテンシが高くなります。

どの Google Cloud データベース サービスが適していますか?
これはアプリケーションの要件によって異なります。Google Cloud には、データを保存、管理、取得するためのさまざまなオプションが用意されています。詳細については、Google Cloud データベースをご覧ください。
App Engine 開発用サーバーを使用するためにローカルのデータベース サーバーをインストールする必要はありますか?
いいえ。開発用サーバーで実行するときは、App Engine から Cloud SQL とローカルにインストールされたデータベース サーバーのどちらを使用するかを構成できます。
インスタンスにアクセスするにはどの言語を使用する必要がありますか?
App Engine スタンダード環境では、インスタンスへの接続に使用できる複数の言語がサポートされています。詳細については、App Engine スタンダード環境からの接続または App Engine フレキシブル環境からの接続をご覧ください。

App Engine を使用しない場合は、対応するコネクタまたは API が用意されている任意の言語を使用できます。

Django を Cloud SQL で使用できますか?
はい。Cloud SQL は Django に対応しています。Django スタートガイドをご覧ください。
Python クエリ文字列ではどのプレースホルダを使用できますか?
Python の場合、パラメータの置換に使用できるのは %s 形式のコードだけです。このため、次のステートメントは無効です。cursor.execute('INSERT INTO entries (guestAge) VALUES (%d)', (age))
接続を管理するにはどうすればよいですか?

データベース接続を効果的に管理することは、データベース アプリケーション開発の重要な側面です。効果的な接続管理には、接続プールや指数バックオフの使用が含まれます。これらの手法をさまざまな言語とフレームワークで使用する例については、データベース接続を管理するをご覧ください。

インスタンス接続制限の詳細については、割り当てと制限をご覧ください。

「無効な接続 ID」というメッセージの SQLException の意味は何ですか。
接続がサーバーでオープンではなくなり、クライアントで破棄されることを意味しています。このような接続はすでにクローズされているため、「close」を呼び出す必要はありません。
App Engine の外部からプログラムで Cloud SQL インスタンスにアクセスすることはできますか?
はい。サポートされている任意の言語を使用して、外部アプリケーションからプログラムで Cloud SQL インスタンスにアクセスできます。接続の概要をご覧ください。
トップへ戻る