Firestoreのバックアップ(手動)

2 min読了の目安(約2500字TECH技術記事

Firebase Realtime Database には、コンソールから自動でバックアップする設定が用意されていますが、Cloud Firestore をバックアップするには、自分で設定をする必要があります。

主な手順は、バックアップデータを保存しておく場所として Cloud Strage にバケットを作成し、そこにデータをエクスポート(バックアップ)、インポート(ロールバック、リストア)します。

バケットの作成

参考

上記を参考に僕は、以下のように設定しました。

# ロケーション タイプ
Region

# ロケーション
asia-northeast1 (東京)

# デフォルトのストレージ クラス
Standard

# 暗号化のタイプ
Google-managed key

# アクセス制御
きめ細かい管理

ロケーションは、プロジェクトのロケーションに近いロケーションを選択します。

エクスポート/インポート

エクスポート/インポートは、コマンドラインで行っていきます。
コマンドの実行には、以下の2通りの方法があります。

  • Cloud Shell
  • Google Cloud SDK をインストール

Google Cloud SDK の方が、インストールの手間はありますが、作業が捗りますので、おすすめです。

Cloud Shell

Cloud Shell は、Google Cloud Platform コンソールの右上にコマンドラインのアイコンがあるので、クリックして、Cloud Shell を立ち上げます。

Google Cloud SDK

Google Cloud SDKは、以下のページを参考にインストールします。

現在の選択されているプロジェクトの確認

Cloud Shell もしくは、Google Cloud SDKをインストールしたコマンドラインツールで、以下のコマンドを実行してください。現在の選択されているプロジェクトを確認できます。

gcloud config get-value project

プロジェクトの選択

もし、選択されているプロジェクトが目的のプロジェクトと違う場合は、次のコマンドで、目的のプロジェクトを選択します。

gcloud config set project [PROJECT_ID]

エクスポート

参考

エクスポートには、以下のコマンドを実行します。

gcloud firestore export gs://[BUCKET_NAME]

Cloud Strage のバッケット内にバックアップが取れていることを確認してください。

インポート

参考

インポートには、次のコマンドを実行します。

gcloud firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

# 例
gcloud firestore import gs://exports-bucket/2017-05-25T23:54:39_76544/

ここで注意したいのが、インポートされたデータでCloud Store内のデータ全てが上書きされるわけではありません。
エクスポート後に追加されたオブジェクトは、インポートする時には、削除されずにそのまま残るということです。

以上、簡単にまとめましたが、Firebase のドキュメントには、コレクション単位でエクスポートする方法や、インポート/エクスポートのオペレーションの管理(インポートのキャンセルなど)の方法が書いてありますので、必要なときには、参考にしてください。

参考リンクまとめ