第3章 組み込み PostgreSQL 10 データベースから外部 PostgreSQL 10 データベースへの移行


重要
  • system.appSpec.replicas1 にスケーリングする前に、データベースをサポートされているバージョン (現在 PostgreSQL 13) にアップグレードする必要があります。Red Hat 3scale API Management のサポート対象設定 を参照してください。
  • このドキュメントは、組み込み PostgreSQL 10 データベースから外部 PostgreSQL 10 データベースへの移行を説明します。外部 PostgreSQL 10 データベースから外部 PostgreSQL 13 データベースにアップグレードするには、PostgreSQL の公式ドキュメント に従う必要があります。
  • 免責事項: ここに記載されている外部 Web サイトへのリンクは、お客様の利便性のみを目的として提供されています。Red Hat はリンクの内容を確認しておらず、コンテンツまたは可用性に責任を負わないものとします。外部 Web サイトへのリンクが含まれていても、Red Hat が Web サイトまたはその組織、製品、もしくはサービスを保証することを意味するものではありません。お客様は、外部サイトまたはコンテンツの使用 (または信頼) によって生じる損失または費用について、Red Hat が責任を負わないことに同意するものとします。

組み込み PostgreSQL データベースから外部 PostgreSQL データベースに移行するプロセスは、同じ DB バージョンで実行する必要があります。この移行ガイドは、PostgreSQL 10 である必要があります。運用環境には外部データベースを使用する必要があります。

system-database として PostgreSQL を使用している場合は、3scale での 外部データベースのインストール にサポートされているバージョンを使用してください。

重要
  • これらの手順は一般的なガイドラインです。正確な手順は、オペレーティングシステム、PostgreSQL のバージョン、データベースの特定要件によって異なる場合があります。
  • アップグレードする前に、PostgreSQL のドキュメント とリリースノートをよく読んでください。
  • この手順を実稼働環境に適用する前に、非実稼働環境でテストしてください。
  • このプロセスの手順が完了するまで、サービスの提供が中断されます。このサービス中断が生じるため、メンテナンス期間を設けるようにしてください。

手順

  1. APIManager カスタマーリソース (CR) を使用して、system-app の DeploymentConfig (DC) をスケールダウンします。

    apiVersion: apps.3scale.net/v1alpha1
    kind: APIManager
    metadata:
      name: <apimanager_sample>
    spec:
      system:
        appSpec:
          replicas: 0
      wildcardDomain: <example.com>
    Copy to Clipboard Toggle word wrap
  2. Pod がスケールダウンされていることを確認します。

    $ oc get deploymentconfig system-app -o jsonpath='{.status.availableReplicas}{"\n"}'
    0
    Copy to Clipboard Toggle word wrap
    1. PostgreSQL の移行を続行する前に、すべての 3scale Pod のステータスが Terminated になるまで待ちます。
  3. すべてのデータ、設定、ユーザーアカウントを含む既存の PostgreSQL データベースのバックアップを作成します。

    $ DB_USER=$(oc get secret system-database -o jsonpath="{.data.DB_USER}" | base64 --decode)
    $ DATABASE_NAME=$(oc get secret system-database -o jsonpath="{.data.URL}" | base64 --decode | cut -d '/' -f4)
    Copy to Clipboard Toggle word wrap
    重要

    stdout にパイプしないでください。バイナリーファイルが破損します。

  4. カスタム形式でダンプします。

    $ oc rsh $(oc get pods -l 'deploymentConfig=system-postgresql' -o json | jq -r '.items[0].metadata.name') bash -c "pg_dump -U $DB_USER -F c $DATABASE_NAME -f /tmp/<backupfilename>.backup"
    Copy to Clipboard Toggle word wrap
  5. バックアップをダウンロードします。

    $ oc cp $(oc get pods -l 'deploymentConfig=system-postgresql' -o json | jq -r '.items[0].metadata.name'):/tmp/<backupfilename>.backup <backupfilename>.backup
    Copy to Clipboard Toggle word wrap
  6. 3scale にデプロイしたのと同じバージョンの PostgreSQL 10 をターゲットの外部システムにインストールします。インストール手順に従って、PostgreSQL Web サイトからインストールパッケージをダウンロードします。
  7. 既存の PostgreSQL データベースで作成したバックアップ (すべてのデータ、設定、ユーザーアカウントを含む) をターゲットの外部システムにコピーして復元します。
  8. PostgreSQL で新しいデータベースを作成します。

    $ createdb -U <username> <databasename>
    Copy to Clipboard Toggle word wrap
  9. バックアップファイルから新しい PostgreSQL データベースにデータをインポートします。

    • カスタム形式で復元します。

      $ pg_restore [--host <databasehostname>] -U <username> -d <databasename> --verbose -F c <backupfilename>.backup
      Copy to Clipboard Toggle word wrap
  10. データベースに接続してクエリーを実行し、データが新しい PostgreSQL データベースに正常にインポートされたことを確認します。

    postgresql://<username>:<password>@<databasehostname>/<databasename>
    Copy to Clipboard Toggle word wrap
  11. system-database シークレットを更新します。

    $ oc apply -f - <<EOF
    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: system-database
    stringData:
      DB_PASSWORD: <password>
      DB_USER: <username>
      URL: "postgresql://<username>:<password>@<databasehostname>:<databaseport>/<databasename>"
    type: Opaque
    EOF
    Copy to Clipboard Toggle word wrap
  12. APImanager CR を更新して外部データベースを有効にし、システムをスケールアップします。

    $ oc patch apimanager <apimanager_sample> --type=merge --patch '{"spec": {"system": {"database": null, "appSpec": {"replicas": 1}}, "externalComponents": {"system": {"database": true}}}}'
    Copy to Clipboard Toggle word wrap
  13. ローカルの postgresql デプロイメントを削除します。

    $ oc delete service system-postgresql
    $ oc delete deploymentconfig system-postgresql
    $ oc delete pvc postgresql-data
    Copy to Clipboard Toggle word wrap
  14. Pod がスケールアップされていることを確認します。

    $ oc wait --for=condition=available apimanager/<apimanager_sample> --timeout=-1s
    Copy to Clipboard Toggle word wrap
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。 最新の更新を見る.

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

Theme

© 2025 Red Hat