バックアップを管理する

このページでは、Bigtable のバックアップ オペレーション、およびテーブルをバックアップして新しいテーブルに復元する方法について説明します。このページをお読みいただく前に、バックアップを十分に理解しておく必要があります。

Bigtable バックアップの操作には、次のものを使用できます。

API に直接アクセスすることもできますが、Cloud Bigtable クライアント ライブラリでサポートされていない言語を使用する必要がある場合にのみ使用することを強くおすすめします。

始める前に

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

gcloud CLI を使用する場合は、Bigtable 向けの gcloud CLI をインストールします。

自動バックアップを使用する

テーブルを作成または更新するときに、gcloud CLI を使用して自動バックアップを有効にできます。バックアップを削除更新コピー復元する手順は、バックアップが手動で作成されても自動バックアップの結果として作成されても、同じです。

プレビュー中、自動バックアップを有効にする予定の場合には、次の点を考慮してください。

  • 自動バックアップが有効なテーブルを含むインスタンスにクラスタを追加した場合、追加されたクラスタでは日次バックアップは作成されません。新しく追加されたクラスタを含むすべてのクラスタで日次バックアップを作成するには、テーブルの自動バックアップを無効にしてから、自動バックアップを再度有効にします。
  • 自動バックアップが有効になっているテーブルが削除され、同時に削除が取り消された場合は、復元したテーブルで自動バックアップを再度有効にする必要があります。
  • テーブルの自動バックアップを復元しても、復元されたテーブルで自動バックアップが自動的に有効にはなりません。自動バックアップは手動で有効にする必要があります。

自動バックアップを有効にする

テーブルの自動バックアップを有効にするには、gcloud bigtable instances tables update コマンドを実行します。テーブルの作成時に自動バックアップを有効にする詳細については、テーブルを作成するをご覧ください。

テーブルで自動バックアップ ポリシーが有効になってから、更新された構成が有効になるまでに最大 1 時間かかることがあります。

gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--enable-automated-backup

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

  • TABLE_ID: バックアップされるテーブルの ID。
  • INSTANCE_ID: インスタンスの永続的な識別子。
  1. インスタンス ID がわからない場合は、bigtable instances list コマンドを使用して、プロジェクトのインスタンスのリストを表示します。

      gcloud bigtable instances list
    
  2. テーブルのリストを表示して、バックアップするテーブルの ID を確認します。

        gcloud bigtable instances tables list --instances=INSTANCE_ID
    

自動バックアップの一部として作成されたバックアップには、auto で始まる ID が割り当てられます。たとえば、ID が my-table のテーブルは、auto.my-table.c7x3.20230220-1455 のような自動バックアップ ID を持ちます。そこでは、my-table は、切り捨てられたテーブル ID で、c7x3 は、一意のハッシュ ID で、20230220-1455 は UTC 形式の日時です。

自動バックアップを無効にする

既存のテーブルの自動バックアップを無効にするには、gcloud bigtable instances tables update コマンドを実行します。

テーブルに対して自動バックアップ ポリシーが無効になってから、更新された構成が有効になるまでに最大 1 時間かかることがあります。最初のバックアップが利用可能になるまでに、最大で 24 時間かかることがあります。

gcloud bigtable instances tables update TABLE_ID \
--instance=INSTANCE_ID \
--disable-automated-backup

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

  • TABLE_ID: テーブルの ID。
  • INSTANCE_ID: インスタンスの永続的な識別子。

自動バックアップ ポリシーを表示する

テーブルの自動バックアップ ポリシーを表示するには、gcloud bigtable instances tables describe コマンドを実行します。

gcloud bigtable instances tables describe TABLE_ID \
--instance=INSTANCE_ID

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

  • TABLE_ID: テーブルの ID。
  • INSTANCE_ID: インスタンスの永続的な識別子。

出力は次のようになります。

automatedBackupPolicy:
  retentionPeriod: 3d
  frequency: 24h
columnFamilies:
  my-family: {}
createTime: '2023-02-07T20:10:55.613546Z'
granularity: MILLIS
name: projects/my-project/instances/my-instance/tables/my-table
updateTime: '2023-02-07T20:10:55.613546Z'

次の点にご注意ください。

  • テーブルに対して自動バックアップが有効になっていない場合、automatedBackupPolicy フィールドはありません。
  • retentionPeriod は、自動的に作成されたバックアップの保持期間を示します。バックアップの保持期間は、バックアップの作成時から最大 90 日まで変更できます。バックアップの保持期間を更新するには、バックアップを変更するをご覧ください。

バックアップの作成

コンソール

  1. Google Cloud コンソールの Bigtable インスタンス ページに移動します。

    インスタンスのリストを開く

  2. バックアップするテーブルを含むインスタンスをクリックします。

  3. 左側のナビゲーション パネルで [テーブル] をクリックします。

  4. バックアップするテーブルの [バックアップの作成] をクリックします。

  5. レプリケーションを使用している場合は、プルダウン メニューを使用して、バックアップを保存するクラスタのクラスタ ID を選択します。([テーブル] ページでインスタンス ID ではなくクラスタ ID の横にある [バックアップの作成] をクリックすると、クラスタが事前に選択されます)

  6. バックアップの一意の ID を入力します。

  7. 有効期限を設定します。

  8. [作成] をクリックします。

    コンソールで [バックアップ] ページが開き、バックアップとその詳細が表示されます。

  9. [アクティビティ] をクリックしてバックアップのステータスを表示します。

    バックアップが完了すると、[ステータス] 列にバックアップ完了と表示されます。

gcloud

すべてのコマンドで、次の項目は、実際の値で置き換えます。

  • INSTANCE_ID: インスタンスの永続的な識別子。
  • CLUSTER_ID: クラスタの永続的な識別子。
  • TABLE_ID: バックアップするテーブルの ID。
  • BACKUP_ID: バックアップに割り当てる ID。
  • EXPIRATION_DATE: 今後 90 日以内の日付。「Zulu」UTC タイムスタンプ形式(精度はナノ秒)。

    : 2022-10-02T15:01:23.045123456Z

  • RETENTION_PERIOD: 最長 90 日の期間。単位には、m(分)、h(時間)、または d(日)を使用。

    : 36h または 89d

  1. インスタンス ID がわからない場合は、bigtable instances list コマンドを使用して、プロジェクトのインスタンスのリストを表示します。

    gcloud bigtable instances list
    
  2. バックアップ対象のテーブルを含むインスタンスのバックアップのリストを表示して、目的のクラスタでまだ使用されていないバックアップ ID を選択できるようにします。

    gcloud bigtable backups list --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID
    
  3. テーブルのリストを表示して、バックアップするテーブルの ID を確認します。

    gcloud bigtable instances tables list --instances=INSTANCE_ID
    
  4. gcloud bigtable instances backups create コマンドを実行して、テーブルからバックアップを作成します。有効期限または最大 90 日間の保持期間が指定されます。

    gcloud bigtable backups create BACKUP_ID --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID \
      --table=TABLE_ID \
      --async /
      --expiration-date=EXPIRATION_DATE \
      --retention-period=RETENTION_PERIOD
    

    --async フラグは省略可能です。オペレーションの完了前にターミナルがオペレーション ID を返すようにする場合に使用します。これは、オペレーションのステータスを確認する場合に役立ちます。

  5. バックアップの一覧を表示し、バックアップが作成されたかどうかを確認します。

    gcloud bigtable backups list --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID
    
  6. バックアップがリストにない場合は、オペレーションのステータスを確認してください。

    Ready のステータスは、バックアップが完了していることを示します。

バックアップから復元する

コンソール

Google Cloud コンソールを使用して別のプロジェクトに復元することはできません。必要な場合は、代わりに gcloud CLI を使用してください。

  1. Google Cloud コンソールの Bigtable インスタンス ページに移動します。

    インスタンスのリストを開く

  2. 復元するバックアップを含むインスタンスをクリックします。

  3. 左側のナビゲーション パネルで [バックアップ] をクリックします。

  4. 復元するバックアップの [復元] をクリックします。

  5. 接続するインスタンスを選択します。

    新しいテーブルに十分な容量のないインスタンスは使用できません。インスタンスでテーブルを作成する権限がない場合、そのインスタンスは使用できません。 アイコンにカーソルを合わせると、詳細情報が表示されます。

    CMEK で保護されたバックアップから復元する場合は、宛先インスタンスも CMEK で保護される必要があります。

    Google Cloud コンソールを使用して別のプロジェクトに復元することはできません。必要な場合は、代わりに gcloud CLI を使用してください。

  6. バックアップから作成されるテーブルの一意の ID を入力します。この ID を後で変更することはできません。

  7. [復元] をクリックします。

    コンソールが [テーブル] ページに変わり、新しいテーブルが表示されます。

    コンソールに各クラスタの復元ステータスが表示されます。すべてのクラスタの [ステータス] 列に [準備完了] と表示されると、テーブルは復元され、インスタンス内のすべてのクラスタに複製されています。

gcloud

すべてのコマンドで、次の項目は、実際の値で置き換えます。

  • PROJECT_ID_SOURCE: 復元元のバックアップを含むプロジェクトの ID。
  • INSTANCE_ID_SOURCE: 移行元インスタンスの永続的な ID。
  • PROJECT_ID_DESTINATION: 復元先のプロジェクトの ID。このフラグは省略可能です。このオプションを指定しない場合、バックアップは、それが作成された同じインスタンスの新しいテーブルに復元されます。
  • INSTANCE_ID_DESTINATION: 宛先インスタンスの永続的な ID。
  • CLUSTER_ID: クラスタの永続的な識別子。
  • BACKUP_ID: 復元元のバックアップの ID。
  • TABLE_ID_NEW: 新しいテーブルの ID。
  1. インスタンス ID がわからない場合は、bigtable instances list コマンドを使用して、プロジェクトのインスタンスのリストを表示します。

    gcloud bigtable instances list
    
  2. バックアップを含むインスタンスのバックアップの一覧を表示して、バックアップが存在することを確認します。

    gcloud bigtable backups list --instance=INSTANCE_ID_SOURCE \
      --cluster=CLUSTER_ID_SOURCE
    
  3. インスタンス内のテーブルの一覧を表示すると、未使用の新しいテーブルの ID を選択できます。

    gcloud bigtable instances tables list --instances=INSTANCE_ID_DESTINATION
    
  4. gcloud bigtable instances tables restore コマンドを実行して、バックアップから新しいテーブルに復元します。

    gcloud bigtable instances tables restore \
    --source=projects/PROJECT_ID_SOURCE/instances/INSTANCE_ID_SOURCE/clusters/CLUSTER_ID/backups/BACKUP_ID \
    --async \
    --destination=TABLE_ID_NEW \
    --destination-instance=INSTANCE_ID_DESTINATION \
    --project=PROJECT_ID_DESTINATION
    

    --async フラグは省略可能です。オペレーションの完了前にターミナルがオペレーション ID を返すようにする場合に使用します。これは、オペレーションのステータスを確認する場合に役立ちます。

  5. テーブルの一覧を表示して、テーブルが作成されたかどうかを確認します。

    gcloud bigtable instances tables list --instances=INSTANCE_ID_DESTINATION
    
  6. バックアップがリストにない場合は、オペレーションのステータスを確認してください。

バックアップのコピーを作成する

コンソール

コンソールを使用して、バックアップのコピーを別のプロジェクトに作成することはできません。必要な場合は、代わりに gcloud CLI を使用してください。

  1. Google Cloud コンソールの Bigtable インスタンス ページに移動します。

    インスタンスのリストを開く

  2. コピーするバックアップを含むインスタンスをクリックします。

  3. 左側のナビゲーション パネルで [バックアップ] をクリックします。

  4. コピーするバックアップの [復元] の横にあるその他アイコンを開き、[コピー] をクリックします。

  5. コピーを作成するバックアップの [コピー] をクリックします。

    バックアップが別のバックアップのコピーである場合、[コピー] は使用できません。

  6. 宛先インスタンスを選択します。

    コンソールを使用して、別のプロジェクトのバックアップのコピーを作成することはできません。必要な場合は、代わりに gcloud CLI を使用してください。

    バックアップ コピー用の十分な容量がないインスタンスは利用できません。インスタンスでバックアップを作成する権限がない場合、そのインスタンスは使用できません。 アイコンの上にポインタを置くと、詳細が表示されます。

    CMEK で保護されたバックアップをコピーする場合は、宛先インスタンスも CMEK で保護される必要があります。

  7. 宛先クラスタを選択します。

    他のバックアップと同様に、バックアップ コピーはインスタンス内の 1 つのクラスタにのみ保存されます。そのインスタンスがレプリケーションを使用している場合も同様です。

  8. バックアップから作成されるコピーの一意の ID を入力します。この ID を後で変更することはできません。

  9. バックアップ コピーの有効期限を設定します。[時間] に値を入力して、プルダウン メニューから単位を選択します。

  10. [コピー] をクリックします。

  11. コピーを表示するには、[コピーを表示] をクリックします。

    コンソールに宛先インスタンスの [バックアップ] ページが表示され、作成したバックアップ コピーが表示されます。ステータス列に「準備完了」が表示されている場合、コピーは完了し、以降のオペレーションの準備が整っています。

gcloud

すべてのコマンドで、次の項目は、実際の値で置き換えます。

  • PROJECT_ID_SOURCE: コピーされるバックアップを含むプロジェクト。
  • INSTANCE_ID_SOURCE: 移行元インスタンスの永続的な ID。
  • CLUSTER_ID_SOURCE: ソース バックアップが保存されているクラスタの ID。
  • BACKUP_ID_SOURCE: コピーするバックアップの ID。
  • PROJECT_ID_DESTINATION: コピーを配置するプロジェクト。
  • INSTANCE_ID_DESTINATION: 宛先インスタンスの永続的な ID。
  • CLUSTER_ID_DESTINATION: コピーを保存する宛先インスタンスのクラスタの ID。
  • BACKUP_ID_DESTINATION: バックアップのコピーに割り当てる ID。
  • RETENTION_PERIOD: バックアップ コピーの有効期間。数値と単位(d または h)で表します。たとえば、5 日間の場合は 5d、15 時間の場合は 15h です。この日付または有効期限のいずれかを使用します。
  • EXPIRATION_DATE: バックアップのコピーの有効期限が切れる日時(2022-09-01T10:00:00.0Z など)。
  1. インスタンス ID がわからない場合は、bigtable instances list コマンドを使用して、プロジェクトのインスタンスのリストを表示します。

    gcloud bigtable instances list
    
  2. バックアップを含むソース インスタンスのバックアップのリストを表示して、コピーするバックアップが存在することを確認します。

    gcloud bigtable backups list --instance=INSTANCE_ID_SOURCE \
    --cluster=CLUSTER_ID_SOURCE
    
  3. 宛先インスタンスのバックアップのリストを表示し、まだ使用されていないコピーの ID を選択します。

    gcloud bigtable backups list --instances=DESTINATION_INSTANCE
    
  4. gcloud bigtable instances backups copy コマンドを実行して、バックアップのコピーを作成します。

    gcloud bigtable backups copy \
      --source-project=PROJECT_ID_SOURCE \
      --source-instance=INSTANCE_ID_SOURCE \
      --source-cluster=CLUSTER_ID_SOURCE \
      --source-backup=BACKUP_ID_SOURCE \
      --destination-project=PROJECT_ID_DESTINATION \
      --destination-instance=INSTANCE_ID_DESTINATION \
      --destination-cluster=CLUSTER_ID_DESTINATION \
      --destination-backup=BACKUP_ID_DESTINATION \
    

    コマンドの末尾に次のいずれかを追加します。

    • --retention-period`=RETENTION_PERIOD: バックアップ コピーの保持期間。ソースのバックアップの作成時点から 6 時間以上 30 日以下にする必要があります。
    • --expiration-date`=EXPIRATION_DATE: バックアップのコピーの有効期限。ソースのバックアップの作成時点から 6 時間以上 30 日以下にする必要があります。

    必要に応じて、--async をコマンドに追加できます。オペレーションの完了前にターミナルがオペレーション ID を返すようにする場合に使用します。これは、オペレーションのステータスを確認する場合に役立ちます。

  5. バックアップの一覧を表示し、コピーが作成されたかどうかを確認します。

    gcloud bigtable backups list --instances=INSTANCE_ID_DESTINATION
    
  6. バックアップがリストにない場合は、オペレーションのステータスを確認してください。

容量制限が原因でバックアップ コピー オペレーションが失敗する場合は、別の宛先クラスタでもう一度お試しください。問題が解決しない場合は、サポートにお問い合わせください。

オペレーションのステータスを確認する

コンソール

  1. Google Cloud コンソールの Bigtable インスタンス ページに移動します。

    インスタンスのリストを開く

  2. バックアップを含むインスタンスをクリックします。

  3. 左側のナビゲーション パネルで [バックアップ] をクリックします。

  4. [バックアップ] ページで、[作業内容] をクリックします。ステータス列に各オペレーションの現在のステータスが表示されます。

テーブルを復元するときのオペレーション ステータスは次のとおりです。

  • コピーの待機中
  • バックアップの復元中
  • 初期化中
  • 最適化の準備完了
  • 準備完了

バックアップを作成する際のオペレーションのステータスは次のとおりです。

  • バックアップを作成しています
  • バックアップが完了しました

バックアップをコピーする際のオペレーションのステータスは次のとおりです。

  • バックアップをコピーしています
  • バックアップをコピーしました

gcloud

バックアップまたは復元オペレーションのステータスを確認するには、オペレーションの一意の ID が必要です。オペレーション ID の例を次に示します。

`instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635`

オプション --async を使用してバックアップを作成または新しいテーブルに復元するコマンドを実行すると、ターミナルにオペレーション ID が表示されます。

  1. オペレーション ID をコピーします。

  2. OPERATION_ID の代わりにコピーした値を用いて、gcloud bigtable operations describe コマンドを実行します。

    gcloud bigtable operations describe OPERATION_ID
    

    例:

    gcloud bigtable operations describe \
    instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635
    

    このコマンドは、DONE の値が TRUE になるまで数分ごとに実行できます。

コマンドを今実行したわけではない場合や、別のターミナル ウィンドウを開いているなどの理由でオペレーション ID がわからない場合は、インスタンスのオペレーションのリストを表示し、確認するオペレーションを判断します。

  1. バックアップまたは復元するテーブルを含むインスタンスの最近のオペレーション アクティビティのリストを表示します。INSTANCE_ID はインスタンスの ID に置き換えます。

    gcloud bigtable operations list --instance=INSTANCE_ID
    

    ターミナルには、オペレーションのリストが表示され、列には NAMESTART_TIMEEND_TIMEDONE というラベルが付いています。NAME 列の値がオペレーション ID です。

  2. リストの最初の項目からオペレーション ID をコピーします。

  3. gcloud bigtable operations describe を使用して、オペレーションのメタデータを表示します。

    gcloud bigtable operations describe OPERATION_ID
    

    例:

    gcloud bigtable operations describe \
    instances/instance-name/tables/table-name/locations/us-east1-b/operations/917168358249360635
    
  4. オペレーションのメタデータに backupInfo の値が表示されている場合、それが探していたオペレーションであることを意味し、DONETRUE に変わるまでこのコマンドを何回か繰り返します。

    メタデータに backupInfo の値が表示されない場合は、手順 1 に表示されたオペレーションのリストから次のオペレーションを確認します。

バックアップまたはバックアップ コピーを変更する

コンソール

Google Cloud コンソールでは、コピーを含め、バックアップを変更することはできません。

gcloud

gcloud CLI を使用すると、バックアップまたはバックアップ コピーの有効期限を変更できます。

すべてのコマンドで、次の項目は、実際の値で置き換えます。

  • INSTANCE_ID: インスタンスの永続的な識別子。
  • CLUSTER_ID: クラスタの永続的な識別子。
  • BACKUP_ID: バックアップの一意の ID。
  • EXPIRATION_DATE: 今後 90 日以内の日付。「Zulu」UTC タイムスタンプ形式(精度はナノ秒)。

    : 2019-10-02T15:01:23.045123456Z

  • RETENTION_PERIOD: 最長 90 日の期間。単位には、m(分)、h(時間)、または d(日)を使用。

    _Examples_: `36h` or `89d`
    
  1. バックアップのリストを表示します。

        gcloud bigtable backups list --instance=INSTANCE_ID
    

    ターミナルにバックアップのリストが表示されます。

  2. 更新する必要があるバックアップのバックアップ ID とクラスタ ID をメモします。

  3. gcloud bigtable instances backups update コマンドを実行して、新しい有効期限または新しい保持期間を追加します。

      gcloud bigtable backups update BACKUP_ID \
      --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID \
      --expiration-date=EXPIRATION_DATE \
      --retention-period=RETENTION_PERIOD
    
  4. gcloud bigtable instances backups describe コマンドを実行して、有効期限が正常に更新されたことを確認します。

        gcloud bigtable backups describe BACKUP_ID \
        --instance=INSTANCE_ID \
        --cluster=CLUSTER_ID
    ```
    

バックアップを削除する

バックアップまたはバックアップ コピーは、期限切れになる前に削除できます。

コンソール

  1. Google Cloud コンソールの Bigtable インスタンス ページに移動します。

    インスタンスのリストを開く

  2. バックアップを含むインスタンスをクリックします。

  3. 左側のナビゲーション パネルで [バックアップ] をクリックします。

  4. 削除するバックアップの [復元] の横にある「その他」メニューを展開して、[削除] をクリックします。

  5. [削除の確認] にバックアップ ID を入力し、[削除] をクリックします。

gcloud

  1. INSTANCE_ID をインスタンスの ID に置き換えて次のコマンドを実行し、バックアップのリストを表示します。

    gcloud bigtable backups list --instance=INSTANCE_ID
    

    ターミナルにバックアップのリストが表示されます。

  2. バックアップ ID と、その保存先のクラスタの ID をメモします。

  3. BACKUP_ID をメモしたバックアップ ID、CLUSTER_ID をクラスタ ID に置き換えて、gcloud bigtable instances backups delete コマンドを実行します。

    gcloud bigtable backups delete BACKUP_ID \
      --instance=INSTANCE_ID \
      --cluster=CLUSTER_ID
    

次のステップ