高可用性向けのレガシー構成

このページでは、高可用性のための MySQL インスタンスのレガシー構成について説明します。レガシー構成では、インスタンスにフェイルオーバーがある場合、failover replica インスタンスを使用します。新しい構成ではフェイルオーバー レプリカを使用しません。代わりに、Google のリージョン永続ディスクを使用して、リージョン内の 2 つのゾーン間でブロックレベルでデータを同期的に複製します。

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

レガシー構成: 高可用性向けに構成された新しいインスタンスを作成する

インスタンスを作成するときに、高可用性向けに構成できます。Cloud SQL は、プライマリの作成と同時にフェイルオーバー レプリカを作成します。Cloud Console では、従来の機能は使用できません。代わりに、gcloud または cURL コマンドを使用します。

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

gcloud

  1. プライマリ インスタンスとそのフェイルオーバー レプリカを作成します。
    gcloud sql instances create [PRIMARY_INSTANCE_NAME] \
                         --backup-start-time [BACKUP_WINDOW_START_TIME] \
                         --failover-replica-name [FAILOVER_REPLICA_NAME] \
                         --tier [MACHINE_TYPE] --enable-bin-log
    

    バックアップ ウィンドウの開始時間は、HH:MM の形式です。

    使用可能なパラメータすべてが記載されたリストは、gcloud sql instances create のリファレンス ページをご覧ください。

  2. プライマリ インスタンスの root ユーザーを構成します。
    gcloud sql users set-password root --host=% \
                          --instance [PRIMARY_INSTANCE_NAME] --password [PASSWORD]
    

    フェイルオーバー レプリカは、プライマリ インスタンスと同じマシンタイプ(層)で作成されます。後でフェイルオーバー レプリカのマシンタイプを変更できますが、少なくともプライマリ インスタンスと同じ大きさにする必要があります。

cURL

  1. プライマリ インスタンスとそのフェイルオーバー レプリカを作成します。
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name":"[PRIMARY_INSTANCE_NAME]", "region":"[REGION]",
                  "settings": {
                               "tier":"[MACHINE_TYPE]",
                               "backupConfiguration": {"binaryLogEnabled": true, "enabled": true}},
                               "failoverReplica": {"name": "[FAILOVER_REPLICA_NAME]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    
    このリクエストのパラメータの完全な一覧については、instances:insert ページをご覧ください。
  2. プライマリ インスタンスの初期化が完了したら、プライマリ インスタンスの root パスワードを更新します。
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "root", "host": "%", "password": "[ROOT_PASSWORD]"}' \
         'https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]/users?host=%25&name=root'
    
    この変更は自動的にレプリカに伝播されます。

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

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

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

gcloud

  1. プライマリ インスタンスのステータスを確認します。
    gcloud sql instances describe [PRIMARY_INSTANCE_NAME]
    

    databaseReplicationEnabled プロパティが true の場合、インスタンスはレプリカです。レプリカのフェイルオーバー レプリカは作成できません。

  2. backupConfigurationenabled プロパティが false の場合、このステップでプライマリ インスタンスのバックアップを有効にします。
    gcloud sql instances patch [PRIMARY_INSTANCE_NAME] --backup-start-time [HH:MM]
    

    backup-start-time パラメータは、UTC±00 タイムゾーンの 24 時間で指定され、4 時間のバックアップ期間の開始を指定します。バックアップはバックアップ時間枠の任意の時刻に開始できます。

  3. binaryLogEnabled プロパティが false の場合、バイナリログを有効にします。
    gcloud sql instances patch --enable-bin-log [PRIMARY_INSTANCE_NAME]
    

    バイナリ ロギングを有効にすると、インスタンスが再起動されます。

  4. レプリカを作成します。
    gcloud sql instances create [FAILOVER_REPLICA_NAME] \
                         --master-instance-name=[PRIMARY_INSTANCE_NAME] \
                         --replica-type=FAILOVER
    

cURL

  1. プライマリ インスタンスのステータスを確認します。
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[PRIMARY_INSTANCE_NAME]?fields=settings
    

    出力には backupConfiguration が含まれ、たとえば次のようになります。

    "backupConfiguration": {
        "kind": "sql#backupConfiguration",
        "startTime": "12:00",
        "enabled": true,
        "binaryLogEnabled": true
    }
    
  2. enabled または binaryLogEnabled のいずれかが false の場合、インスタンス リソースの patch メソッドを使用して、両方を有効にします。 そのまま保持するバックアップ構成のプロパティと変更するプロパティを指定します。

    バックアップを有効にするには、enabledtrue に設定し、startTime をバックアップ ウィンドウの開始値に設定します。 バイナリ ロギングを有効にするには、binaryLogEnabledtrue に設定します。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"settings" : {"backupConfiguration" : {"startTime": "[HH:MM]", "enabled": true, "binaryLogEnabled": true}}}' \
         -X PATCH \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[PRIMARY_INSTANCE_NAME]
    
  3. インスタンス リソースの insert メソッドを使用して、フェイルオーバー レプリカを作成します。

    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"name": "[REPLICA_NAME]", "masterInstanceName": "[PRIMARY_INSTANCE_NAME]",
                  "region": "[PRIMARY_IMSTANCE_REGION]", "databaseVersion": "[PRIMARY_DATABASE_VERSION]",
                  "replicaConfiguration": {"failoverTarget": true},
                  "settings": {"tier":"[MACHINE_TYPE]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
    

    MACHINE_TYPE は第 2 世代インスタンスに有効なマシンタイプで、少なくともプライマリ インスタンスのマシンタイプと同じ大きさにする必要があります。

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

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

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

Console

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

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

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

gcloud

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

gcloud sql instances failover [PRIMARY_INSTANCE_NAME]

cURL

  1. settingsVersion フィールドの値を取得するには、プライマリ インスタンスを記述します。
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         -X GET \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[PRIMARY_INSTANCE_NAME]
    
  2. フェイルオーバーを開始します。
    gcloud auth login
    ACCESS_TOKEN="$(gcloud auth print-access-token)"
    curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
         --header 'Content-Type: application/json' \
         --data '{"failoverContext":{"settingsVersion":"[SETTINGS_VERSION]"}}' \
         -X POST \
         https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[PRIMARY_INSTANCE_NAME]/failover
    

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

レガシー構成: レプリケーション ラグのアラートの作成

フェイルオーバー オペレーションに必要な時間は、フェイルオーバー開始時のレプリケーション ラグの量に依存します。Google Cloud Console で Google Cloud のオペレーション スイート Monitoring を使用すると、レプリケーション ラグがしきい値を超えたときにアラートを受け取ることができます。

レプリケーション ラグの詳細については、MySQL ドキュメントの SHOW SLAVE STATUS 構文ページの "seconds_behind_master" を検索してください。

Google Cloud のオペレーション スイート Monitoring の詳細については、Google Cloud のオペレーション スイート Monitoring のドキュメントをご覧ください。

レガシー構成: 特定のフェイルオーバー レプリカのアラートを設定する

  1. 左上にある Google Cloud のオペレーション スイートのロゴをクリックして、Google Cloud のオペレーション スイート [Monitoring] ページに戻ります。
  2. [通知ポリシーの作成] をクリックします。
  3. アラートの記述名を入力します。
  4. [指標しきい値] を選択し、[次へ] をクリックして [ターゲット] タブを開きます。
  5. [リソースの種類] には、[Cloud SQL] を選択します。
  6. [適用対象] には、[単一] を選択してフェイルオーバー レプリカを選択します。
  7. [次へ] をクリックして [設定] タブを開きます。
  8. 次の値を入力します。

    フィールド
    指標 Seconds Behind Master
    条件 above
    しきい値 120(または、環境に適切な任意の値)
    継続時間 3 minutes

  9. 適切な通知方法を選択し、[条件を保存] をクリックします。

レガシー構成: フェイルオーバー レプリカのグループのアラートの設定

同じプロジェクトに複数のフェイルオーバー レプリカを作成する場合、個々のフェイルオーバー レプリカにアラートを設定するより、グループ全体にアラートを設定する方が簡単です。 モニタリング グループを作成するには、フェイルオーバー レプリカの名前に "-failover" などの接尾辞を使用します。この接尾辞を他の種類の Cloud SQL インスタンスに使用していないことを確認してください。

フェイルオーバー レプリカを作成するには:

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

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

  2. 左側のメニューから [Monitoring] を選択して、Google Cloud のオペレーション スイートの [Monitoring] ページを開き、ログインします。
  3. 上部のメニューから [グループ] > [作成...] を選択します。
  4. グループの記述名を入力します。
  5. [名前] と [含む] を選択したままにして、名前の従属文字列を入力します。
  6. [グループを保存] をクリックします。新しいグループの概要ページが開きます。
  7. 目的のインスタンスがグループに含まれていることを確認します。

フェイルオーバー レプリカ グループのアラートを作成するには:

  1. 左上にある Google Cloud のオペレーション スイートのロゴをクリックして、Google Cloud のオペレーション スイート [Monitoring] ページに戻ります。
  2. [通知ポリシーの作成] をクリックします。
  3. グループ アラートの記述名を入力します。
  4. [指標しきい値] を選択し、[次へ] をクリックして [ターゲット] タブを開きます。
  5. [リソースの種類] には、[Cloud SQL] を選択します。
  6. [適用対象] には、[グループ] を選択してフェイルオーバー グループを選択します。
  7. [違反者] を選択したままにして、[次へ] をクリックして [設定] タブを開きます。
  8. 次の値を入力します。

    フィールド
    指標 Seconds Behind Master
    条件 above
    しきい値 120(または、環境に適切な任意の値)
    継続時間 3 minutes

  9. 適切な通知方法を選択し、[条件を保存] をクリックします。

レガシー構成: インスタンスでの高可用性の無効化

プライマリ インスタンスで高可用性を無効にするには、フェイルオーバー レプリカ インスタンスを削除する必要があります。

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

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

Console

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

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

  2. 高可用性を無効にするインスタンスのフェイルオーバー インスタンスを選択します。
  3. [インスタンスの詳細] ページで、[削除] をクリックします。
  4. レプリカの削除ウィンドウで、フェイルオーバー インスタンスの名前を再度入力します。
  5. [削除] をクリックします。元のインスタンスの構成がゾーンに変わります。

gcloud

参照情報については、gcloud sql instances delete をご覧ください。
gcloud sql instances delete [FAILOVER_REPLICA_NAME]

cURL

次のリクエストでは、instances:delete メソッドを使用してインスタンスを削除します。
gcloud auth login
ACCESS_TOKEN="$(gcloud auth print-access-token)"
curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
     --header 'Content-Type: application/json'\
      -X DELETE\
https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[INSTANCE_NAME]

次のステップ