web-dev-qa-db-ja.com

Google CloudSpannerの外部バックアップ/スナップショット

Google Cloud Spannerデータベース/テーブルのスナップショットを作成することはできますか?コンプライアンス上の理由から、災害が発生した場合にロールバックできる現在のデータベースのスナップショットを毎日作成する必要があります。これはSpannerで可能ですか?そうでない場合、それをサポートする意図はありますか?

Spannerが複製/冗長であるなどの理由でそれが必要になる理由を尋ねる人のために-それは人為的エラー(誤ってテーブルを落とす)または妨害/スパイ行為を防ぎません。したがって、質問と要件です。

ありがとう、M

13
user3707

現在、お気に入りのツール(mapreduce、spark、dataflow)を使用してすべてのデータを読み取り、特定のタイムスタンプで(Timestamp Boundsを使用して)読み取ることで、一貫したスナップショットをストリーミングできます。

https://cloud.google.com/spanner/docs/timestamp-bounds

データがガベージコレクションされる前に、エクスポートを実行するのに約1時間かかります。

将来的には、これをよりスケーラブルな方法で行うためのApache Beam/Dataflowコネクタを提供する予定です。これは、CloudSpannerへのデータのインポート/エクスポートを行うための推奨される方法になります。

長期的には、バックアップとバックアップに復元する機能をサポートしますが、その機能は現在利用できません。

12
Dominic Preuss

2018年7月の時点で、Cloud Spannerは、データベースをAvro形式にエクスポートできるインポートおよびエクスポート機能を提供するようになりました。 Google Cloud ConsoleWebサイトから問題の特定のCloudSpannerデータベースにアクセスすると、上部に[インポート]ボタンと[エクスポート]ボタンが表示されます。 [エクスポート]をクリックして、宛先のGoogle Cloud Storageバケットなどの要求された情報を入力するだけで、データベースがAvro形式でGoogle CloudStorageにバックアップされます。データベースを復元する必要がある場合は、Google Cloud ConsoleWebサイトのCloudSpannerセクションから対応するインポート機能を使用してください。

注:実際のバックアップと復元(つまり、エクスポートとインポート)はGoogle Cloud Dataflowを使用して行われ、データフロー操作の料金が請求されます。

インポート および エクスポート 機能については、ドキュメントを参照してください。

5
eb80

以下のスレッド(eb80も回答)によると、テンプレートを作成し、cronジョブからgcloudコマンドを実行することで、DataFlowのインポート/エクスポートジョブを使用してSpannerからのバックアップを正常にスクリプト化できました。キャッチは、ジョブをスケジュールするときに出力を解析してジョブIDを取得する必要があることです。これにより、ジョブのステータスを確認でき(ここでもスクリプトを作成しました)、JOB_STATE_DONEまたはJOB_STATE_FAILEDを取得すると完了します。インポートを実行する必要がある場合、特定のバックアップフォルダー構造は次のとおりであるため、そのジョブIDが必要になります。

gs:// bucketName/yourFolder/instanceId-databaseId-jobId

別のソースから生成されたカスタムAvroデータをバッチロードする方法は?

0
Alex Liffick

Google Cloud Spannerには、バックアップを実行するために使用できる2つの方法があります。

https://cloud.google.com/spanner/docs/backup

組み込みのバックアップを使用するか、データフロージョブを使用してエクスポート/インポートを実行できます。

0
onionjake