リードレプリカの作成

このページでは、Cloud SQL インスタンスのリードレプリカを作成する方法について説明します。

リードレプリカはマスターのコピーで、マスター インスタンスへの変更がほぼリアルタイムで反映されます。マスターからの読み取りリクエストやアナリティクス トラフィックをオフロードするには、レプリカを作成します。1 つのマスター インスタンスに対して複数のリードレプリカを作成できます。

リードレプリカは読み取り専用です。書き込みはできません。

レプリケーション機能の詳細については、レプリケーションを構成するための要件とヒントをご覧ください。

始める前に

このインスタンスの最初のレプリカを作成する場合は、インスタンスがマスター インスタンスの要件を満たしていることを確認してください。詳細

リードレプリカの作成

リードレプリカの作成手順は、第 2 世代インスタンスと第 1 世代インスタンスとで異なります。

第 2 世代のマスターのリードレプリカ

第 2 世代のマスターのリードレプリカを作成するには:

Console(第 2 世代)

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

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

  2. レプリカを作成するインスタンスを探して、リストの右端にある [more actions] メニューを開きます。
  3. [リードレプリカを作成] を選択します。

    この選択肢が表示されていない場合、そのインスタンスはレプリカであることを示します。レプリカのレプリカを作成することはできません。

  4. インスタンスのバックアップとバイナリ ロギングが有効になっている場合は、ステップ 6 に進みます。そうでない場合は、[バックアップを自動化する] と [バイナリ ロギングを有効にする] を選択してから [続行] をクリックします。さらに、[保存して再起動] をクリックして、インスタンスを再起動します。

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

  5. [リードレプリカの作成] ページで、インスタンス ID を更新します。また、必要に応じて、名前、リージョン、ゾーンなどの必須の構成オプションを更新します。
  6. [作成] をクリックします。

    Cloud SQL により、必要に応じてバックアップが作成され、レプリカが作成されます。マスターのインスタンスのページに戻ります。

gcloud(第 2 世代)

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

    databaseReplicationEnabled プロパティが true の場合、そのインスタンスはレプリカであることを示します。レプリカのレプリカを作成することはできません。

  2. backupConfiguration 内の enabled プロパティが false の場合、この時点でマスター インスタンスのバックアップを有効にします。
    gcloud sql instances patch [MASTER_INSTANCE_NAME] --backup-start-time [HH:MM]
    backup-start-time パラメータは、UTC±00 タイムゾーンの 24 時間で指定され、4 時間のバックアップ期間の開始を指定します。バックアップはバックアップ時間枠の任意の時刻に開始できます。
  3. binaryLogEnabled プロパティが false の場合、バイナリログを有効にします。
    gcloud sql instances patch --enable-bin-log [MASTER_INSTANCE_NAME]
    バイナリログを有効にすると、インスタンスが再起動されます。
  4. レプリカを作成します。
        gcloud sql instances create [REPLICA_NAME] --master-instance-name=[MASTER_INSTANCE_NAME]
        

    必要に応じて、--tier パラメータを使用して異なる階層サイズを指定できます。

    --region パラメータを使用して別のリージョンを指定できます。

REST(第 2 世代)

  1. 現在のバックアップ構成を取得する

    インスタンス リソースの get メソッドを使用して、マスターのデータベース バージョンと現在のバックアップ構成を取得します。

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

    • project-id: プロジェクト ID
    • primary-instance-name: プライマリ マスター インスタンスの名前

    HTTP メソッドと URL:

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

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

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

  2. レプリケーション フィールドが設定されていることを確認する

    enabled または pointInTimeEnabled のいずれかが false の場合、インスタンス リソースの patch メソッドを使用して、両方を有効にします。リクエストで、変更するバックアップ構成のプロパティを指定します。

    バックアップを有効にするには、enabledtrue に設定し、startTimeHH:MM 形式の時間帯に設定します。startTime パラメータは、UTC±00 タイムゾーンの 24 時間で指定され、4 時間のバックアップ期間の開始を指定します。バックアップはバックアップ時間枠の任意の時刻に開始できます。

    ポイントインタイム リカバリを有効にするには、pointInTimeEnabledtrue に設定します。

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

    • project-id: プロジェクト ID
    • instance-id: インスタンス ID
    • start-time: 「HH:MM」形式の時刻

    HTTP メソッドと URL:

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

    JSON 本文のリクエスト

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

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

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

  3. リードレプリカを作成する

    インスタンス リソースの insert メソッドを使用してリードレプリカを作成します。databaseVersion プロパティはマスターと同じにする必要があります。クロスリージョン リードレプリカの場合は、マスター インスタンスと異なるリージョンを指定します。

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

    • project-id: プロジェクト ID
    • primary-instance-name: プライマリ(マスター)インスタンスの名前
    • primary-instance-region: プライマリ(マスター)インスタンスのリージョン
    • replica-region: レプリカ インスタンスのリージョン
    • replica-name: レプリカ インスタンスの名前
    • machine-type: マシン(階層)タイプの列挙型文字列。例: db-n1-standard-4

    HTTP メソッドと URL:

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

    JSON 本文のリクエスト

        {
          "masterInstanceName": "primary-instance-name",
          "project": "project-id",
          "name": "replica-name",
          "region": "replica-region",
          "settings":
          {
            "tier": "machine-type",
            "settingsVersion": 0,
          }
        }
        

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

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

第 1 世代のマスターのリードレプリカ

第 1 世代のマスターのリードレプリカを作成するには、次の手順に従います。

Console(第 1 世代)

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

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

  2. レプリカを作成するインスタンスを見つけ、一覧の一番右にある [その他の操作] メニューを開きます。

    その他メニューの画像

  3. [リードレプリカを作成] を選択します。
  4. インスタンスのバックアップとバイナリ ロギングが有効になっている場合は、ステップ 7 に進みます。そうでない場合は、[バックアップを自動化する] と [バイナリ ロギングを有効にする] オンにしてから [続行] をクリックします。

    バックアップを有効にする際のステッパーの画像

  5. [保存して再起動] をクリックしてバイナリ ロギングを有効にし、インスタンスを再起動します。

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

  6. インスタンスのバックアップがない場合は、バックアップが作成されるまで待機する必要があります。

    インスタンスのバックアップの時間枠によって、バックアップの作成には最大 24 時間かかる場合があります。

  7. [リードレプリカの作成] ページで、必要に応じてインスタンス ID とその他の設定を更新します。
  8. [作成] をクリックします。

    Cloud SQL によりレプリカが作成され、マスターのインスタンスのページに戻ります。

gcloud(第 1 世代)

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

    databaseReplicationEnabled プロパティが true の場合、そのインスタンスはレプリカであることを示します。レプリカのレプリカを作成することはできません。

  2. backupConfiguration 内の enabled プロパティが false の場合、この時点でマスター インスタンスのバックアップを有効にします。
    gcloud sql instances patch [MASTER_INSTANCE_NAME] --backup-start-time [HH:MM]
    backup-start-time パラメータは、UTC±00 タイムゾーンの 24 時間で指定され、4 時間のバックアップ期間の開始を指定します。バックアップはバックアップ時間枠の任意の時刻に開始できます。
  3. binaryLogEnabled プロパティが false の場合、バイナリログを有効にします。
    gcloud sql instances patch --enable-bin-log [MASTER_INSTANCE_NAME]
    バイナリログを有効にすると、インスタンスが再起動されます。
  4. 少なくとも 1 つの正常なバックアップが存在することを確認します。
    gcloud sql backups list --instance [MASTER_INSTANCE_NAME]

    このコマンドで 1 つ以上のバックアップが返された場合、次のステップに進みます。それ以外の場合は、次へ進む前に、バックアップが作成されるまで待機しなければなりません。インスタンスのバックアップの時間枠によって、これには最大 24 時間かかる場合があります。

  5. レプリカを作成します。
        gcloud sql instances create [REPLICA_NAME] --master-instance-name [MASTER_INSTANCE_NAME]
        

    必要に応じて、--tier パラメータを使用して異なる階層サイズを指定できます。

cURL(第 1 世代)

  1. インスタンス リソースの get メソッドを使用して、現在のバックアップ構成の値を返します。たとえば、cURL を使用すると、リクエストは次のようになります。
        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             -X GET \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[MASTER_INSTANCE_NAME]?fields=settings
        

    出力に backupConfiguration が含まれます。

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

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

        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/[MASTER_INSTANCE_NAME]
        
  3. インスタンスにバックアップがあるかどうか確認します。
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             -X GET \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances/[MASTER_INSTANCE_NAME]/backupRuns
        

    バックアップが 1 つも表示されない場合は、次のステップに進む前に、バックアップが作成されるまで待機する必要があります。バックアップの時間枠によって、これには最大 24 時間かかる場合があります。

  4. インスタンス リソースの insert メソッドを使用してリードレプリカを作成します。リージョンは、マスターのリージョンと同じでなければなりません。

        gcloud auth login
        ACCESS_TOKEN="$(gcloud auth print-access-token)"
        curl --header "Authorization: Bearer ${ACCESS_TOKEN}" \
             --header 'Content-Type: application/json' \
             --data '{"masterInstanceName": "[MASTER_INSTANCE_NAME]", "name": "[REPLICA_NAME]", "region": "[REGION]", \
                      "settings": {"tier":"[TIER]", "replicationType": "ASYNCHRONOUS"}}' \
             -X POST \
             https://www.googleapis.com/sql/v1beta4/projects/[PROJECT-ID]/instances
        

次のステップ