Blaze プランのお客様は Firebase Realtime Database の自動バックアップを設定できます。これはセルフサービス機能の 1 つで、Database アプリケーションのデータとルールを JSON 形式で Cloud Storage バケットに毎日バックアップできます。
設定
手順を開始するには、Firebase コンソールの [Database] セクションの [バックアップ] タブに移動します。ウィザードのガイドで自動バックアップを設定します。
ストレージ コストを節約するため、デフォルトでは Gzip 圧縮が有効になっています。また、バケットに対して 30 日ライフサイクル ポリシーを有効にして、30 日以上経過したバックアップが自動的に削除されるようにすることもできます。
Firebase コンソールでは、ステータスとバックアップ アクティビティを直接確認できます。また、手動バックアップを開始することもできます。これは、特定の時刻指定スナップショットを取る場合やコード変更を実行する前の安全動作として役に立つ場合があります。
設定後は、新しい Cloud Storage バケットが Firebase に対する書き込み権限付きで作成されます。このバケットには Firebase からアクセスされるべきではないデータを保存しないでください。Firebase には、他の Cloud Storage バケットや Google Cloud の他の領域に対する追加のアクセス権がありません。
バックアップからの復元
バックアップから Firebase を復元するには、まず Cloud Storage からローカル ディスクにファイルをダウンロードします。この操作は、バックアップ アクティビティ セクション内でファイル名をクリックすることで行えます。または、Cloud Storage バケット インターフェースから行うこともできます。ファイルが Gzip 圧縮されている場合は、まずファイルを解凍します。
データをインポートするには 2 つの方法があります。
方法 1: Database の [データ] セクションで [JSON をインポート] ボタンをクリックして、アプリケーション データ JSON ファイルを選択します。
方法 2: コマンドラインから CURL リクエストを発行することもできます。
まず、Firebase からシークレットを取得します。これは、[データベース設定] ページにアクセスすれば取得できます。
次に、次の式をターミナルに入力します。DATABASE_NAME
フィールドと SECRET
フィールドは独自の値に置き換えてください。
curl 'https://<DATABASE_NAME>.firebaseio.com/.json?auth=<SECRET>&print=silent' -X PUT -d @<DATABASE_NAME>.json
非常に大きなデータベースからのバックアップの復元で問題が発生した場合は、サポートチームに連絡してください。
スケジュール
負荷が均等に分散され、バックアップをご利用になるすべてのユーザーにとって可用性が最大となるよう、特定の時刻が Database バックアップに割り当てられ、毎日自動的に実行されます。このスケジュールされたバックアップは、その日に手動バックアップが行われたかどうかに関係なく行われます。
ファイルの命名
Cloud Storage バケットに転送されたファイルには、次の命名規則を使用してタイムスタンプ(ISO 8601 標準)が付けられます。
- データベース データ:
YYYY-MM-DDTHH:MM:SSZ_<DATABASE_NAME>_data.json
- データベース ルール:
YYYY-MM-DDTHH:MM:SSZ_<DATABASE_NAME>_rules.json
Gzip が有効になっている場合は、ファイル名の末尾に .gz
が付加されます。Cloud Storage プレフィックス検索を使用すれば、特定の日付または時刻のバックアップを簡単に見つけることができます。
Gzip 圧縮
ストレージ コストを節約し、転送時間を短縮するため、デフォルトではバックアップ ファイルは Gzip 圧縮されます。圧縮後のファイルサイズはデータベースのデータ特性によって異なりますが、標準的なデータベースは元のサイズの 1/3 に縮小されるため、ストレージ コストを削減でき、バックアップのアップロード時間が短縮されます。
Gzip 圧縮した JSON ファイルを解凍するには、デフォルトで OS-X やほとんどの Linux ディストリビューションに付属している gunzip
バイナリを使用してコマンドライン コマンドを発行します。
gunzip <DATABASE_NAME>.json.gz # Will unzip to <DATABASE_NAME>.json
30 日のストレージ ライフサイクル
Cloud Storage バケットのデフォルトの 30 日オブジェクト ライフサイクル ポリシーを簡単に有効にする構成スイッチをご利用いただけます。有効になっている場合は、バケット内のファイルが 30 日後に自動的に削除されます。これにより、不要になった古いバックアップが削減されるため、ストレージ コストが節約され、バケット ディレクトリが整頓された状態に維持されます。他のファイルを自動バックアップ バケットに配置すると、それらも同じポリシーを使って削除されます。
費用
Blaze プランのプロジェクトでは、バックアップ機能を追加費用なしで有効にできます。ただし、Cloud Storage バケットに配置されたバックアップ ファイルに対しては標準料金が請求されます。Gzip 圧縮と 30 日のストレージ ライフサイクルを有効にすることで、ストレージ コストを節約できます。