Firestoreデータベースのクローンを作成する

記事タイトルとURLをコピーする

G-gen の佐々木です。当記事では Firestore におけるデータベースのクローン機能を紹介します。

Firestore データベースのクローンとは

Firestore におけるデータベースのクローン機能では、1つのデータベースを対象に、同じプロジェクト同じリージョンにデータベースのクローン(複製)を作成します。クローンによって作成されたデータベースには、ソースデータベース内の全てのデータ、インデックスがコピーされます。

データベースのクローンにはポイントインタイムリカバリ(PITR)が使用されます。ポイントインタイムリカバリが有効化されているデータベースでは、過去7日間の任意のタイミング(分単位)のコピーを作成することができます。

また、ポイントインタイムリカバリが有効化されていない場合は、過去1時間の任意のタイミング(分単位)のクローンを作成することができます。

デフォルトの動作では、クローンされたデータベースはソースデータベースと同じ方式の暗号化が使用されます。暗号化方式はデータベースのクローン時に Google 管理の暗号鍵(Google のデフォルトの暗号化)と顧客管理の暗号鍵(CMEK)のいずれかを選択することができます。

手順

ポイントインタイムリカバリの有効化

過去1時間よりも前のクローンが必要な場合、あらかじめデータベースでポイントインタイムリカバリを有効化しておく必要があります。

ポイントインタイムリカバリの有効化はコンソールや gcloud CLI で可能です。

# Firestoreデータベースでポイントインタイムリカバリを有効化する
$ gcloud firestore databases update \
    --database=<データベース名> \
    --enable-pitr

なお、ポイントインタイムリカバリを有効にすると、データベースのサイズに応じてポイントインタイムリカバリの料金が追加で発生します。

クローン作成(Google Cloud コンソール)

クローンの作成は Google Cloud コンソールまたは gcloud CLI から可能です。

コンソールを使用する場合、クローンで作成されたデータベースの暗号化方式を、ソースデータベースの暗号化方式から変更することはできません。

コンソールから作成する場合、対象のデータベースから、[クローンを作成] を選択します。

コンソールからデータベースのクローンを作成する

「クローンの作成」で、作成されるデータベースの ID と、クローン元となるデータベースの任意の時点を分単位で選択します。どの時点まで遡ってクローンできるかは「最も古いバージョンの時刻」として表示されています。

コピーする任意の時点を選択してクローンを作成する

クローン作成(gcloud CLI)

gcloud CLI を使用する場合、必要に応じて、どの時点までクローンを作成できるのか(「最も古いバージョンの時刻」)を確認します。

# データベースの「最も古いバージョンの時刻」を確認する
$ gcloud firestore databases describe \
    --database="(default)" \
    --format="table(earliestVersionTime)"
  
# 出力例(UTC)
EARLIEST_VERSION_TIME
2025-08-20T13:22:00Z

データベースのクローンは gcloud firestore databases clone コマンドで行います。

2025年10月現在では gcloud alpha コマンドを使用する必要があります。

$ gcloud alpha firestore databases clone \
    --source-database="projects/<プロジェクトID>/databases/<ソースデータベース名>" \
    --snapshot-time=<クローンする時点のタイムスタンプ(RFC3339形式)> \
    --destination-database="<作成するデータベース名>"

--snapshot-time には、RFC-3339形式でクローンする時点のタイムスタンプを指定します。コンソールと異なり、CLI では UTC でタイムスタンプを指定する点には注意が必要です。

# 実行例
$ gcloud alpha firestore databases clone \
    --source-database="projects/myproject/databases/(default)" \
    --snapshot-time=2025-08-20T13:22:00Z \
    --destination-database="default-clone"

クローンで作成するデータベースの暗号化方式をソースデータベースから変更したい場合、--encryption-type で暗号化方式(google-default-encryption or customer-managed-encryption)を、--kms-key-name で使用する鍵の ID を指定します。

# 暗号化方式を変更してクローンする場合の実行例
$ gcloud alpha firestore databases clone \
    --source-database="projects/myproject/databases/(default)" \
    --snapshot-time=2025-08-20T13:22:00Z \
    --destination-database="default-clone"
    --encryption-type='customer-managed-encryption' \
    --kms-key-name='projects/myproject/locations/asia-northeast1/keyRings/my-key-ring/cryptoKeys/my-key'

佐々木 駿太 (記事一覧)

G-gen 最北端、北海道在住のクラウドソリューション部エンジニア

2022年6月に G-gen にジョイン。Google Cloud Partner Top Engineer に選出(2024 / 2025 Fellow / 2026)。好きな Google Cloud プロダクトは Cloud Run。

趣味はコーヒー、小説(SF、ミステリ)、カラオケなど。