8.2. MySQL 데이터베이스 외부 지정

다음 단계를 사용하여 MySQL 데이터베이스를 완전히 외부화합니다.

주의

그러면 프로세스가 진행되는 동안 환경에서 다운타임이 발생합니다.

절차

  1. 3scale 온-프레미스 인스턴스가 호스팅되는 OpenShift 노드에 로그인하고 해당 프로젝트로 변경합니다.

    oc login -u <user> <url>
    oc project <3scale-project>

    <user>, <url>, <3scale-project> 를 사용자 고유의 자격 증명 및 프로젝트 이름으로 바꿉니다.

  2. 표시된 순서에 따라 모든 pod를 축소합니다. 이는 데이터 손실을 방지 할 것입니다.

    3scale 온-프레미스 중지

    OpenShift 웹 콘솔 또는 CLI(명령줄 인터페이스)에서 모든 배포 구성을 다음 순서로 0개의 복제본으로 축소합니다.

    • 3scale 2.6 이전 버전의 경우 apicast-wildcard-routerzync 3scale 2.6 이상 버전의 경우 zync-quezync
    • apicast-stagingapicast-production.
    • system-sidekiq, backend-cron, system-sphinx.

      • 3scale 2.3에는 system-resque가 포함되어 있습니다.
    • system-app.
    • backend-listenerbackend-worker.
    • backend-redis,system-memcache,system-mysql,system-redis, zync-database.

      다음 예제에서는 apicast-wildcard-routerzync 에 대해 CLI에서 이 작업을 수행하는 방법을 보여줍니다.

      oc scale dc/apicast-wildcard-router --replicas=0
      oc scale dc/zync --replicas=0
      참고

      각 단계에 대한 배포 구성은 동시에 축소할 수 있습니다. 예를 들어 apicast-wildcard-routerzync를 함께 축소할 수 있습니다. 그러나 다음 항목을 축소하기 전에 각 단계의 Pod가 종료될 때까지 기다리는 것이 좋습니다. 3scale 인스턴스는 완전히 다시 시작될 때까지 완전히 액세스할 수 없습니다.

  3. 3scale 프로젝트에서 실행 중인 Pod가 없는지 확인하려면 다음 명령을 사용합니다.

    oc get pod

    명령에서 리소스를 찾을 수 없음을 반환해야 합니다.

  4. 다음 명령을 사용하여 데이터베이스 수준 Pod를 다시 확장합니다.

    oc scale dc/{backend-redis,system-memcache,system-mysql,system-redis,zync-database} --replicas=1
  5. 다음 단계를 진행하기 전에 system-mysql pod를 통해 외부 MySQL 데이터베이스에 로그인할 수 있는지 확인합니다.

    oc rsh system-mysql-<system_mysql_pod_id>
    mysql -u root -p -h <host>
    • <system_mysql_pod_id>: system-mysql pod의 식별자입니다.
    • 사용자는 항상 root여야 합니다. 자세한 내용은 External MySQL 데이터베이스 제한 사항을 참조하십시오.

      1. CLI에 mysql>이 표시됩니다. exit을 입력한 다음 return을 누릅니다. 다음 프롬프트에서 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
    • <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 */;
  7. system-mysql pod를 축소하고 0(영) 복제본으로 둡니다.

    oc scale dc/system-mysql --replicas=0
  8. 은 URL mysql2://root:<password>@<host>/system 와 동등한 base64 를 찾아 <password><host> 를 적절하게 바꿉니다.

    echo "mysql2://root:<password>@<host>/system" | base64
  9. 원격 MySQL 데이터베이스에 기본 'user'@'%' 를 생성합니다. SELECT 권한만 있으면 됩니다. 또한 동등한 base64를 찾을 수 있습니다.

    echo "user" | base64
    echo "<password>" | base64
    • <password>를 'user'@'%'의 암호로 바꿉니다.
  10. 백업을 수행하고 OpenShift 시크릿 system-database를 편집합니다.

    oc get secret system-database -o yaml > system-database-orig.bkp.yml
    oc edit secret system-database
    • URL: [step-8]의 값으로 바꿉니다.
    • DB_USERDB_PASSWORD: 둘 다 이전 단계의 값을 사용합니다.
  11. system-mysql-dump.sql을 원격 데이터베이스 서버로 전송하고 덤프를 가져옵니다. 명령을 사용하여 가져옵니다.
  12. 아래 명령을 사용하여 system-mysql-dump.sql 을 원격 데이터베이스 서버에 전송하고 덤프를 서버로 가져옵니다.

    mysql -u root -p < system-mysql-dump.sql
  13. system 이라는 새 데이터베이스가 생성되었는지 확인합니다.

    mysql -u root -p -se "SHOW DATABASES"
  14. 모든 Pod를 올바른 순서로 확장하는 Start 3scale 온-프레미스 에 대한 다음 지침을 사용합니다.

    3scale 온-프레미스 시작

    • backend-redis,system-memcache,system-mysql,system-redis, zync-database.
    • backend-listenerbackend-worker.
    • system-app.
    • system-sidekiq, backend-cron, system-sphinx

      • 3scale 2.3에는 system-resque가 포함되어 있습니다.
    • apicast-stagingapicast-production.
    • 3scale 2.6 이전 버전의 경우 apicast-wildcard-routerzync 3scale 2.6 이상 버전의 경우 zync-quezync

      다음 예제에서는 backend-redis,system-memcache,system-mysql,system-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

      이제 system-app pod가 문제 없이 가동 및 실행되어야 합니다.

  15. 검증 후 표시된 순서대로 다른 포드를 확장합니다.
  16. system-mysql DeploymentConfig 오브젝트를 백업합니다. 모든 것이 제대로 실행되고 있는지 확인한 후 며칠 후에 삭제할 수 있습니다. system-mysql DeploymentConfig를 삭제하면 향후 이 절차가 다시 수행되는 경우 향후 혼동이 발생하지 않습니다.