Azure Container InstanceでAzure Database for PostgreSQL flexible serverに対してpg_dumpを実行してみる

はじめに

Azure Database for PostgreSQL flexible serverを使っているとき、用意されているバックアップ機能は最大35日しか取れず、あとは手動で実行しなければなりません。

docs.microsoft.com

バックアップのために仮想マシンを立てるのもなあ...と思い、Azure Container InstanceでPostgreSQLのバックアップコマンドであるpg_dumpが実行できないか試してみました。なお、この内容は不完全版です。

pg_dumpコマンド

PostgreSQLのバックアップを取るpg_dumpコマンドをドキュメントで確認します。

www.postgresql.jp

-hオプションでホスト名、-Uでユーザー名、-dでデータベース名、-fで出力ファイル名を指定できます。実際には以下のようなコマンドになるでしょう。

$ pg_dump -h xxxxxxxxxx.postgres.database.azure.com -U ユーザー名 -d データベース名 -f /home/azureuser/pg_dump001
Password:
$

パスワードを入力しなければいけないので、バッチ的な使い方をするには一工夫必要です。色々と調べると、環境変数PGPASSWORDに値を設定すれば良いようです。

www.postgresql.jp

ただし、この環境変数はセキュリティ上非推奨のようです。が、今回はこの環境変数を使ってみることにします。

Dockerイメージ

DockerイメージはDocker Official Imageのpostgresを使い、コマンドでpg_dumpを実行してみます。

hub.docker.com

実行

Azure Container Instanceで各種環境変数値を設定して実行します。環境変数の設定は「安全としてマーク」に「はい」を設定しておくと良いかと思います。

あとはAzure Container Instanceで設定して実行します。細かい設定は以下の感じで。

今回は確認のためファイルに出力はせず標準出力に出してみることにします。

無事実行することができているようです。

あとはこれをファイル出力したいのですがPortalでお気軽に設定できなかったので、次週にということで。