Table of Contents [expand]
最終更新日 2025年03月28日(金)
別のマネージド PostgreSQL プロバイダーから Heroku Postgres に移行するプロセスはシンプルです。Heroku Postgres を使用すると、低コストでパフォーマンスの高い、簡単なリソース管理が実現します。この記事では、移行プロセスの前に完了する必要がある前提条件のステップについて説明します。これらのステップを完了したら、以下のクラウドプロバイダーから Heroku Postgres への移行に関するガイドを参照してください。
- AWS RDS
- Google Cloud SQL
- Azure Database for PostgreSQL
- Linode Managed PostgreSQL
- UpCloud Managed PostgreSQL
- Render PostgreSQL
- DigitalOcean Managed PostgreSQL
- Vultr Managed PostgreSQL
- Aiven for PostgreSQL
各ガイドでは、データベースに「ダンプと復元」の移行戦略を使用します。データベースが 100 GB 未満で、数時間のダウンタイムを許容できる場合は、ほとんどのユースケースにこの戦略が適合します。
ガイドで取り上げるのはリストに記載されているデータベースの移行プロセスのみですが、ダンプと復元の戦略は他のデータベース (オンプレミスのデータベースなど) にも使用できます。
あるクラウドプロバイダーから別のクラウドプロバイダーに Postgres を移行する際の大まかな考慮事項については、「Planning Your PostgreSQL Migration」(PostgreSQL の移行の計画) を参照してください。
ダウンタイムの許容範囲
ダンプと復元のアプローチは、移行時に環境内で一定のダウンタイムを許容できることを前提としています。移行プロセスでは、まずデータベーススキーマとデータ全体をファイルにダンプします。このステップは、データベースのサイズに応じて数分または数時間かかる場合があります。次に、S3 と互換性のあるストレージバケットにファイルをアップロードします。最後に、Heroku Postgres を使用してファイルからデータベースを復元します。
データベースをストレージにダンプし、それを Heroku でファイルから復元するまでの間は、以降元のデータベースに行った更新はキャプチャされず、Heroku データベースに適用されません。移行期間中にデータベースに書き込んだり、システムをオフラインにしたりしないように、システムを読み取り専用モードに設定することが重要です。
余裕をもって、数時間のダウンタイムを計画してください。
データベースが Heroku アプリにアタッチされている場合は、アプリをメンテナンスモードにします。
前提条件
まず、以下を準備していることを前提としています。
- リストに記載されているクラウドプロバイダーのいずれかの Postgres のマネージドインスタンス
- コマンドラインからそのデータベースに接続するための資格情報
- 各ガイドに記載された、S3 と互換性のあるストレージバケットへの書き込みアクセス
- 100 GB 未満のデータベース
- Heroku アカウント
情報と設定を収集する
クラウドプロバイダーでの Postgres の設定について、いくつかの情報が必要です。
1. PostgreSQL のバージョン
psql コマンドラインユーティリティを使用して PostgreSQL インスタンスに接続します。Postgres のバージョンを確認するには、以下のコマンドを実行します。
$ psql=> SELECT version();
version
--------------------------------------------------------------------------
PostgreSQL 15.8 on x86_64-pc-linux-gnu, compiled by gcc (GCC) 7.3.1 20180712 (Red Hat 7.3.1-12), 64-bit
(1 row)
この例では、メジャーバージョン 15 を使用しています。
PostgreSQL インスタンスが実行している Postgres のバージョンが、Heroku Postgres がサポートしているバージョンよりも古い場合は、まずクラウドプロバイダーのインスタンスでサポートされているバージョンにアップグレードする必要があります。バージョンアップグレードのプロセスと移行のプロセスを分離すると、トラブルシューティングが容易になります。
2. 拡張機能
後で Heroku Postgres の現在のデータベースに同じ拡張機能をインストールする必要があります。インスタンスでインストールした拡張機能を一覧表示するには、以下のコマンドを実行します。
$ psql=> \dx
List of installed extensions
Name | Version | Schema | Description
---------+---------+------------+------------------------------------
plpgsql | 1.0 | pg_catalog | PL/pgSQL procedural language
sslinfo | 1.2 | public | information about SSL certificates
(2 rows)
Azure データベースインスタンスには、azure および pgaadauth の拡張機能が含まれます。Heroku Postgres に移行した後に、これらの拡張機能をインストールする必要はありません。
3. その他の設定
クラウドプロバイダーでの Postgres データベースの設定を取得するには、Postgres コマンドを使用して psql を実行し、設定をファイルにダンプします。
$ psql postgres://DB_USERNAME:DB_PASSWORD@DB_HOST:DB_PORT/DB_NAME \
-c "\copy (select * from pg_settings) to '/tmp/settings_postgres.csv' with (format csv, header true);"
このコマンドはデータベースのすべての設定を /tmp/settings_postgres.csv に出力します。必ず Postgres URI に Postgres の資格情報と接続情報を入力してください。
4. データベースで使用するアプリケーションとサービス
次に、データベースに接続するアプリケーション、サービス、API、その他のシステムのリストを収集します。クラウドプロバイダーの PostgreSQL から Heroku Postgres に移行する時期が来たら、各システムの接続情報を変更する必要があります。
次のステップ
現在の Postgres のバージョンと設定の詳細を把握できたら、お使いのクラウドプロバイダーの PostgreSQL インスタンス向けのガイドに従って移行プロセスを開始できます。
- AWS RDS から Heroku Postgres への移行
- Google Cloud SQL から Heroku Postgres への移行
- Azure Database for PostgreSQL から Heroku Postgres への移行
- Linode Managed PostgreSQL から Heroku Postgres への移行
- UpCloud Managed PostgreSQL から Heroku Postgres への移行
- Render PostgreSQL から Heroku Postgres への移行
- DigitalOcean Managed PostgreSQL から Heroku Postgres への移行
- Vultr Managed PostgreSQL から Heroku Postgres への移行
- Aiven Managed PostgreSQL から Heroku Postgres への移行