NOBTAの気ままにITブログ

Azure全般 / SQL Serverに関する情報を発信していきます。

【第11回】基本から始める Azure Database for PostgreSQL 【バックアップ】


スポンサーリンク

第10回では、Azure Database for PostgreSQL シングル サーバー、フレキシブル サーバーの簡易比較に関する内容をまとめてみました。

 

今回は、Azure Database for PostgreSQL フレキシブル サーバーのデータベースをバックアップする方法について、自分の整理も兼ねて、まとめてみようと思います。

※ Azure Database for PostgreSQL フレキシブル サーバー バージョン 14.3 を使用して検証

 

 

手動バックアップについて

Azure Database for PostgreSQL フレキシブル サーバーでは、自動バックアップが有効になっており、定期的にバックアップが実行されています。

ポイントインタイム リストア機能がサポートされているため、特定の日時の状態にデータベースを復元することも可能です。

また、現時点 (2022年7月時点) においてプレビュー機能となっていますが、geo 冗長バックアップ機能により、geo ペア リージョン (東日本リージョンのペア リージョンは、西日本リージョン) にもデータベースを復元することも可能です。

上記のためか、Azure Database for PostgreSQL フレキシブル サーバーでは、手動バックアップ機能はありません。

そもそもとして、自動バックアップにてバックアップが実行されるため、手動バックアップを実施する必要はないかもしれません。

なお、特定のデータベースのみ別のPostgreSQLへ移行したい、バックアップを長期保存する必要があるなどの要件がある場合、手動でバックアップをしたいことがあるかもしれません。

Azure Database for PostgreSQL フレキシブル サーバーでは、PostgreSQL データベースのバックアップ用ユーティリティである「pg_dump」コマンドを利用して手動バックアップを実施することが可能です。

 

pg_dump の使用例について

基本コマンドとオプション
pg_dump -h <Azure DB for PostgreSQL フレキシブル サーバー名> -U <ユーザー名> -W <パスワード> --port <ポート番号> --format= <フォーマット オプション> --file= <バックアップファイル出力パス> <バックアップ 対象データベース名>
  • --format (-F) オプション
    --format=p : SQL文 (CREATE TABLE、COPY クエリ) および データ が平文として出力される。


    --format=c : カスタム形式 (バイナリ形式) として出力される。


    --format=t : tar形式として出力される。

    --format=d : ディレクトリ形式 (テーブル単位のデータファイルおよびカスタム形式 (バイナリ形式)のファイル) として出力される。

     

  • --data-only (-a) オプション
    データのみを出力し、スキーマ (テーブル定義など) は出力されない。

  • --clean (-c) オプション
    データベース オブジェクトを作成するコマンドを実行する前に、データベース オブジェクトを削除するコマンドが出力される。
    ※ --format=p のみ有効。 カスタム形式で出力した場合は、rg_restoreコマンドで同様のオプションを指定することが可能。

  • --port (-p) オプション
    接続先のポート番号を明示的に指定。

  • --schema-only (-s) オプション

    スキーマ (デーブル定義など) のみを出力し、データは出力されない。

  • --schema (-n) オプション
    特定のスキーマのオブジェクトのみが出力される。

  • --table (-t) オプション
    特定のテーブルのみが出力される。

  • --exclude-table (-T) オプション
    特定のテーブルのみが除外される。

  • --verbose (-v) オプション
    pg_dump コマンド実行時に詳細なログが出力される。

  • --password (-W) オプション
    パスワードを指定

 

パターン 1 : カスタム形式ですべてのスキーマとデータを出力
  • Azure DB for PostgreSQL フレキシブルサーバー名 : azpostgre01.postgres.database.azure.com
  • バックアップ対象データベース名 : DB1
  • バックアップファイル出力パス : c:\backup\db1.dump

pg_dump -h azpostgre01.postgres.database.azure.com -U sqladmin -W <パスワード> --port=5432 --format=c --file=c:\backup\db1.dump DB1

 

パターン 2 : カスタム形式ですべてのスキーマのみ出力
  • Azure DB for PostgreSQL フレキシブルサーバー名 : azpostgre01.postgres.database.azure.com
  • バックアップ対象データベース名 : DB1
  • バックアップファイル出力パス : c:\backup\db1_schema_only.dump

pg_dump -h azpostgre01.postgres.database.azure.com -U sqladmin -W <パスワード> --port=5432 --schema-only --format=c --file=c:\backup\db1_schema_only.dump DB1

 

パターン 3 : カスタム形式ですべてのデータのみ出力
  • Azure DB for PostgreSQL フレキシブルサーバー名 : azpostgre01.postgres.database.azure.com
  • バックアップ対象データベース名 : DB1
  • バックアップファイル出力パス : c:\backup\db1_data_only.dump

pg_dump -h azpostgre01.postgres.database.azure.com -U sqladmin -W <パスワード> --port=5432 --data-only --format=c --file=c:\backup\db1_data_only.dump DB1

 

パターン 4 : カスタム形式でテーブル tab1 のスキーマとデータを出力
  • Azure DB for PostgreSQL フレキシブルサーバー名 : azpostgre01.postgres.database.azure.com
  • バックアップ対象データベース名 : DB1
  • バックアップファイル出力パス : c:\backup\db1_tab1_only.dump

pg_dump -h azpostgre01.postgres.database.azure.com -U sqladmin -W <パスワード> --port=5432 --table=tab1 --format=c --file=c:\backup\db1_tab1_only.dump DB1

 

pg_dump コマンドの詳細については、以下の URL を参照

 

まとめ

今回は、Azure Database for PostgreSQL フレキシブル サーバーのデータベースをバックアップする方法として、「pg_dump」コマンドの使用例をまとめてみました。

Azure Database for PostgreSQL フレキシブル サーバーの自動バックアップからポイントインタイム リストアで復元する場合、既存のデータベースを上書きすることは出来ず、新しい Azure Database for PostgreSQL フレキシブル サーバーとして復元する必要があります。

pg_dump」コマンドで静止点の手動バックアップを作成する必要がある場合は、ポイントインタイム リストア機能により、静止点の日時にて 新しい Azure Database for PostgreSQL フレキシブル サーバー上にデータベースを復元し、復元したデータベースに対して「pg_dump」コマンドを実行することで、実現することが可能になります。

しかしながら、特別な要件がなければ、Azure Database for PostgreSQL フレキシブル サーバーの自動バックアップのみで十分に運用できるのではないかと思います。

 

 

※ 2022年7月