このページでは、インスタンスの高可用性構成について説明します。
インスタンスの高可用性は、インスタンスを作成するときに構成することも、既存のインスタンスで有効にすることもできます。
高可用性の詳細については、高可用性の構成の概要をご覧ください。
高可用性向けに構成された新しいインスタンスを作成する
インスタンスを作成し、高可用性向けに構成すると、Cloud SQL はこれをリージョン インスタンスとして作成します。
高可用性向けに構成されたインスタンスを作成するには:
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- [インスタンスを作成] を選択します。
- データベース エンジンを選択します。
- [リージョンとゾーンの可用性の選択] セクションで、[複数のゾーン(高可用性)] を選択します。
- [ゾーンを指定] を開きます。
- プライマリ ゾーンとセカンダリ ゾーンを選択します。インスタンスの作成中または編集中にセカンダリ ゾーンが使用される場合は、次の条件が適用されます。
- ゾーンのデフォルトは、プライマリ ゾーンは
Any
、セカンダリ ゾーンはAny (different from primary)
です。
プライマリ ゾーンとセカンダリ ゾーンの両方を指定する場合は、別々のゾーンにする必要があります。
- ゾーンのデフォルトは、プライマリ ゾーンは
- [保存] をクリックします。
インスタンスの更新中に、プライマリ インスタンスのインスタンス ページに戻ります。
gcloud
- リージョン インスタンスを作成します。
gcloud sql instances create REGIONAL_INSTANCE_NAME \ --availability-type=REGIONAL \ --database-version=SQLSERVER_2017_STANDARD \ --cpu=NUMBER_CPUS \ --memory=MEMORY_SIZE
- root ユーザーを構成します。
gcloud sql users set-password root no-host \ --instance=REGIONAL_INSTANCE_NAME \ --password=PASSWORD
Terraform
高可用性を持つインスタンスを作成するには、Terraform リソースを使用します。
変更を適用する
Google Cloud プロジェクトで Terraform 構成を適用するには、次のセクションの手順を完了します。
Cloud Shell を準備する
- Cloud Shell を起動します。
-
Terraform 構成を適用するデフォルトの Google Cloud プロジェクトを設定します。
このコマンドは、プロジェクトごとに 1 回だけ実行する必要があります。これは任意のディレクトリで実行できます。
export GOOGLE_CLOUD_PROJECT=PROJECT_ID
Terraform 構成ファイルに明示的な値を設定すると、環境変数がオーバーライドされます。
ディレクトリを準備する
Terraform 構成ファイルには独自のディレクトリ(ルート モジュールとも呼ばれます)が必要です。
-
Cloud Shell で、ディレクトリを作成し、そのディレクトリ内に新しいファイルを作成します。ファイルの拡張子は
.tf
にする必要があります(例:main.tf
)。このチュートリアルでは、このファイルをmain.tf
とします。mkdir DIRECTORY && cd DIRECTORY && touch main.tf
-
チュートリアルを使用している場合は、各セクションまたはステップのサンプルコードをコピーできます。
新しく作成した
main.tf
にサンプルコードをコピーします。必要に応じて、GitHub からコードをコピーします。Terraform スニペットがエンドツーエンドのソリューションの一部である場合は、この方法をおすすめします。
- 環境に適用するサンプル パラメータを確認し、変更します。
- 変更を保存します。
-
Terraform を初期化します。これは、ディレクトリごとに 1 回だけ行う必要があります。
terraform init
必要に応じて、最新バージョンの Google プロバイダを使用する場合は、
-upgrade
オプションを使用します。terraform init -upgrade
変更を適用する
-
構成を確認して、Terraform が作成または更新するリソースが想定どおりであることを確認します。
terraform plan
必要に応じて構成を修正します。
-
次のコマンドを実行し、プロンプトで「
yes
」と入力して、Terraform 構成を適用します。terraform apply
Terraform に「Apply complete!」のメッセージが表示されるまで待ちます。
- Google Cloud プロジェクトを開いて結果を表示します。Google Cloud コンソールの UI でリソースに移動して、Terraform によって作成または更新されたことを確認します。
変更を削除する
変更を削除するには、次の手順を行います。
- 削除の保護を無効にするには、Terraform 構成ファイルで
deletion_protection
引数をfalse
に設定します。deletion_protection = "false"
- 次のコマンドを実行し、プロンプトで「
yes
」と入力して、更新された Terraform 構成を適用します。terraform apply
-
以前に Terraform 構成で適用されたリソースを削除するには、次のコマンドを実行して、プロンプトに「
yes
」と入力します。terraform destroy
REST v1
リクエストのパラメータの完全な一覧については、instances:insert ページをご覧ください。リージョン インスタンスを作成します。
-
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-name: インスタンス名
- database-version: データベース バージョンの列挙型文字列
- region: GCP リージョン
- machine-type: マシンタイプ
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances
リクエストの本文(JSON):
{ "name": "instance-name", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "backupConfiguration": { "enabled": true }, "availabilityType": "REGIONAL" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
- インスタンスの初期化が完了したら、インスタンスの root パスワードを更新します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
- password: 新しい root ユーザーのパスワード
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'
リクエストの本文(JSON):
{ "name": "sqlserver", "host": "nohost", "password": "password"}
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
REST v1beta4
リクエストのパラメータの完全な一覧については、instances:insert ページをご覧ください。リージョン インスタンスを作成します。
-
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-name: インスタンス名
- database-version: データベース バージョンの列挙型文字列
- region: GCP リージョン
- machine-type: マシンタイプ
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances
リクエストの本文(JSON):
{ "name": "instance-name", "region": "region", "databaseVersion": "database-version", "settings": { "tier": "machine-type", "backupConfiguration": { "enabled": true }, "availabilityType": "REGIONAL" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
- インスタンスの初期化が完了したら、インスタンスの root パスワードを更新します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
- password: 新しい root ユーザーのパスワード
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=sqlserver'
リクエストの本文(JSON):
{ "name": "sqlserver", "host": "nohost", "password": "password"}
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
インスタンスの作成に関する詳細は、インスタンスを作成するをご覧ください。
高可用性向けに既存のインスタンスを構成する
高可用性向けに Cloud SQL インスタンスを構成するには、Google Cloud コンソール、gcloud CLI、または API を使用します。
コンソール
高可用性向けにインスタンスを構成するには:
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [編集] をクリックします。
- [自動バックアップと高可用性] 構成オプションのセクションで、[高可用性(リージョン)] を選択します。[自動バックアップ] を有効にすることもおすすめします。
- [保存] をクリックします。
gcloud
インスタンスをリージョンの高可用性インスタンスとして構成するには、gcloud sql instances patch
コマンドを使用します。
gcloud sql instances patch INSTANCE_NAME \ --availability-type REGIONAL
INSTANCE_NAME は、高可用性を構成する Cloud SQL インスタンスの名前に置き換えます。
REST v1
インスタンスをリージョンの高可用性インスタンスとして構成するには:
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性構成を行うインスタンスの名前
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "settings": {"availabilityType": "REGIONAL" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
REST v1beta4
インスタンスをリージョンの高可用性インスタンスとして構成するには:
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性構成を行うインスタンスの名前
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "settings": {"availabilityType": "REGIONAL" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
フェイルオーバーを開始する
フェイルオーバーのテストはオプションですが、フェイルオーバーの発生時にアプリケーションがどのように応答するかを確認するため、テストすることをおすすめします。
フェイルオーバーの詳細については、フェイルオーバーの概要を参照してください。
Console
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [フェイルオーバー] をクリックします。
- [フェイルオーバーの手動トリガー] ダイアログ ボックスで、テキスト フィールドにインスタンスの ID を入力し、[フェイルオーバーをトリガー] をクリックします。
gcloud
フェイルオーバーを開始します。
gcloud sql instances failover PRIMARY_INSTANCE_NAME
REST v1
settingsVersion
フィールドの値を取得するには、プライマリ インスタンスを記述します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性構成を行うインスタンスの名前
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "SQLSERVER_2019_STANDARD" }
- フェイルオーバーを開始します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-name: インスタンス名
- settings-version: instanceInfo の settingsVersion
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-name/failover
リクエストの本文(JSON):
{ "failoverContext": { "settingsVersion":"settings-version" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
REST v1beta4
settingsVersion
フィールドの値を取得するには、プライマリ インスタンスを記述します。リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性構成を行うインスタンスの名前
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "SQLSERVER_2019_STANDARD" }
- フェイルオーバーを開始します。
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-name: インスタンス名
- settings-version: instanceInfo の settingsVersion
HTTP メソッドと URL:
POST https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name/failover
リクエストの本文(JSON):
{ "failoverContext": { "settingsVersion":"settings-version" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
インスタンスはフェイルオーバーし、数分間データを提供できなくなります。
インスタンスの高可用性構成を確認する
インスタンスの高可用性を確認し、実行中のゾーンを表示するには:
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [構成] セクションに、次の高可用性設定が表示されていることを確認します。
- 高可用性(リージョナル)
- [現在の場所] には、インスタンスの現在のプライマリ ゾーンが表示されます。
gcloud
gcloud sql instances describe INSTANCE_NAME
出力には、availabilityType
が REGIONAL
であることが示されます。
gceZone
フィールドと secondaryGceZone
フィールドに、インスタンスの現在のプライマリ ゾーンとセカンダリ ゾーンが表示されます。
REST v1
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/v1/projects/project-id/instances/instance-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "SQLSERVER_2019_STANDARD" }
出力には、availabilityType
が REGIONAL
であることが示されます。
gceZone
フィールドと secondaryGceZone
フィールドに、インスタンスの現在のプライマリ ゾーンとセカンダリ ゾーンが表示されます。
REST v1beta4
リクエストのデータを使用する前に、次のように置き換えます。
- project-id: プロジェクト ID
- instance-id: インスタンス ID
HTTP メソッドと URL:
GET https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "kind": "sql#instance", "state": "RUNNABLE", "databaseVersion": "SQLSERVER_2017_STANDARD", }
出力には、availabilityType
が REGIONAL
であることが示されます。
gceZone
フィールドと secondaryGceZone
フィールドに、インスタンスの現在のプライマリ ゾーンとセカンダリ ゾーンが表示されます。
高可用性インスタンスのゾーンを変更する
既存の高可用性インスタンスのゾーンのいずれかまたは両方を変更すると、インスタンスの再構成中に数分間のダウンタイムが発生します。高可用性インスタンスが実行されている現在のプライマリ ゾーンとセカンダリ ゾーンを確認するには、インスタンスの高可用性構成を確認するをご覧ください。
高可用性インスタンスのゾーンを変更するには:
コンソール
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [編集] をクリックします。
- [リージョンとゾーンの可用性の選択] セクションで、[ゾーンを指定] を展開し、新しいゾーンを選択します。ゾーンのデフォルトは、プライマリ ゾーンは
Any
、セカンダリ ゾーンはAny (different from primary)
です。次の制限が適用されます。- プライマリ ゾーンのみ、またはプライマリ ゾーンとセカンダリ ゾーンの両方を指定できます。
- プライマリ ゾーンとセカンダリ ゾーンの両方を指定する場合は、別々のゾーンにする必要があります。
- [保存] をクリックします。
インスタンスの更新中に、プライマリ インスタンスのインスタンス ページに戻ります。
gcloud
インスタンスが実行されているゾーンを変更します。
gcloud sql instances patch INSTANCE_NAME \ --zone=PRIMARY_ZONE --secondary-zone=SECONDARY_ZONE
--secondary-zone
パラメータは省略可能です。省略すると、Cloud SQL はプライマリ ゾーンとは別の使用可能なゾーンを選択します。
次の制限が適用されます。
- ゾーンは、Cloud SQL インスタンスと同じリージョンに属する有効なゾーンである必要があります。
- セカンダリ ゾーンを指定する場合は、プライマリ ゾーンとは異なるものにする必要があります。
REST v1
リージョン インスタンスのゾーンを変更します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- INSTANCE_NAME: インスタンス名
- PRIMARY_ZONE: プライマリ ゾーン
- SECONDARY_ZONE: セカンダリ ゾーン
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "settings": {"locationPreference": {"zone": "PRIMARY_ZONE", "secondaryZone": "SECONDARY_ZONE"}} }
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
secondaryZone
パラメータは省略可能です。省略すると、Cloud SQL はプライマリ ゾーンとは別の使用可能なゾーンを選択します。次の制限が適用されます。
- ゾーンは有効なゾーンである必要があります。
- 選択するゾーンは、Cloud SQL インスタンスと同じリージョンに属している必要があります。
REST v1beta4
リージョン インスタンスのゾーンを変更します。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: プロジェクト ID
- INSTANCE_NAME: インスタンス名
- PRIMARY_ZONE: プライマリ ゾーン
- SECONDARY_ZONE: セカンダリ ゾーン
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "settings": {"locationPreference": {"zone": "PRIMARY_ZONE", "secondaryZone": "SECONDARY_ZONE"}} }
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
secondaryZone
パラメータは省略可能です。省略すると、Cloud SQL はプライマリ ゾーンとは別の使用可能なゾーンを選択します。次の制限が適用されます。
- ゾーンは有効なゾーンである必要があります。
- 選択するゾーンは、Cloud SQL インスタンスと同じリージョンに属している必要があります。
インスタンスの高可用性を無効にする
Cloud SQL インスタンスの高可用性を無効にするには、Google Cloud コンソール、gcloud CLI、または API を使用します。
コンソール
インスタンスの高可用性を無効にするには:
-
Google Cloud コンソールで Cloud SQL の [インスタンス] ページに移動します。
- インスタンスの [概要] ページを開くには、インスタンス名をクリックします。
- [編集] をクリックします。
- 自動バックアップを開きます。
- [可用性] セクションで、[シングルゾーン] をクリックします。
- [保存] をクリックします。この編集を行うには、インスタンスを再起動する必要があります。
- ダイアログが表示されたら、[保存して再起動] をクリックします。
gcloud
インスタンスの高可用性を無効にするには、gcloud sql instances patch
コマンドを使用します。
gcloud sql instances patch INSTANCE_NAME \ --availability-type ZONAL
INSTANCE_NAME は、高可用性を無効にする Cloud SQL インスタンスの名前に置き換えます。
REST v1
インスタンスの可用性タイプを ZONAL
に変更するには、instances:patch
メソッドを使用します。このメソッドは、インスタンスの高可用性を無効にします。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性を無効にするインスタンスの名前
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/v1/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "settings": {"availabilityType": "ZONAL" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
REST v1beta4
インスタンスの可用性タイプを ZONAL
に変更するには、instances:patch
メソッドを使用します。このメソッドは、インスタンスの高可用性を無効にします。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: インスタンスが含まれている Google Cloud プロジェクトの ID またはプロジェクト番号
- INSTANCE_NAME: 高可用性を無効にするインスタンスの名前
HTTP メソッドと URL:
PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/PROJECT_ID/instances/INSTANCE_NAME
リクエストの本文(JSON):
{ "settings": {"availabilityType": "ZONAL" } }
リクエストを送信するには、次のいずれかのオプションを展開します。
成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。
トラブルシューティング
問題 | トラブルシューティング |
---|---|
手動フェイルオーバーの指標が表示されない。 | 自動フェイルオーバーのみが指標に含まれます。 |
Cloud SQL インスタンス リソース(CPU と RAM)の使用率が 100% に近いため、高可用性インスタンスが停止します。 | インスタンスのマシンサイズが負荷に対して小さすぎます。
インスタンスを編集してより大きなマシンサイズにアップグレードし、CPU とメモリのサイズを大きくします。 |
次のステップ
- 高可用性設定の動作について学習します。
- インスタンスを再開することにより、接続が失われた場合のアプリケーションの対応をテストします。
- データベース接続を管理するについて学習する。
- Google Cloud Observability について学習する。