バックアップを管理

このページでは、Memorystore for Redis Cluster のバックアップ オペレーションを実行する方法について説明します。このページをお読みいただく前に、バックアップを十分に理解しておく必要があります。

始める前に

  1. ユーザーまたは使用しているユーザー アカウントに、操作を行うための必要な権限があることを確認します。

    Redis 管理者ロールと Redis 編集者ロールは、すべてのバックアップ オペレーションを実行できます。Redis 閲覧者ロールは、バックアップの表示とエクスポートを行うことができます。

  2. Google Cloud CLI をインストールして更新します

オンデマンド バックアップを開始する

オンデマンド バックアップを行うには、次のコマンドを使用します。

gcloud

gcloud redis clusters create-backup INSTANCE_ID \
--backup-id=BACKUP_ID \
--ttl=TTL_PERIOD \
--project=PROJECT_ID \
--region=REGION

次のように置き換えます。

  • INSTANCE_ID は、Memorystore for Redis Cluster インスタンスの ID です。
  • BACKUP_ID は、december-2024-backup などのバックアップの ID です。
  • TTL_PERIOD は、バックアップの有効期間(TTL)を指定します。バックアップは、TTL の上限に達すると自動的に削除されます。日数を設定します。例: 14d最小値は 1 日です。指定しない場合、デフォルト値は 100 年です。
  • PROJECT_ID はプロジェクト ID です。
  • REGION は、クラスタが配置されているリージョンです(例: us-east1)。

このコマンドは、次の形式でオペレーション名を返します。

projects/PROJECT_ID/locations/REGION/operations/operation-UID

gcloud redis operations describe コマンドを使用して、オペレーションのステータスを確認できます。

gcloud redis operations describe projects/PROJECT_ID/locations/REGION/operations/operation-UID

gcloud redis operations list コマンドを使用して、プロジェクトとリージョン内のすべてのオペレーションを一覧表示することもできます。

自動バックアップ スケジュールを構成する

日次バックアップ スケジュールは、新しいクラスタの作成時に構成することも、既存のクラスタで有効にすることもできます。

自動バックアップ スケジュールが有効なクラスタを作成する

次の例は、新しいクラスタの作成時に日次バックアップ スケジュールを設定する方法を示しています。クラスタの作成時に使用できるその他のオプションについては、インスタンスを作成するをご覧ください。

gcloud

gcloud redis clusters create INSTANCE_ID \
--automated-backup-mode=ENABLED \
--automated-backup-start-time=START_TIME \
--automated-backup-ttl=RETENTION_POLICY

次のように置き換えます。

  • INSTANCE_ID は、作成する Memorystore for Redis Cluster インスタンスの ID です。
  • START_TIME A は、バックアップの開始時刻を指定します。時刻は、UTC 時間の 24 時間制で HH:00 の形式で指定します。例: 23:00
  • RETENTION_POLICY は、各バックアップを保持する日数を指定します。日数を設定します(例: 7d)。最大値は 365 日で、デフォルト値は 35 日です。

    クラスタが削除された後も、バックアップは保持期間(最大 365 日)保持されます。保持期間が終了する前にバックアップを削除するには、バックアップを手動で削除する必要があります。

既存のクラスタでスケジュールされたバックアップを有効にする

gcloud

gcloud redis clusters update INSTANCE_ID \
--automated-backup-mode=enabled \
--automated-backup-start-time=START_TIME \
--automated-backup-ttl=RETENTION_POLICY

次のように置き換えます。

  • INSTANCE_ID は、更新する Memorystore for Redis Cluster インスタンスの ID です。
  • START_TIME バックアップの開始時刻を指定するタイムスタンプ。タイムスタンプは時間レベルで指定し、バックアップが開始される 1 時間の期間を指定する必要があります(例: 2024-01-01T01:00:00Z)。

  • RETENTION_POLICY は、各バックアップを保持する日数を指定します。日数を設定します(例: 7d)。

    クラスタが削除された後も、バックアップは保持期間の間保持されます。保持期間が終了する前にバックアップを削除するには、バックアップを手動で削除する必要があります。

スケジュールされたバックアップを無効にする

次のコマンドを使用して、クラスタでスケジュールされたバックアップを無効にします。

gcloud

gcloud redis clusters update INSTANCE_ID \
--automated-backup-mode=disabled

INSTANCE_ID は、更新する Memorystore for Redis Cluster インスタンスの ID に置き換えます。

バックアップとクラスタ更新オペレーション間の同時実行

クラスタの更新オペレーションとメンテナンス オペレーションは、次の状況で進行中のバックアップ オペレーションをキャンセルできます。

  • クラスタの更新オペレーションが進行中の場合、バックアップ オペレーション リクエストは拒否されます。
  • 進行中のバックアップ オペレーションがある場合、クラスタを更新する受信オペレーションによって、進行中のバックアップ オペレーションがキャンセルされて失敗する可能性があります。
  • まれに、メンテナンス オペレーションとバックアップ オペレーションが同時に実行され、そのインスタンスのバックアップ オペレーションがスキップされることがあります。

バックアップの一覧と説明を取得する

以降のセクションでは、利用可能なバックアップに関する情報を確認する方法について説明します。

バックアップ コレクションを一覧表示する

バックアップ コレクションには、クラスタ内のすべてのバックアップが含まれます。次のコマンドを使用して、指定したプロジェクトとリージョンのバックアップ コレクションを一覧表示します。

gcloud

gcloud redis clusters backup-collections list \
--project=PROJECT_ID \
--region=REGION

次のように置き換えます。

  • REGION は、クラスタが配置されているリージョンです(例: us-east1)。
  • PROJECT_ID はプロジェクト ID です。

このコマンドは、次のようなバックアップ コレクションのリストを返します。

BACKUP_COLLECTION_NAME                CLUSTER_NAME                                           CLUSTER_UID
6d9e1ff4-0f89-4c0a-a941-155dd4c3a213  projects/PROJECT_ID/locations/REGION/clusters/cluster1  6e539aed-ee7b-4eea-83ad-b4715b1ef160
dda2f551-b416-47ff-b1cf-684e00483dc9  projects/PROJECT_ID/locations/REGION/clusters/cluster2  57130520-636c-4ac7-ad7e-86f7cfb32838

バックアップ コレクションのバックアップを一覧表示する

次のコマンドを使用して、バックアップ コレクション内のバックアップを一覧表示します。

gcloud

gcloud redis clusters backups list \
--backup-collection=BACKUP_COLLECTION
--project=PROJECT_ID \
--region=REGION

次のように置き換えます。

  • BACKUP_COLLECTION は、バックアップ コレクションの名前です。
  • REGION は、クラスタが配置されているリージョン(us-east1 など)です。
  • PROJECT_ID はプロジェクト ID です。

このコマンドは、次のようなバックアップのリストを返します。

BACKUP_NAME  STATE   CREATE_TIME                     EXPIRE_TIME
backup-1     ACTIVE  2024-11-10T03:52:40.899882388Z  2124-11-10T03:53:02.856981736Z
backup-2     ACTIVE  2024-11-11T03:48:22.137134936Z  2124-11-11T03:48:44.130735425Z

バックアップを記述する

特定のバックアップに関する情報を取得するには、次のコマンドを使用します。

gcloud

gcloud redis clusters backups describe BACKUP_NAME \
--backup-collections=BACKUP_COLLECTION
--project=PROJECT_ID \
--region=REGION

次のように置き換えます。

  • BACKUP_NAME は、2024-05-01-10-15-00 などのバックアップの名前です。
  • BACKUP_COLLECTION は、バックアップ コレクションの名前です。
  • REGION は、クラスタが配置されているリージョン(us-east1 など)です。
  • PROJECT_ID はプロジェクト ID です。

このコマンドは、次のようなバックアップに関する情報を返します。

backupFiles:
- createTime: '2024-11-10T03:52:55.539Z'
fileName: 3d2774dab822137c5bac9386f3fa69ee4c73b928.rdb
sizeBytes: '694879680'
- createTime: '2024-11-10T03:52:54.742Z'
fileName: 7f5d99faaefc63ed8292a71da2552db3b06cdcff.rdb
sizeBytes: '694925906'
- createTime: '2024-11-10T03:52:54.972Z'
fileName: 0aac1092a3fb81515aefb6b2421f31eb346c3961.rdb
sizeBytes: '694784169'
cluster: projects/PROJECT_ID/locations/us-east1/clusters/cluster1
clusterUid: 57130520-636c-4ac7-ad7e-86f7cfb32838
createTime: '2024-11-10T03:52:40.899882388Z'
expireTime: '2124-11-10T03:53:02.856981736Z'
name: projects/PROJECT_ID/locations/us-east1/backupCollections/dda2f551-b416-47ff-b1cf-684e00483dc9/backups/december-2024-backup
nodeType: REDIS_HIGHMEM_MEDIUM
shardCount: 3
state: ACTIVE
totalSizeBytes: '2084589755'

バックアップを削除する

バックアップを削除するには、次のコマンドを使用します。

gcloud

gcloud redis clusters backups delete BACKUP_NAME \
--backup-collection=BACKUP_COLLECTION
--project=PROJECT_ID \
--region=REGION

次のように置き換えます。

  • BACKUP_NAME は、2024-05-01-10-15-00 などのバックアップの名前です。
  • BACKUP_COLLECTION は、バックアップ コレクションの名前です。
  • REGION は、クラスタが配置されているリージョン(us-east1 など)です。
  • PROJECT_ID はプロジェクト ID です。

バックアップをストレージ バケットにエクスポートする

バックアップを Cloud Storage バケットにエクスポートできます。転送先バケットはリージョン バケットであり、バックアップと同じリージョンに存在する必要があります。Memorystore for Redis Cluster には、Cloud Storage バケットにアクセスし、バケット内にフォルダとオブジェクトを作成する権限が必要です。

次の手順は、バックアップをエクスポートする方法を示しています。

  1. Memorystore for Redis Cluster には、宛先 Cloud Storage バケットにアクセスする権限が必要です。Memorystore for Redis Cluster サービス エージェントに Cloud Storage リソースへのアクセス権を付与します。

    Memorystore for Redis Cluster サービス エージェントは、次の命名形式を使用します。

    service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com
    

    PROJECT_NUMBER は、クラスタまたはバックアップが配置されているプロジェクトのプロジェクト番号に置き換えます。

    サービス エージェントに、storage.buckets.getstorage.objects.createstorage.objects.deletestorage.folders.create の権限を付与するロールを付与します。たとえば、次のコマンドは、指定されたバケットに対する Storage Admin ロールを Memorystore for Redis Cluster サービス エージェントに付与します。

    gcloud

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
    --member=serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com \
    --role=roles/storage.admin
    

    次のように置き換えます。

    • BUCKET_NAME は、宛先バケットの名前です。
    • PROJECT_NUMBER は、サービス エージェント名で使用されるプロジェクト番号です。
  2. gcloud redis clusters backups export コマンドを使用して、バックアップを Cloud Storage バケットにエクスポートします。

    gcloud

    gcloud redis clusters backups export BACKUP_NAME \
    --region=REGION \
    --backup-collection=BACKUP_COLLECTION \
    --gcs-bucket=BUCKET
    

    次のように置き換えます。

    • BACKUP_NAME は、Memorystore for Redis Cluster バックアップの名前です。
    • BACKUP_COLLECTION は、バックアップ コレクションの名前です。
    • REGION は、バックアップ コレクションが配置されているリージョンです(例: us-east1)。
    • BUCKET_NAME は、接頭辞 gs:// が付いていない Cloud Storage バケットです。

    バケットはリージョン バケットであり、バックアップと同じリージョンに存在している必要があります。Memorystore for Redis Cluster には、Cloud Storage バケットにアクセスし、バケット内にフォルダとオブジェクトを作成する権限が必要です。

バックアップからデータを復元する

バックアップからデータを復元するには、同じプロジェクトのマネージド バックアップから新しいクラスタをシードするか、ストレージ バケット内の RDB ファイルから新しいクラスタをシードします。RDB ファイルからクラスタをシードするには、Memorystore for Redis Cluster にファイルへのアクセス権が必要です。

バックアップから新しいクラスタをシードする

次の例は、バックアップから新しいクラスタにデータをインポートする方法を示しています。バックアップは、新しいクラスタと同じリージョンに存在する必要があります。クラスタを作成するプリンシパルには、バックアップに対する redis.backups.get 権限が必要です。

クラスタの作成時に使用できるその他のオプションについては、インスタンスを作成するをご覧ください。

gcloud

gcloud redis clusters create INSTANCE_ID \
--import-managed-backup=BACKUP_NAME \
--region=REGION

次のように置き換えます。

  • INSTANCE_ID は、作成する Memorystore for Redis Cluster インスタンスの ID です。
  • BACKUP_NAME は、マネージド バックアップの名前です。例: projects/PROJECT_ID/locations/REGION/backupCollections/BACKUP_COLLECTION_ID/backups/BACKUP_ID
  • REGION は、クラスタが配置されているリージョン(us-east1 など)です。

ストレージ バケット内の RDB ファイルから新しいクラスタをシードする

次の例は、Cloud Storage バケット内の RDB ファイルから新しいクラスタにデータをインポートする方法を示しています。バケットは、新しいクラスタと同じリージョンのリージョン バケットか、1 つのリージョンが同じデュアルリージョン バケットである必要があります。

Cloud Storage の RDB ファイルからクラスタをシードするには、Memorystore for Redis クラスタに Cloud Storage バケットとオブジェクトへのアクセス権を付与してから、作成オペレーションを実行する必要があります。

  1. Memorystore for Redis Cluster には、Cloud Storage オブジェクトにアクセスする権限が必要です。Memorystore for Redis Cluster サービス エージェントに Cloud Storage リソースへのアクセス権を付与します。

    Memorystore for Redis Cluster サービス エージェントは、次の命名形式を使用します。

    service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com

    PROJECT_NUMBER は、新しいクラスタを作成するプロジェクトのプロジェクト番号に置き換えます。

    サービス エージェントに storage.buckets.get 権限と storage.objects.get 権限を付与するロールを付与します。たとえば、次のコマンドは、Cloud Storage バケットに Storage Admin ロールを付与します。

    gcloud

    gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME --member=serviceAccount:service-PROJECT_NUMBER@cloud-redis.iam.gserviceaccount.com --role=roles/storage.admin
    

    次のように置き換えます。

    • BUCKET_NAME は、RDB ファイルが配置されているバケットの名前です。
    • PROJECT_NUMBER は、サービス エージェント名で使用されるプロジェクト番号です。
  2. 次の例は、Cloud Storage バケット内の RDB ファイルから新しいクラスタにデータをインポートする方法を示しています。クラスタの作成時に使用できるその他のオプションについては、インスタンスを作成するをご覧ください。

    gcloud

    gcloud redis clusters create INSTANCE_ID \
    --import-gcs-object-uris=URI \
    --region=REGION
    

    次のように置き換えます。

    • INSTANCE_ID は、作成する Memorystore for Redis Cluster インスタンスの ID です。
    • URI は、カンマ(,)で区切られた 1 つ以上の Cloud Storage URI です。たとえば、gs://my-bucket/folder/file1.rdb,gs://my-bucket/folder/file2.rdb です。
    • REGION は、クラスタが配置されているリージョン(us-east1 など)です。

Cloud Monitoring の指標

Cloud Monitoring の指標を使用して、最近のバックアップ オペレーションとインポート オペレーションをモニタリングできます。Memorystore for Redis Cluster バックアップで使用可能な指標のリストについては、バックアップ指標をご覧ください。

次のステップ