LoginSignup
27
28

More than 3 years have passed since last update.

Firestoreのデータをgcloudを使ってバックアップ&別のプロジェクトへインポートしてみる

Last updated at Posted at 2019-09-24

Firestoreのデータをガリガリ見ていきたいなと思っていたら、
別のプロジェクトに移行できそうだったので、いろいろ調べたときの備忘録。

分析目的だけど、BigQueryは1000カラム制約で使えなかったので代替案...
別プロジェクトなら無料枠でいろいろできそう。

いろいろ試したけど、ダメだった経緯はこちらにまとめました。。
- Firestoreのデータを分析するための3つの方法とその注意点 - Qiita

注意

Firestoreのエクスポート/インポートについて、いくつか注意。

  1. Firestoreのエクスポート/インポートはBlazeプランが必要(無料枠では不可)
  2. ドキュメントの読み取りと書き込み時にCloud Firestoreの料金が課金される

さらに、

エクスポート / インポート オペレーションのコストは、費用制限の対象にはなりません
オペレーションが完了するまで、エクスポート/インポートでGCPの予算アラートはトリガーされません

とのことなので、ご利用は計画的に..


1. gcloudのインストール

インストール
$ brew cask install google-cloud-sdk
.bashrcなどに以下を追記
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/path.bash.inc'
source '/usr/local/Caskroom/google-cloud-sdk/latest/google-cloud-sdk/completion.bash.inc'
gcloudの初期化
# 初期設定の実行
$ gcloud init
# このあと、ログイン画面が出てきて認証する

# コンポーネントのアップデート
$ gcloud components update

# 現在のプロジェクトの確認
$ gcloud info | grep project

2. FirestoreのデータをExportする

firestore exportを使うと、データのバックアップが作成できるらしい。
バックアップデータはGCPのStorage上に作成されるので、
あらかじめ、Storageを作成しておく必要がある。

# 現在のプロジェクトの確認
$ gcloud info | grep project

# 全体のエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME]

# コレクションを指定して、一部だけをエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME] --collection-ids=[COLLECTION_ID_1],[COLLECTION_ID_2]

# 実行状況の確認
$ gcloud beta firestore operations list

データ量が多いと、コマンドが途中で終了するので、
完了したかどうかはoperations listを実行して確認する必要がある。

参考: データのエクスポートとインポート  |  Firebase

3. プロジェクトを変更する

# プロジェクトの設定
$ gcloud config set project [PROJECT]

# 現在の設定情報の確認
$ gcloud info

参考: SDK 構成の管理  |  Cloud SDK のドキュメント  |  Google Cloud

4. アカウントを変更する

# アカウントの設定
$ gcloud config set account [ACCOUNT]

# 設定したアカウントの認証
$ gcloud auth login

# 登録しているアカウントの一覧を確認
$ gcloud auth list

# プロジェクトの設定
$ gcloud config set project [PROJECT]

# 現在の設定情報の確認
$ gcloud info

参考: Cloud SDK ツールの承認  |  Cloud SDK のドキュメント  |  Google Cloud

5. バックアップを別のプロジェクトにインポートする

全体の流れはこんな感じ。

# バックアップしたいプロジェクトに設定
$ gcloud config set project [PROJECT]

# 全体のエクスポート
$ gcloud beta firestore export gs://[BUCKET_NAME]


# 別のプロジェクトにプロジェクトに変更
$ gcloud config set project [PROJECT]

# バックアップファイルのインポート
$ gcloud beta firestore import gs://[BUCKET_NAME]/[EXPORT_PREFIX]/

注意点

  1. インポートしたいプロジェクトのFirestoreは初期設定までする必要がある
  2. 実行はプロジェクトのサービスアカウントで実行されるので、
    バックアップファイルのバケットに権限を付与する必要がある

参考: データのエクスポートとインポート  |  Firebase

おわりに

有料のみではあるけど、

  1. 本番データの分析したり
  2. 本番データを開発用に利用したり
  3. プロジェクトの移行

なんかにも使えそう。
分析はBigQueryを使えるならそのほうがいいかも?

こんなのつくってます!!

積読用の読書管理アプリ 『積読ハウマッチ』をリリースしました!
積読ハウマッチは、Nuxt.js+Firebaseで開発してます!

もしよかったら、遊んでみてくださいヽ(=´▽`=)ノ

要望・感想・アドバイスなどあれば、
公式アカウント(@MemoryLoverz)や開発者(@kira_puka)まで

参考にしたサイト

27
28
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
27
28