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

このページでは、高可用性(HA)のための MySQL インスタンスの以前の構成について説明します。

以前の HA 構成では、Cloud SQL for MySQL インスタンスでフェイルオーバー レプリカを使用することによって、そのインスタンスに高可用性を追加します。この機能は Google Cloud コンソールにはありません。推奨される構成ではフェイルオーバー レプリカは使用されません。代わりに、現在の高可用性構成では、Google のリージョン永続ディスクを使用して、リージョン内の 2 つのゾーン間でブロックレベルでデータを同期的に複製します。

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

以前の高可用性構成から現在の高可用性構成にインスタンスを更新する

インスタンスを以前の高可用性構成から現在の高可用性構成に更新する手順は次のとおりです。

  1. インスタンスを現在の高可用性構成に更新します。

    1. 更新する MySQL インスタンスのフェイルオーバー レプリカを削除します。詳細については、インスタンスで高可用性を無効にするをご覧ください。
    2. 最新バージョンの高可用性を使用するようにプライマリ インスタンスを構成します。詳細については、高可用性向けに既存のインスタンスを構成するをご覧ください。

    別のオプションとして、Database Migration Service を使用して、現在の高可用性構成を使用するインスタンスに移行することもできます。

  2. リードレプリカ インスタンスを作成して、プライマリ インスタンスで実行しない読み取りワークロードをオフロードします。

フェイルオーバーを開始する

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

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

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 コンソールにある Cloud Monitoring を使用すると、レプリケーション ラグがしきい値を超えたときにアラートを受け取ることができます。

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

Cloud Monitoring の詳細については、Cloud Monitoring のドキュメントをご覧ください。

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

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[アラート] を選択します。
  2. [アラート ポリシーを作成] をクリックします。
  3. アラートの記述名を入力します。
  4. [指標しきい値] を選択し、[次へ] をクリックして [ターゲット] タブを開きます。
  5. [リソースの種類] には、[Cloud SQL] を選択します。
  6. [適用対象] には、[単一] を選択してフェイルオーバー レプリカを選択します。
  7. [次へ] をクリックして [設定] タブを開きます。
  8. 次の値を入力します。

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

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

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

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

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

  1. Google Cloud コンソールで [Monitoring] ページに移動します。

    [Monitoring] に移動

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

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

  1. Google Cloud コンソールのナビゲーション パネルで、[Monitoring] を選択してから、[アラート] を選択します。
  2. [アラート ポリシーを作成] をクリックします。
  3. グループ アラートの記述名を入力します。
  4. [指標しきい値] を選択し、[次へ] をクリックして [ターゲット] タブを開きます。
  5. [リソースの種類] には、[Cloud SQL] を選択します。
  6. [適用対象] には、[グループ] を選択してフェイルオーバー グループを選択します。
  7. [違反者] を選択したままにして、[次へ] をクリックして [構成] タブを開きます。
  8. 次の値を入力します。

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

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

レガシー構成: インスタンスで高可用性を無効にする

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

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

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

コンソール

  1. Google Cloud コンソールで 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

次のステップ