9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Firestore exportによるバックアップの確認をして気づいたこと

Last updated at Posted at 2018-11-01

Firestoreのexportを使ってデータのバックアップができるようになりましたが、実際にできるか確認した際に気づいたことを書きます。

※ export/import方法についてはこちらになります。

import実行後のドキュメントの状況

Firestore中のドキュメントに関して、export後の操作とimport後の状態は次の通りです。

ドキュメントの種類 import後の状態
export後に修正したドキュメント export時の状態に戻る
export後に削除したドキュメント export時のものが復元される
export後に追加したドキュメント そのまま残る

「import」になるのでexport後に追加されたドキュメントはそのまま残ります。

Cloud FunctionsのonUpdateが発火する

importの際に、FirestoreをイベントトリガーにするCloud Functionsがいる場合は注意が必要です。

export後に修正されたドキュメントが、importによってexport前に戻る際にonUpdateが発火します
しかし一方、export後に削除されたドキュメントが、importによって復元される際にはonCreateは発火しません

この理由は理解できていないのですが、自分の環境で確認した際はそのような振る舞いをしていました。

collection-idsを指定した場合サブコレクションはexportされない(※追記あり)

collection-idsオプションを指定すると、特定のコレクションだけexportできるのですが、サブコレクションはexportされないようです。

例えば次のようにコマンドを打った場合、exportの対象はusersコレクション中のドキュメントが直接もつフィールドのみになります。もしusersのドキュメントにfollowersというサブコレクションがあった場合、followersは復元されません。

$ gcloud alpha firestore export gs://firestore-export --collection-ids='users'
$ gcloud alpha firestore import --collection-ids='users' gs://firestore-export/2018-11-01T00:00:00_00000/

ちなみにimportの際にcollection-idsを指定しないとMissing input fileというエラーになってしまいました。
また、自分が試した限りではcollection-idsはトップにあるコレクションでないとimportできませんでした。

2020/4/25追記

collection-idsはcollection groupに対して行われるようです。なので、usersとは別にfollowersをexportすれば、サブコレクションも対応できそうです。

exportでFirestore全体のバックアップを行うには

Firestoreの状態を完全に副作用なくexport時の状態にするには次のような手順になると思います。

  • export/importはcollection-idsを指定せずに実行
  • importは全データを削除してから実行

状況によってはcollection-ids指定してもいいですし、全データ削除せずにimportして大丈夫ですが、もし上の手順で行う場合は別環境でシミュレーションしてみた方がよさそうです。

最後に

まだFirestoreはベータですし、この辺りは振る舞いが変わる可能性が十分あると思いますので、Firestoreを導入する際にはバックアップ・リストアできるかテストしてみることをオススメします。

9
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
5

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?