2.3. Operator を使用したローカルデータベースの外部データベースサーバーへの移行


デフォルトでは、Red Hat Developer Hub は各プラグインのデータを PostgreSQL データベースでホストします。データベースのリストを取得すると、Developer Hub で設定されているプラグインの数によっては、複数のデータベースが表示される場合があります。ローカルの PostgreSQL サーバーでホストされている RHDH インスタンスから、AWS RDS、Azure データベース、Crunchy データベースなどの外部 PostgreSQL サービスにデータを移行できます。各 RHDH インスタンスからデータを移行するには、pg_dumppsql、または pgAdmin などの PostgreSQL ユーティリティーを使用できます。

注記

次の手順では、データベースコピースクリプトを使用して迅速な移行を実行します。

前提条件

  • ローカルマシンに pg_dump および psql ユーティリティーがインストールした。
  • データをエクスポートする場合は、ローカルデータベースの完全なダンプを作成するための PGSQL ユーザー権限がある。
  • データをインポートする場合は、外部データベースを作成し、データベースダンプを取り込むための PGSQL 管理者権限がある。

手順

  1. ターミナルで次のコマンドを実行して、ローカル PostgreSQL データベース Pod のポート転送を設定します。

    oc port-forward -n <your-namespace> <pgsql-pod-name> <forward-to-port>:<forward-from-port>

    ここでは、以下のようになります。

    • <pgsql-pod-name> 変数は、backstage-psql-<deployment-name>-<_index> という形式の PostgreSQL Pod の名前を示します。
    • <forward-to-port> 変数は、PostgreSQL データの転送先のポートを示します。
    • <forward-from-port> 変数は、5432 などの PostgreSQL ローカルインスタンスのポートを示します。

      例: ポート転送の設定

      oc port-forward -n developer-hub backstage-psql-developer-hub-0 15432:5432

  2. 次の db_copy.sh スクリプトのコピーを作成し、設定に応じて詳細を編集します。

    #!/bin/bash
    
    to_host=<db-service-host> 1
    to_port=5432 2
    to_user=postgres 3
    
    from_host=127.0.0.1 4
    from_port=15432 5
    from_user=postgres 6
    
    allDB=("backstage_plugin_app" "backstage_plugin_auth" "backstage_plugin_catalog" "backstage_plugin_permission" "backstage_plugin_scaffolder" "backstage_plugin_search") 7
    
    for db in ${!allDB[@]};
    do
      db=${allDB[$db]}
      echo Copying database: $db
      PGPASSWORD=$TO_PSW psql -h $to_host -p $to_port -U $to_user -c "create database $db;"
      pg_dump -h $from_host -p $from_port -U $from_user -d $db | PGPASSWORD=$TO_PSW psql -h $to_host -p $to_port -U $to_user -d $db
    done
    1
    宛先ホスト名 (例: <db-instance-name>.rds.amazonaws.com)。
    2
    宛先ポート (例: 5432)。
    3
    宛先サーバーのユーザー名 (例: postgres)。
    4
    ソースホスト名 (例: 127.0.0.1)。
    5
    送信元ポート番号 (例: <forward-to-port> 変数)。
    6
    ソースサーバーのユーザー名 (例: postgres)。
    7
    インポートするデータベースの名前を二重引用符で囲み、スペースで区切ります (例: "backstage_plugin_app" "backstage_plugin_auth" "backstage_plugin_catalog" "backstage_plugin_permission" "backstage_plugin_scaffolder" "backstage_plugin_search")。
  3. データをコピーするための宛先データベースを作成します。

    /bin/bash TO_PSW=<destination-db-password> /path/to/db_copy.sh 1
    1
    <destination-db-password> 変数は、宛先データベースに接続するためのパスワードを示します。
    注記

    データのコピーが完了したら、ポート転送を停止できます。大規模データベースの処理と圧縮ツールの使用に関する詳細は、PostgreSQL Web サイトの Handling Large Databases セクションを参照してください。

  4. Backstage カスタムリソース (CR) を再設定します。詳細は、Operator を使用した外部 PostgreSQL インスタンスの設定 を参照してください。
  5. 再設定後、Backstage CR の末尾に次のコードが存在することを確認します。

    # ...
    spec:
      database:
        enableLocalDb: false
      application:
      # ...
        extraFiles:
          secrets:
            - name: {my-product-database-certificates-secrets}
              key: postgres-crt.pem # key name as in {my-product-database-certificates-secrets} Secret
        extraEnvs:
          secrets:
            - name: {my-product-database-secrets}
    # ...
    注記

    Backstage CR を再設定すると、対応する StatefulSet および Pod オブジェクトは削除されますが、PersistenceVolumeClaim オブジェクトは削除されません。ローカル PersistenceVolumeClaim オブジェクトを削除するには、次のコマンドを使用します。

    oc -n developer-hub delete pvc <local-psql-pvc-name>

    <local-psql-pvc-name> 変数は、data-<psql-pod-name> という形式です。

  6. 設定の変更を適用します。

検証

  1. 次のコマンドを実行して、RHDH インスタンスが移行したデータを使用して実行されており、ローカルの PostgreSQL データベースが含まれていないことを確認します。

    oc get pods -n <your-namespace>
  2. 出力で次の詳細を確認します。

    • backstage-developer-hub-xxx Pod が実行中の状態であること。
    • backstage-psql-developer-hub-0 Pod が利用不可であること。

      これらの詳細は、OpenShift Container Platform Web コンソールの Topology ビューを使用して確認することもできます。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

© 2024 Red Hat, Inc.