Atsushi2022の日記

データエンジニアリングに関連する記事を投稿してます

CloudSQL for PostgreSQLのバックアップ

概要

CloudSQL for PostgreSQLのバックアップ方法がいくつかある。いったいどこまでバックアップされるのかがわからなかったので、それぞれを比較してみた。

用語

  • データベースフラグ

    CloudSQL for PostgreSQLではpostgresql.confといった設定ファイルにアクセスできない。その代わりにデータベースフラグというものがあり、これでPostgeSQLのパラメータ調整ができる。

比較結果

バックアップには以下の4パターンがある。

  1. インスタンスのクローンを作成(インスタンスをまるごとバックアップ)
  2. オンデマンド バックアップを作成(全てのデータベースをバックアップ)
  3. SQL ダンプファイルを使用したエクスポート(データベース毎にバックアップ)
  4. CSV ファイルを使用したエクスポート(テーブル毎にバックアップ)

1がもっともバックアップ範囲が広く、4がもっとも狭い。インスタンスをクローンすると、データベースフラグ(設定ファイルに相当)までバックアップすることができる。一方、CSV ファイルを使用したエクスポートではテーブルデータのみバックアップされる。

1.インスタンスのクローンを作成

Clone instances  |  Cloud SQL for PostgreSQL  |  Google Cloud

インスタンスのクローンを作成し、インスタンスをまるごとバックアップする。

新しいインスタンスには、新しい IP アドレスが割り振られが、設定(データベース フラグ、接続オプション、マシンタイプ、ストレージとメモリの設定)は元のインスタンスと同じになる。

引用元

対象 バックアップ範囲
データベースフラグ
ユーザー/ロール
データベース
オブジェクト権限
テーブル定義
テーブル

2.オンデマンド バックアップを作成

Create and manage on-demand and automatic backups  |  Cloud SQL for PostgreSQL  |  Google Cloud

オンデマンド バックアップの機能を使用することで全てのデータベースをバックアップする。データベースフラグはバックアップされない。

対象 バックアップ範囲
データベースフラグ ×
ユーザー/ロール
データベース
オブジェクト権限
テーブル定義
テーブル

3.SQL ダンプファイルを使用したエクスポート

Export and import using SQL dump files  |  Cloud SQL for PostgreSQL  |  Google Cloud

SQL ダンプファイルを使用したエクスポートの機能を使用し、データベース毎にバックアップする。SQLクエリとして出力される。

対象 バックアップ範囲
データベースフラグ ×
ユーザー/ロール ×
データベース ×
オブジェクト権限
テーブル定義
テーブル

4.CSV ファイルを使用したエクスポート

Export and import using CSV files  |  Cloud SQL for PostgreSQL  |  Google Cloud

CSV ファイルを使用したエクスポートの機能を使用し、テーブルデータをバックアップすることができる。エクスポートするレコードをSQLで指定できる。CSVファイルとして出力される。

対象 バックアップ範囲
データベースフラグ ×
ユーザー/ロール ×
権限 ×
データベース ×
オブジェクト権限 ×
テーブル定義 ×
テーブルデー