9.2. MySQL データベースの外部化


MySQL データベースを完全に外部化するには、以下の手順を使用します。

警告

この操作により、プロセスの進行中に環境でダウンタイムが発生します。

手順

  1. オンプレミス型 3scale インスタンスをホストする OpenShift ノードにログインし、そのプロジェクトに切り替えます。

    oc login -u <user> <url>
    oc project <3scale-project>
    Copy to Clipboard Toggle word wrap

    <user><url>、および <3scale-project> を、実際のクレデンシャルとプロジェクト名に置き換えます。

  2. 以下に示す順序で手順実施し、すべての Pod をスケールダウンします。これにより、データの喪失が回避されます。

    オンプレミス型 3scale の停止

    OpenShift Web コンソールまたはコマンドラインインターフェイス (CLI) から、すべてのデプロイメント設定を以下の順序でゼロレプリカにスケールダウンします。

    • 3scale 2.6 より前のバージョンの場合は apicast-wildcard-routerzync、3scale 2.6 以降の場合は zync-quezync
    • apicast-stagingapicast-production
    • system-sidekiqbackend-cron、および system-sphinx

      • 3scale 2.3 の場合には system-resque を対象に含めます。
    • system-app
    • backend-listenerbackend-worker
    • backend-redissystem-memcachesystem-mysqlsystem-redis、および zync-database

      以下の例は、apicast-wildcard-routerzync について、CLI でこの操作を実施する方法を示しています。

      oc scale dc/apicast-wildcard-router --replicas=0
      oc scale dc/zync --replicas=0
      Copy to Clipboard Toggle word wrap
      注記

      各ステップのデプロイメント設定は同時にスケールダウンできます。たとえば、apicast-wildcard-routerzync を一緒にスケールダウンできます。ただし、各ステップの Pod が終了するのを待ってから、次の Pod をスケールダウンすることをお勧めします。3scale インスタンスは、完全に再起動されるまで一切アクセスできなくなります。

  3. 3scale プロジェクトで実行中の Pod がないことを確認するには、以下のコマンドを使用します。

    oc get pod
    Copy to Clipboard Toggle word wrap

    このコマンドは、No resources found を返すはずです。

  4. 以下のコマンドを使用して、データベースレベルの Pod を再度スケールアップします。

    oc scale dc/{backend-redis,system-memcache,system-mysql,system-redis,zync-database} --replicas=1
    Copy to Clipboard Toggle word wrap
  5. 次のステップに進む前に、system-mysql Pod を通じて外部 MySQL データベースにログインできることを確認してください。

    oc rsh system-mysql-<system_mysql_pod_id>
    mysql -u root -p -h <host>
    Copy to Clipboard Toggle word wrap
    • <system_mysql_pod_id>: system-mysql Pod の識別子
    • ユーザーは必ず root でなければなりません。詳しくは、外部 MySQL データベースに関する制約 を参照してください。

      1. CLI に mysql> が表示されるようになります。exit と入力してから enter キーを押します。次のプロンプトで再度 exit と入力して、OpenShift ノードのコンソールに戻ります。
  6. 以下のコマンドを使用して、MySQL のフルダンプを実行します。

    oc rsh system-mysql-<system_mysql_pod_id> /bin/bash -c "mysqldump -u root --single-transaction --routines --triggers --all-databases" > system-mysql-dump.sql
    Copy to Clipboard Toggle word wrap
    • <system_mysql_pod_id> を一意の system-mysql Pod ID に置き換えます。
    • 次の例のように、ファイル system-mysql-dump.sql に有効な MySQL レベルのダンプが含まれていることを確認します。

      $ head -n 10 system-mysql-dump.sql
      -- MySQL dump 10.13  Distrib 5.7.24, for Linux (x86_64)
      --
      -- Host: localhost    Database:
      -- ------------------------------------------------------
      -- Server version   5.7.24
      
      /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
      /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
      /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
      /*!40101 SET NAMES utf8 */;
      Copy to Clipboard Toggle word wrap
  7. system-mysql Pod をスケールダウンし、レプリカが 0 (ゼロ) のままにします。

    oc scale dc/system-mysql --replicas=0
    Copy to Clipboard Toggle word wrap
  8. <password><host> を適宜置き換え、URL mysql2://root:<password>@<host>/systembase64 変換値を取得します。

    echo "mysql2://root:<password>@<host>/system" | base64
    Copy to Clipboard Toggle word wrap
  9. リモート MySQL データベースのデフォルトの 'user'@'%' を作成します。これには SELECT 権限しか付与する必要はありません。また、その base64 変換値を取得します。

    echo "user" | base64
    echo "<password>" | base64
    Copy to Clipboard Toggle word wrap
    • <password> を 'user'@'%' のパスワードに置き換えます。
  10. バックアップを実行し、OpenShift シークレット system-database を編集します。

    oc get secret system-database -o yaml > system-database-orig.bkp.yml
    oc edit secret system-database
    Copy to Clipboard Toggle word wrap
    • URL: これを [step-8] で取得した値に置き換えます。
    • DB_USER および DB_PASSWORD: 共に前のステップの値を使用します。
  11. system-mysql-dump.sql をリモートデータベースサーバーに送信し、ダンプをインポートします。インポートには、以下のコマンドを使用します。
  12. 以下のコマンドを使用して system-mysql-dump.sql をリモートデータベースサーバーに送信し、ダンプをサーバーにインポートします。

    mysql -u root -p < system-mysql-dump.sql
    Copy to Clipboard Toggle word wrap
  13. system という新しいデータベースが作成されたことを確認します。

    mysql -u root -p -se "SHOW DATABASES"
    Copy to Clipboard Toggle word wrap
  14. 以下の手順を使用して、オンプレミス型 3scale を起動します。これにより、すべての Pod が正しい順序でスケールアップされます。

    オンプレミス型 3scale の起動

    • backend-redissystem-memcachesystem-mysqlsystem-redis、および zync-database
    • backend-listenerbackend-worker
    • system-app
    • system-sidekiqbackend-cron、および system-sphinx

      • 3scale 2.3 の場合には system-resque を対象に含めます。
    • apicast-stagingapicast-production
    • 3scale 2.6 より前のバージョンの場合は apicast-wildcard-routerzync、3scale 2.6 以降の場合は zync-quezync

      以下の例は、backend-redissystem-memcachesystem-mysqlsystem-redis、および zync-database について、CLI でこの操作を実行する方法を示しています。

      oc scale dc/backend-redis --replicas=1
      oc scale dc/system-memcache --replicas=1
      oc scale dc/system-mysql --replicas=1
      oc scale dc/system-redis --replicas=1
      oc scale dc/zync-database --replicas=1
      Copy to Clipboard Toggle word wrap

      system-app Pod が問題なく起動し、実行されるはずです。

  15. 確認後、上記の順序 で他の Pod をスケールアップして元の状態に戻します。
  16. system-mysql DeploymentConfig オブジェクトのバックアップを作成します。数日後、すべて正常に動作していることが確認できたら、削除してかまいません。system-mysql DeploymentConfig を削除することで、この手順を今後再び実行する場合の混乱を防ぐことができます。
トップに戻る
Red Hat logoGithubredditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

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

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

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

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

会社概要

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

Theme

© 2025 Red Hat