Azure PostgreSQLをリージョン間で移動した話
Azure PostgreSQLをリージョン間で移動した経験について、その手順と結果を記録しておきます。
前提
今回移動したAzure PostgreSQLは、個人開発で作っているシステムのデータベースとして使用しているものです。
費用を抑えるため、下記の構成で作成しました。
構成:バースト可能, B1ms、1 個の仮想コア、2 GiB の RAM、32 GiB の ストレージ
システムの構成
システムの構成は、下記のとおりです。
- フロントエンド:React
- バックエンド:FastAPI
- データベース:Azure PostgreSQL
- AI:Azure OpenAI
開発環境
フロントエンドとバックエンドはローカルPCで動作させ、データベースとAIはAzure上で動作させることにしました。
リージョンは特に深く考えず、East USを選択しました。
本番環境
フロントエンドとバックエンドはAzure App Services Freeプランで動作させ、データベースとAIは開発環境と同じものを使用します。
移動した理由
移動を決めた理由は以下の通りです:
- Azure App Services FreeプランがEast USでは利用できなかったため
- East USではAzure PostgreSQLを停止できず、常時課金が発生するため
移動したリージョン
- 移動前:East US
- 移動先:Japan West
移動方法の検討
各種移行方法を検討した結果、以下のような状況でした:
| 移行方法 | 使用可否 | 理由 |
|---|---|---|
| Azure Database Migration Service | ❌ | リージョン間の移動では使えない |
| Azure PostgreSQL内のレプリケーション機能 | ❌ | バースト可能構成では使えない |
| Azure Resource Mover | ❌ | PostgreSQLは非対応 |
| Azure Database for PostgreSQL の移行サービス | ❌ | Azure PostgreSQLからAzure PostgreSQLへの移行について詳細な説明がないため使用を見送り |
| pg_dump/pg_restore | ✅ | この方法を採用 |
移動手順
前提条件
VS Codeのターミナルで移動前のPostgreSQLに接続してpsqlが使えるように環境設定済みであること。
手順
-
データベースのダンプを取得
pg_dumpallを使ってデータベース全体のダンプを取得します。pg_dumpall -h <source_server_name>.postgres.database.azure.com -U <username>@<source_server_name> -p 5432 > dump.sql -
移動先リージョンにAzure PostgreSQLサーバーを作成
移動先リージョン(Japan West)に新しいPostgreSQLサーバーを作成します。 -
移動先PostgreSQLへの接続設定
移動先のPostgreSQLに接続できるように環境設定を行います。 -
データベースのダンプを復元
psqlを使って移動先のAzure PostgreSQLにダンプを復元します。psql -h <destination_server_name>.postgres.database.azure.com -U <username>@<destination_server_name> -p 5432 < dump.sql
移動結果と感想
pg_dumpallとpsqlを使った移動は、思ったより簡単に実行できました。
East USではAzure PostgreSQLを停止できず継続的に料金が発生していましたが、Japan Westに移動したことで停止機能が利用できるようになり、費用を大幅に抑えることができそうです。
参考にしたセッション
今回の検討・実施にあたり、以下のセッションが大変参考になりました。
-
「Microsoft Azure Virtual Training Day: Linux と PostgreSQL を Azure に移行する」
移行に関する質問をして詳しい回答をいただき、大変参考になりました。 -
「Reactor Model Context Protocol (MCP) でエージェントを進化させる」
PostgreSQLの確認をpsqlやVS CodeのPostgreSQL拡張機能で行っていましたが、画面が見づらくて困っていました。このセッションでpgAdmin4を使う方法を知ることができ、作業効率が大幅に向上しました。
このようなセッションを開催していただき、ありがとうございました。
まとめ
Azure PostgreSQLのリージョン間移動は、標準的な移行ツールでは対応していないケースが多いことが分かりました。しかし、pg_dumpallとpsqlを使った古典的な方法であれば、確実かつ簡単に移行することができました。
特にバースト可能構成のような制限がある環境では、この手法が最も実用的な選択肢だと感じました。今後、他の移行方法についても調査していこうと思います。
Last updated: 2025-11-02 22:16:09
Source: Azure PostgreSQLをリージョン間で移動した話.md