Databases for PostgreSQL へのマイグレーション
既存の PostgreSQL データベースから IBM Cloud® Databases for PostgreSQL にデータをマイグレーションするためのさまざまなオプションがあります。 最もシンプルで効果的なものに焦点を当てています。 開始するには、PostgreSQL をローカルにインストールして、psql ツールと pg_dump ツールを用意する必要があります。 厳密には必須ではありませんが、Cloud Databases
CLI を使用すると、新しい Databases for PostgreSQL のデプロイメントに接続してリストアすることが容易になります。
pg_dump
ソース・データベースで pg_dump を実行して、データベースの再作成に使用できる SQL ファイルを作成します。 少なくとも、pg_dump は、ホスト名 (-h フラグ)、ポート番号 (-p フラグ)、データベース名 (-d フラグ)、ユーザー名 (-U フラグ)、およびダンプを書き込むファイルまたはディレクトリーの名前
(-f フラグ) を取ります。
例えば、以下のコマンドは、admin ユーザーを使用して、sl-eu-lon-2-portal.4.dblayer.com (ポート 17980) でホストされる PostgreSQL の「compose」データベースをダンプし、結果を dump.sql に保存します。
pg_dump -h sl-eu-lon-2-portal.4.dblayer.com -p 17980 -d compose -U admin -f dump.sql
その pg_dump コマンドには多くのオプションがあり、その機能の詳しい内容については 公式ドキュメントと コマンドリファレンスを参照することをお勧めします。
pg_dumpallを使用すると、サポートされていないシステムテーブルを操作に含めようとするため、パーミッションの問題が発生します。 ドキュメントにあるように、pg_dumpを使用し、ユーザ固有のテーブルを指定します。
pg_dump の出力のリストア
pg_dump を実行したら、その結果の出力を新しい Databases for PostgreSQL のデプロイメントにアップロードできます。 出力は SQL であるため、psql コマンドを使用するだけでデータベースに送信できます。 admin ユーザーを使用してインポートを実行することをお勧めします。
psql を使って管理者として接続する方法の詳細については、 psql を使った接続を 参照してください。 psql コマンドを使用して接続するには、admin ユーザーの接続ストリングと TLS 証明書が必要です。 証明書は、base64
からデコードし、任意のローカル・ファイルとして保管する必要があります。 以前に作成した dump.sql を example-psqlという名前のデータベース・デプロイメントにインポートするには、パラメーターに -f dump.sql を指定して psql コマンドを呼び出します。 このパラメーターは、psql に対して、ファイル内の SQL ステートメントを読み取って実行するように指示します。
このコマンドは次のようになります。
PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt psql 'host=c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud port=32484 dbname=ibmclouddb user=admin sslmode=verify-full' -f dump.sql
psql による接続の資料に記載されているように、Cloud Databases CLI プラグインは接続を単純化します。 前の psql インポートは、以下のように実行できます。
ibmcloud cdb deployment-connections example-psql -s -- -f dump.sql
ユーザーが指定されていない場合、このコマンドでは自動的に admin ユーザーが使用されます。 また、パスワードを求める対話式プロンプトが表示されます。 TLS 証明書が自動的に取得されて使用されます。 API から詳細が確立されると、-s は psql (または、構成されたすべてのコマンド) を開始します。 -- の後のすべての内容がコマンドに渡されます。
リストア・プロセスの実行中に、データベース・デプロイメントに対して行われる変更に関する多数のメッセージが出力されます。
pg_restoreを使用した移行オプションの追加
sql およびデータが含まれている tar ファイルを別途所有するユーザーの場合、前述の pg_restore コマンドに加えて、コマンド psql を使用して、データをマイグレーションできます。 pg_restore コマンドの例を以下に示します。
PGPASSWORD=yourpasswordhere PGSSLROOTCERT=cert.crt pg_restore -h c7798cf6-e5d2-4513-b17f-3d3fa67d8291.8f7bfd8f3faa4218aec56e069eb46187.databases.appdomain.cloud -p 32484 -U admin -F t -d ibmclouddb tarfile.tar