Amazon Keyspaces での point-in-time リカバリの仕組み - Amazon Keyspaces (Apache Cassandra 向け)

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon Keyspaces での point-in-time リカバリの仕組み

このセクションでは、Amazon Keyspaces point-in-time リカバリ (PITR) の仕組みの概要を説明します。料金の詳細については、「Amazon Keyspaces (for Apache Cassandra) pricing (Amazon Keyspaces (Apache Cassandra 向け) の料金)」を参照してください。

point-in-time リカバリ (PITR) の有効化

コンソールを使用して PITR を有効にすることも、プログラムで有効にすることも可能です。

コンソールを使用した PITR の有効化

新しいテーブルの PITR 設定は、[Customized settings (カスタマイズされた設定)] オプションで管理できます。デフォルトでは、コンソールを通じて作成された新しいテーブルに対して PITR が有効になっています。

既存のテーブルに対して PITR を有効にするには、次の手順を実行します。

  1. AWS Management Console にサインインし、https://console.aws.amazon.com/keyspaces/home で Amazon Keyspaces コンソールを開きます。

  2. ナビゲーションペインで [Tables (テーブル)] を選択し、編集するテーブルを選択します。

  3. [Backups (バックアップ)] タブで、[Edit (編集)] を選択します。

  4. point-in-time 「リカバリ設定の編集」セクションで、「P oint-in-time リカバリの有効化」を選択します。

テーブルの PITR は、以下のステップでいつでも無効にできます。

  1. AWS Management Console にサインインし、https://console.aws.amazon.com/keyspaces/home で Amazon Keyspaces コンソールを開きます。

  2. ナビゲーションペインで [Tables (テーブル)] を選択し、編集するテーブルを選択します。

  3. [Backups (バックアップ)] タブで、[Edit (編集)] を選択します。

  4. point-in-time 復旧設定の編集セクションで、P oint-in-time 復旧を有効にするチェックボックスをオフにします。

重要

PITR を無効にすると、35 日以内にテーブルの PITR を再度有効にしても、バックアップ履歴が直ちに削除されます。

コンソールを使用したテーブル復元方法については、「テーブルのポイントインタイムリカバリ (コンソール)」を参照してください。

AWS CLI を使用した PITRの有効化

テーブルの PITR 設定は、UpdateTable API を使用して管理することができます。

AWS CLI を使用して新規のテーブルを作成する場合、新規のテーブルを作成する時点で PITR を明示的に有効にする必要があります。

新規テーブルの作成時に PITR を有効にするには、次の AWS CLI コマンドを例として使用します。このコマンドは読みやすくするために別々の行に分割されています。

aws keyspaces create-table --keyspace-name 'myKeyspace' --table-name 'myTable' --schema-definition 'allColumns=[{name=id,type=int},{name=name,type=text},{name=date,type=timestamp}],partitionKeys=[{name=id}]' --point-in-time-recovery 'status=ENABLED'
注記

point-in-time 復旧値を指定しない場合、 point-in-time復旧はデフォルトで無効になっています。

テーブルの point-in-time 復旧設定を確認するには、次のAWS CLIコマンドを使用します。

aws keyspaces get-table --keyspace-name 'myKeyspace' --table-name 'myTable'

AWS CLI を使用して既存のテーブルの PITR を有効にするには、次のコマンドを実行します。

aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=ENABLED'

既存のテーブルで PITR を無効にするには、次の AWS CLI コマンドを実行します。

aws keyspaces update-table --keyspace-name 'myKeyspace' --table-name 'myTable' --point-in-time-recovery 'status=DISABLED'
重要

PITR を無効にすると、35 日以内にテーブルの PITR を再度有効にしても、バックアップ履歴が直ちに削除されます。

CQL を使用した PITR の有効化

テーブルの PITR 設定は、point_in_time_recovery カスタムプロパティを使用して管理することができます。

CQL を使用して新規のテーブルを作成する場合、新規のテーブルを作成する時点で PITR を明示的に有効にする必要があります。

新規テーブルの作成時に PITR を有効にするには、次の CQL コマンドを例として使用します。

CREATE TABLE "my_keyspace1"."my_table1"( "id" int, "name" ascii, "date" timestamp, PRIMARY KEY("id")) WITH CUSTOM_PROPERTIES = { 'capacity_mode':{'throughput_mode':'PAY_PER_REQUEST'}, 'point_in_time_recovery':{'status':'enabled'} }
注記

point-in-time リカバリカスタムプロパティが指定されていない場合、 point-in-timeリカバリはデフォルトで無効になっています。

CQL を使用して既存のテーブルの PITR を有効にするには、次の CQL コマンドを実行します。

ALTER TABLE mykeyspace.mytable WITH custom_properties = {'point_in_time_recovery': {'status': 'enabled'}}

既存のテーブルで PITR を無効にするには、次の CQL コマンドを実行します。

ALTER TABLE mykeyspace.mytable WITH custom_properties = {'point_in_time_recovery': {'status': 'disabled'}}
重要

PITR を無効にすると、35 日以内にテーブルの PITR を再度有効にしても、バックアップ履歴が直ちに削除されます。

CQL 言語リファレンスの詳細については、「CREATE TABLE」と「ALTER TABLE」を参照してください。CQL を使用したテーブル復元方法については、「CQL によるテーブルのポイントインタイムリカバリ」を参照してください。

テーブルの復元に必要な許可

テーブルを正常に復元するには、IAM のユーザーまたはロールで次の最小限の許可を取得しておく必要があります。

  • cassandra:Restore — この復元アクションはターゲットテーブルの復元に必須です。

  • cassandra:Select — この選択アクションはソーステーブルからの読み取りに必須です。

  • cassandra:TagResource — タグアクションはオプションで、復元オペレーションによりタグが追加される場合にのみ必須です。

キー空間 mykeyspace 内のテーブルを復元するために必要な最小限の許可をユーザーに付与するポリシーの例を以下に示します。

{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "cassandra:Restore", "cassandra:Select" ], "Resource":[ "arn:aws:cassandra:us-east-1:111122223333:/keyspace/mykeyspace/*", "arn:aws:cassandra:us-east-1:111122223333:/keyspace/system*" ] } ] }

選択した他の機能に基づいて、テーブルを復元するための追加の許可が必要になる場合があります。例えば、ソーステーブルが保管時にカスタマーマネージドキーで暗号化されている場合、テーブルを正常に復元するために、Amazon Keyspaces にはソーステーブルのカスタマーマネージドキーへのアクセス許可が必要になります。詳細については、「暗号化されたテーブルの PITR 復元」を参照してください。

IAM ポリシーを条件キーとともに使用して特定のソースへの受信トラフィックを制限するには、プリンシパルの代わりに復元オペレーションを実行する許可が Amazon Keyspaces に付与されていることを確認する必要があります。ポリシーにより受信トラフィックが次のいずれかに制限されている場合は、IAM ポリシーに aws:ViaAWSService 条件キーを追加する必要があります。

  • aws:SourceVpce の場合は VPC エンドポイント

  • aws:SourceIp の場合は IP レンジ

  • aws:SourceVpc の場合は VPC

AWS サービスでプリンシパルの認証情報を使用してリクエストを実行すると、aws:ViaAWSService 条件キーによりアクセスが許可されます。詳細については、『IAM ユーザーガイド』の「IAM JSON policy elements: Condition key(IAM JSON ポリシー要素: 条件キー)」 を参照してください。

以下は、ソーストラフィックを特定の IP アドレスに制限し、プリンシパルの代わりに Amazon Keyspaces によってテーブルが復元されるようにするポリシーの例です。

{ "Version":"2012-10-17", "Statement":[ { "Sid":"CassandraAccessForCustomIp", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"false" }, "ForAnyValue:IpAddress":{ "aws:SourceIp":[ "123.45.167.89" ] } } }, { "Sid":"CassandraAccessForAwsService", "Effect":"Allow", "Action":"cassandra:*", "Resource":"*", "Condition":{ "Bool":{ "aws:ViaAWSService":"true" } } } ] }

aws:ViaAWSService グローバル条件キーを使用したポリシーの例については、「VPC エンドポイントポリシーと Amazon Keyspaces point-in-time リカバリ (PITR)」を参照してください。

PITR 継続的バックアップの時間ウィンドウ

Amazon Keyspaces PITR では、復元可能なバックアップをテーブルに使用できる時間枠を維持するために、2 つのタイムスタンプが使用されます。

  • 最古の復元可能時間 – 最も古い復元可能バックアップの時刻をマークします。最古の復元可能バックアップは、35 日前、または PITR が有効化された時点のいずれか新しい方までさかのぼります。35 日の最大バックアップウィンドウは変更できません。

  • 現在の時刻 – 最新の復元可能バックアップのタイムスタンプが現在の時刻です。復元中にタイムスタンプが指定されない場合は、現在の時刻が使用されます。

PITR を有効にすると、EarliestRestorableDateTime から CurrentTime までの期間の任意の時点の状態まで復元できます。テーブルデータは、PITR が有効化された時点までしか復元できません。

PITR を無効にして後で再度有効にした場合は、最初の使用可能バックアップの開始時刻を、PITR が再有効化された時刻にリセットします。つまり、PITR を無効にすると、バックアップ履歴が消去されるということです。

注記

テーブルでのデータ定義言語 (DDL) オペレーション (スキーマの変更など) は、非同期で実行されます。復元されたテーブルデータには完了したオペレーションのみが表示されますが、復元時にオペレーションが進行中である場合は、ソーステーブルで追加のアクションが表示される可能性があります。DDL ステートメントのリストについては、「Amazon Keyspaces の DDL ステートメント (データ定義言語)」を参照してください。

復元するテーブルはアクティブでなくても構いません。削除されたテーブルで PITR が有効になっていて、バックアップウィンドウ内 (または過去 35 日以内) に削除が行われた場合でも、削除されたテーブルを復元できます。

注記

以前に削除されたテーブルと同じ修飾名 (mykeyspace.mytable など) を用いて新しいテーブルが作成された場合、削除されたテーブルは復元できなくなります。コンソールでこれを実行すると警告が表示されます。

PITR 復元設定

PITR を使用してテーブルを復元すると、Amazon Keyspaces により、ソーステーブルのスキーマとデータを、新しいテーブルに対して選択したタイムスタンプ (day:hour:minute:second) に基づいた状態に復元します。既存のテーブルは PITR によりオーバーライドされません。

PITR では、テーブルのスキーマとデータに加えて、custom_properties ソーステーブルからの復元も行われます。カスタムプロパティについては、最古の復元時刻から現在の時刻までの範囲で選択したタイムスタンプに基づいて復元されるテーブルのデータとは異なり、常に現在の時刻のテーブル設定に基づいて復元されます。

復元されたテーブルの設定は、タイムスタンプが復元開始時であるソーステーブルの設定と一致します。これらの設定は復元中にオーバーライドすることができるので、その場合は WITH custom_properties を使用します。カスタムプロパティには以下の設定が含まれます。

  • 読み取り/書き込みキャパシティモード

  • プロビジョンドスループット性能設定

  • PITR 設定

テーブルが Auto Scaling を有効にした状態でプロビジョンドキャパシティモードになっている場合、復元オペレーションはテーブルの Auto Scaling 設定も復元します。これらは、CQL の autoscaling_settingsパラメータまたは CLI autoScalingSpecification を使用して上書きできます。自動スケーリング設定の詳細については、「」を参照してくださいAmazon Keyspaces auto スケーリングでスループット容量を自動的に管理します

テーブル全体を復元する場合、復元済みテーブルのすべてのテーブル設定は、復元時の送信元のテーブルの現在の設定から取得されます。

たとえば、テーブルのプロビジョニングされたスループットが 50 読み込みキャパシティーユニットおよび 50 書き込みキャパシティーユニットに最近下げられたとします。その後、このテーブルを 3 週間前の状態に復元します。このとき、プロビジョンドスループットの読み取りキャパシティユニットは 100 に、書き込みキャパシティユニットも 100 に設定されました。この場合、Amazon Keyspaces では、テーブルデータは指定の時点の状態に復元されますが、プロビジョンドスループット設定は最新の設定 (読み取りキャパシティユニット 50、書き込みキャパシティユニット 50) が使用されます。

次の設定は復元されないため、新しいテーブルに対して手動で設定する必要があります。

  • AWS Identity and Access Management (IAM) ポリシー

  • Amazon CloudWatch メトリクスとアラーム

  • タグ (WITH TAGS を使用して CQL RESTORE ステートメントに追加できる)

暗号化されたテーブルの PITR 復元

PITR を使用してテーブルを復元すると、Amazon Keyspaces によりソーステーブルの暗号化設定が復元されます。そのテーブルは、AWS 所有のキー (デフォルト) で暗号化されている場合、同じ設定で自動的に復元されます。復元するテーブルがカスタマーマネージドキーを使用して暗号化されている場合は、テーブルデータを復元するために同じカスタマーマネージドキーを使用して Amazon Keyspaces にアクセスできる必要があります。

テーブルの暗号化設定は復元時に変更できます。AWS 所有のキー からカスタマーマネージドキーに変更するには、復元の時点で有効でありアクセスが可能なカスタマーマネージドキーを指定する必要があります。

カスタマーマネージドキーから AWS 所有のキー に変更する場合は、AWS 所有のキー でテーブルを復元するためにソーステーブルのカスタマーマネージドキーに Amazon Keyspaces がアクセスできることを確認します。テーブルの保管データ暗号化設定の詳細については、「保管データ暗号化: Amazon Keyspaces での動作」を参照してください。

注記

Amazon Keyspaces がカスタマーマネージドキーにアクセスできなくなったためにテーブルが削除された場合は、そのテーブルを復元する前に、カスタマーマネージドキーが Amazon Keyspaces にアクセスできるか確認する必要があります。カスタマーマネージドキーで暗号化されたテーブルは、Amazon Keyspaces がそのキーにアクセスできない場合に復元できません。詳細については、『AWS Key Management Service デベロッパーガイド』の「Troubleshooting key access」(キーアクセスのトラブルシューティング)」 を参照してください。

PITR によるマルチリージョンテーブルの復元

PITR を使用してマルチリージョンテーブルを復元できます。復元操作を正常に行うには、ソーステーブルとターゲットテーブルの両方を同じ AWS リージョン に複製する必要があります。

Amazon Keyspaces は、キースペースの一部であるレプリケートされた各リージョンのソーステーブルの設定を復元します。復元操作中に設定を上書きすることもできます。復元中に変更できる設定の詳細については、「PITR 復元設定」を参照してください。

マルチリージョンキーのレプリケーションについては、「Amazon Keyspaces でのマルチリージョンレプリケーションの働き」を参照してください。

PITR によるテーブル復元時間

テーブルの復元にかかる時間は複数の要因に基づいており、テーブルのサイズに直接関連しているとは限りません。

復元時間に関する考慮事項を次に示します。

  • 新しいテーブルにバックアップを復元します。新しいテーブルを作成して復元プロセスを開始するためのすべてのアクションを実行するのに、テーブルが空でも最大で 20 分かかることがあります。

  • データモデルが適切に分散されている大きなテーブルの復元時間は数時間以上になる可能性があります。

  • ソーステーブルに大きく歪んだデータが含まれている場合は復元時間は長くなることがあります。例えば、テーブルのプライマリキーにより 1 年のうちの 1 か月がパーティショニングに使われており、すべてのデータが 12 月のものだった場合は、データを歪めています。

災害対策を計画する際のベストプラクティスは、平均復元完了時間を定期的に記録し、これらの時間が目標復旧時間全体にどのように影響するかを確認することです。

Amazon Keyspaces の PITR および AWS サービスとの統合

次の PITR オペレーションは、AWS CloudTrail を使用してログに記録されるので、継続的な監視と監査が可能です。

  • PITR が有効または無効になっている新規のテーブルを作成します。

  • 既存のテーブルで PITR を有効または無効にします。

  • アクティブなテーブルまたは削除されたテーブルを復元します。

詳細については、「を使用した Amazon Keyspaces API コールのログ記録 AWS CloudTrail」を参照してください。

AWS CloudFormation を使用して以下の PITR アクションを実行できます。

  • PITR が有効または無効になっている新規のテーブルを作成します。

  • 既存のテーブルで PITR を有効または無効にします。

詳細については、『AWS CloudFormation ユーザーガイド』の「Cassandra Resource Type Reference(Cassandra リソースタイプのリファレンス)」を参照してください。