インスタンスでの高可用性の有効化と無効化

このページでは、インスタンスの高可用性構成について説明します。

インスタンスの高可用性は、インスタンスを作成するときに構成することも、既存のインスタンスで有効にすることもできます。

高可用性の詳細については、高可用性の構成の概要をご覧ください。

高可用性のレガシー構成では、failover replica インスタンスを使用していました。新しい構成では failover replica を使用しません。 代わりに、Google のリージョン永続ディスクを使用して、リージョン内の 2 つのゾーン間でブロックレベルでデータを同期的に複製します。レガシー構成の高可用性を使用している MySQL インスタンスがある場合、現行バージョンを使用するように構成を更新できます。レガシー構成の高可用性に関連するその他の手順については、高可用性向けのレガシー構成をご覧ください。

高可用性向けに構成された新しいインスタンスの作成

インスタンスを作成し、高可用性向けに構成すると、Cloud SQL はこれをリージョン インスタンスとして作成します。

高可用性向けに構成されたインスタンスを作成するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンスを作成します。
  3. [インスタンスの情報] ページで、[構成オプションを表示] を選択します。
  4. [バックアップ、復元、高可用性] を開きます。
  5. [高可用性(リージョン)] ラジオボタンを選択します。

gcloud

  1. リージョン インスタンスを作成します。
    gcloud sql instances create [REGIONAL_INSTANCE_NAME] \
                         --availability-type=REGIONAL \
                         --database-version=[DATABASE_VERSION] \
                         --tier=[MACHINE_TYPE] \
                         --enable-bin-log
    
    使用可能なパラメータすべてが記載されたリストは、gcloud sql instances create のリファレンス ページをご覧ください。
  2. root ユーザーを構成します。
    gcloud sql users set-password root --host=% \
               --instance=[PRIMARY_INSTANCE_NAME]
               --password=[PASSWORD]
    

REST v1beta4

このリクエストのパラメータの完全な一覧については、instances:insert ページをご覧ください。

リージョン インスタンスを作成します。

  1. 後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-name: インスタンス名
    • database-version: データベース バージョンの列挙型文字列
    • region: GCP リージョン
    • machine-type: マシンタイプ

    HTTP メソッドと URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances

    JSON 本文のリクエスト:

    {
      "name": "instance-name",
      "region": "region",
      "databaseVersion": "database-version",
       "settings": {
         "tier": "machine-type",
         "backupConfiguration": {
             "binaryLogEnabled": true,
             "enabled": true
          },
          "availabilityType": "REGIONAL"
       }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  2. インスタンスの初期化が完了したら、インスタンスの root パスワードを更新します。

    後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • password: 新しい root ユーザーのパスワード

    HTTP メソッドと URL:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id/users?host=%25&name=root'

    JSON 本文のリクエスト:

    {
       "name": "root",
       "host": "%",
       "password": "password"}
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

インスタンスの作成に関する詳細は、インスタンスを作成するをご覧ください。

既存のインスタンスの高可用性向け構成

既存のインスタンスを高可用性向けに構成すると、インスタンスの再構成中に数分間のダウンタイムが発生します。

既存のインスタンスを高可用性向けに構成するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンス名をクリックして [概要] ページを開きます。
  3. [編集] をクリックします。
  4. [バックアップ、復元、高可用性] を開きます。
  5. [バックアップを自動化する] と [ポイントインタイム リカバリを有効にする] チェックボックスをオンにします。
  6. [高可用性(リージョン)] を選択します。
  7. [保存] をクリックします。

    インスタンスの更新中に、プライマリ インスタンスのインスタンス ページに戻ります。

gcloud

インスタンスを REGIONAL に更新します。

gcloud sql instances patch [INSTANCE_NAME] --availability-type REGIONAL --enable-bin-log --backup-start-time=[HH:MM]

リファレンス情報については、gcloud sql instances patch をご覧ください。

REST v1beta4

  1. プライマリ インスタンスを確認して、自動バックアップとバイナリログが有効になっているかどうかを確認します。これらは高可用性インスタンスに必要です。

    後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "MYSQL_5_7",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "asia-east1-a",
          "kind": "sql#locationPreference"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "08:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "13",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "etag-id",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        "kind": "sql#sslCert",
        "certSerialNumber": "0",
        "cert": "certificate-id",
        "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
        "sha1Fingerprint": "sha-id",
        "instance": "instance-id",
        "createTime": "2019-06-28T22:46:35.052Z",
        "expirationTime": "2029-06-25T22:47:35.052Z"
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "asia-east1",
      "gceZone": "asia-east1-a"
    }
    

    出力には、次のようなセクションが含まれます。

      "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
        }
      
  2. enabled または binaryLogEnabledfalse の場合、instances:patch メソッドを使用して両方を有効にします。バックアップを有効にするには、enabledtrue に、startTime をバックアップ ウィンドウの開始値に設定します。バイナリ ロギングを有効にするには、binaryLogEnabledtrue に設定します。

    後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID(プライマリまたはレプリカ)
    • start-time: 「HH:MM」形式の時刻
    • enabled: プライマリ インスタンスの場合は true に設定します。レプリカ インスタンスの場合は false に設定します。

    HTTP メソッドと URL:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    JSON 本文のリクエスト:

    {
      "settings":
      {
        "backupConfiguration":
        {
          "startTime": "start-time",
          "enabled": enabled,
          "binaryLogEnabled": true
        }
      }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

  3. インスタンスを更新してリージョン インスタンスにします。

    後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-name: インスタンス名

    HTTP メソッドと URL:

    PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name

    JSON 本文のリクエスト:

    {
      "settings": {"availabilityType": "REGIONAL" }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

フェイルオーバーの初期化

フェイルオーバーのテストはオプションですが、フェイルオーバーの発生時にアプリケーションがどのように応答するかを確認するため、テストすることをおすすめします。

フェイルオーバーの詳細については、フェイルオーバーの概要を参照してください。

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. プライマリ インスタンス名をクリックして、[インスタンスの詳細] ページを開きます。
  3. ボタンバーの [フェイルオーバー] をクリックします。

gcloud

フェイルオーバーを開始します。

gcloud sql instances failover [PRIMARY_INSTANCE_NAME]

REST v1beta4

  1. settingsVersion フィールドの値を取得するには、プライマリ インスタンスを記述します。

    後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID

    HTTP メソッドと URL:

    GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

    {
      "kind": "sql#instance",
      "state": "RUNNABLE",
      "databaseVersion": "MYSQL_5_7",
      "settings": {
        "authorizedGaeApplications": [],
        "tier": "db-f1-micro",
        "kind": "sql#settings",
        "pricingPlan": "PER_USE",
        "replicationType": "SYNCHRONOUS",
        "activationPolicy": "ALWAYS",
        "ipConfiguration": {
          "authorizedNetworks": [],
          "ipv4Enabled": true
        },
        "locationPreference": {
          "zone": "asia-east1-a",
          "kind": "sql#locationPreference"
        },
        "dataDiskType": "PD_SSD",
        "backupConfiguration": {
          "startTime": "08:00",
          "kind": "sql#backupConfiguration",
          "enabled": true,
          "binaryLogEnabled": true
        },
        "settingsVersion": "13",
        "storageAutoResizeLimit": "0",
        "storageAutoResize": true,
        "dataDiskSizeGb": "10"
      },
      "etag": "etag-id",
      "ipAddresses": [
        {
          "type": "PRIMARY",
          "ipAddress": "10.0.0.1"
        }
      ],
      "serverCaCert": {
        "kind": "sql#sslCert",
        "certSerialNumber": "0",
        "cert": "certificate-id",
        "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
        "sha1Fingerprint": "sha-id",
        "instance": "instance-id",
        "createTime": "2019-06-28T22:46:35.052Z",
        "expirationTime": "2029-06-25T22:47:35.052Z"
      },
      "instanceType": "CLOUD_SQL_INSTANCE",
      "project": "project-id",
      "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
      "backendType": "SECOND_GEN",
      "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
      "connectionName": "project-id:region:instance-id",
      "name": "instance-id",
      "region": "asia-east1",
      "gceZone": "asia-east1-a"
    }
    
  2. フェイルオーバーを開始します。

    後述のリクエストのデータを使用する前に、次のように置き換えます。

    • project-id: プロジェクト ID
    • instance-name: インスタンス名
    • settings-version: instanceInfo の settingsVersion

    HTTP メソッドと URL:

    POST https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name/failover

    JSON 本文のリクエスト:

    {
      "failoverContext":
         {
            "settingsVersion":"settings-version"
         }
    }
    

    リクエストを送信するには、次のいずれかのオプションを展開します。

    次のような JSON レスポンスが返されます。

インスタンスはフェイルオーバーし、数分間データを提供できなくなります。

インスタンスの高可用性の確認

インスタンスの可用性が高いことを確認するには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. インスタンス名をクリックして [インスタンスの詳細] ページを開きます。
  3. 構成には、高可用性(リージョン)が表示されます。

gcloud

gcloud sql instances describe [INSTANCE_NAME]
出力には、availabilityTypeREGIONAL であることが示されます。

REST v1beta4

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-id: インスタンス ID

HTTP メソッドと URL:

GET https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

リクエストを送信するには、次のいずれかのオプションを展開します。

次のような JSON レスポンスが返されます。

{
  "kind": "sql#instance",
  "state": "RUNNABLE",
  "databaseVersion": "MYSQL_5_7",
  "settings": {
    "authorizedGaeApplications": [],
    "tier": "db-f1-micro",
    "kind": "sql#settings",
    "pricingPlan": "PER_USE",
    "replicationType": "SYNCHRONOUS",
    "activationPolicy": "ALWAYS",
    "ipConfiguration": {
      "authorizedNetworks": [],
      "ipv4Enabled": true
    },
    "locationPreference": {
      "zone": "asia-east1-a",
      "kind": "sql#locationPreference"
    },
    "dataDiskType": "PD_SSD",
    "backupConfiguration": {
      "startTime": "08:00",
      "kind": "sql#backupConfiguration",
      "enabled": true,
      "binaryLogEnabled": true
    },
    "settingsVersion": "13",
    "storageAutoResizeLimit": "0",
    "storageAutoResize": true,
    "dataDiskSizeGb": "10"
  },
  "etag": "etag-id",
  "ipAddresses": [
    {
      "type": "PRIMARY",
      "ipAddress": "10.0.0.1"
    }
  ],
  "serverCaCert": {
    "kind": "sql#sslCert",
    "certSerialNumber": "0",
    "cert": "certificate-id",
    "commonName": "C=US,O=Google\\, Inc,CN=Google Cloud SQL Server CA,dnQualifier=dn-qualifier-id",
    "sha1Fingerprint": "sha-id",
    "instance": "instance-id",
    "createTime": "2019-06-28T22:46:35.052Z",
    "expirationTime": "2029-06-25T22:47:35.052Z"
  },
  "instanceType": "CLOUD_SQL_INSTANCE",
  "project": "project-id",
  "serviceAccountEmailAddress": "service-acct-id@gcp-sa-cloud-sql.iam.gserviceaccount.com",
  "backendType": "SECOND_GEN",
  "selfLink": "https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "connectionName": "project-id:region:instance-id",
  "name": "instance-id",
  "region": "asia-east1",
  "gceZone": "asia-east1-a"
}

出力には、availabilityTypeREGIONAL であることが示されます。

インスタンスでの高可用性の無効化

この手順を実行する前に、インスタンスで実行中のオペレーションがないことを確認してください。

高可用性を無効にするには:

Console

  1. Google Cloud Console の Cloud SQL インスタンス ページに移動します。

    [Cloud SQL インスタンス] ページに移動

  2. 高可用性を無効にするインスタンスを選択します。
  3. [インスタンスの詳細] ページで、[編集] をクリックします。
  4. 自動バックアップを開きます。
  5. [可用性] の下の [シングルゾーン] をクリックします。
  6. [保存] をクリックします。この編集ではインスタンスの再起動が必要です。
  7. メッセージ ボックスが表示されたら、[保存して再起動] をクリックします。

gcloud

リファレンス情報については、gcloud sql instances patch をご覧ください。
gcloud sql instances patch [INSTANCE_NAME]
           --availability-type ZONAL

REST v1beta4

次のリクエストでは、instances:patch メソッドを使用して、インスタンスの可用性タイプを ZONAL に変更します。

後述のリクエストのデータを使用する前に、次のように置き換えます。

  • project-id: プロジェクト ID
  • instance-name: インスタンス名

HTTP メソッドと URL:

PATCH https://www.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-name

JSON 本文のリクエスト:

{
  "settings": {"availabilityType": "ZONAL" }
}

リクエストを送信するには、次のいずれかのオプションを展開します。

成功したことを示すステータス コード(2xx)と空のレスポンスが返されます。

レガシーから現在の高可用性へのインスタンスの更新

インスタンスをレガシーから新しい高可用性構成に更新する手順は次のとおりです。

  1. 更新する MySQL インスタンスのフェイルオーバー レプリカを削除します。 レガシー構成: インスタンスの高可用性を無効にするをご覧ください。
  2. 現行バージョンの高可用性を使用するようにインスタンスを構成します。既存のインスタンスの高可用性向け構成をご覧ください。

トラブルシューティング

表内のリンクをクリックすると、詳細が表示されます。

この問題については... 次のような問題が考えられます... 次のことを試します...
手動フェイルオーバーの指標が見つからない。 自動フェイルオーバーのみが指標に含まれます なし
CPU と RAM の使用率がほぼ 100% インスタンスのマシンサイズが負荷に対して小さすぎます。 インスタンスのマシンサイズをアップグレードします

手動フェイルオーバーの指標が見つからない

手動フェイルオーバーを実行しましたが、自動フェイルオーバーの指標に対応するエントリが Metrics Explorer で見つかりません。

次のような問題が考えられます

自動フェイルオーバーのみが指標に含まれます。手動で開始されたフェイルオーバーには指標が含まれません。

次の方法をお試しください

なし


CPU と RAM の使用率がほぼ 100%

Cloud SQL インスタンス リソース(CPU と RAM)の使用率が 100% に近いため、高可用性インスタンスが停止します。

次のような問題が考えられます

インスタンスのマシンサイズが負荷に対して小さすぎます。

次の方法をお試しください

インスタンスを編集してより大きなマシンサイズにアップグレードし、CPU とメモリのサイズを大きくします。

次のステップ