BigQueryのタイムトラベルやスナップショットでデータを復元する
gcpBigQuery にはタイムトラベル機能があり、デフォルトで過去 7 日間までの任意の時点のデータに次のようにしてアクセスできる。
SELECT *
FROM `sambaiztest.test_dataset.test_table`
FOR SYSTEM_TIME AS OF "2024-11-22 22:41:00+09:00"
これによりレコードを上書きしてしまったり削除してしまった場合もデータを復元することができる。
また、スナップショットを保存し、上書きして復元することもできる。7 日より前のバックアップを、差分のみが保存されるためストレージ費用を抑えて取っておくことができる。
CREATE SNAPSHOT TABLE `sambaiztest.test_dataset.test_table`
CLONE `sambaiztest.test_dataset.test_table_snapshot`
SELECT *
FROM sambaiztest.test_dataset.INFORMATION_SCHEMA.TABLE_SNAPSHOTS
WHERE base_table_name = 'test_table'
CREATE OR REPLACE TABLE `sambaiztest.test_dataset.test_table`
CLONE `sambaiztest.test_dataset.test_table_snapshot`
テーブル自体が削除されている場合でも、bq cp コマンドで時間を指定して復元できる。
$ bq cp test_dataset.test_table@-3600000 test_dataset.test_table_restored