5.2. MySQL 데이터베이스 외부 지정
다음 단계를 사용하여 MySQL 데이터베이스를 완전히 외부화합니다.
그러면 프로세스가 진행되는 동안 환경에서 다운타임이 발생합니다.
절차
3scale 온-프레미스 인스턴스가 호스팅되는 OpenShift 노드에 로그인하고 해당 프로젝트로 변경합니다.
$ oc login -u <user> <url> $ oc project <3scale-project>
<user>
,<url>
,<3scale-project>
를 사용자 고유의 자격 증명 및 프로젝트 이름으로 바꿉니다.표시된 순서에 따라 모든 pod를 축소합니다. 이는 데이터 손실을 방지 할 것입니다.
3scale 온-프레미스 중지
OpenShift 웹 콘솔 또는 CLI(명령줄 인터페이스)에서 모든 배포 구성을 다음 순서로 0개의 복제본으로 축소합니다.
-
3scale 2.6 이전 버전의 경우
apicast-wildcard-router
및zync
3scale 2.6 이상 버전의 경우zync-que
및zync
-
apicast-staging
및apicast-production
. system-sidekiq
,backend-cron
,system-sphinx
.-
3scale 2.3에는
system-resque
가 포함되어 있습니다.
-
3scale 2.3에는
-
system-app
. -
backend-listener
및backend-worker
. backend-redis
,system-memcache
,system-mysql
,system-redis
,zync-database
.다음 예제에서는
apicast-wildcard-router
및zync
에 대해 CLI에서 이 작업을 수행하는 방법을 보여줍니다.$ oc scale dc/apicast-wildcard-router --replicas=0 $ oc scale dc/zync --replicas=0
참고각 단계에 대한 배포 구성은 동시에 축소할 수 있습니다. 예를 들어
apicast-wildcard-router
및zync
를 함께 축소할 수 있습니다. 그러나 다음 항목을 축소하기 전에 각 단계의 Pod가 종료될 때까지 기다리는 것이 좋습니다. 3scale 인스턴스는 완전히 다시 시작될 때까지 완전히 액세스할 수 없습니다.
-
3scale 2.6 이전 버전의 경우
3scale 프로젝트에서 실행 중인 Pod가 없는지 확인하려면 다음 명령을 사용합니다.
oc get pods -n <3scale_namespace>
명령에서 리소스를 찾을 수 없음을 반환해야 합니다.
다음 명령을 사용하여 데이터베이스 수준 Pod를 다시 확장합니다.
$ oc scale dc/{backend-redis,system-memcache,system-mysql,system-redis,zync-database} --replicas=1
다음 단계를 진행하기 전에
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 데이터베이스 제한 사항을 참조하십시오.
-
CLI에
mysql>
이 표시됩니다. exit을 입력한 다음 return을 누릅니다. 다음 프롬프트에서 exit을 다시 입력하여 OpenShift 노드 콘솔로 돌아갑니다.
-
CLI에
다음 명령을 사용하여 전체 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 8.0, for Linux (x86_64) -- -- Host: localhost Database: -- ------------------------------------------------------ -- Server version 8.0 /*!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 */;
-
<system_mysql_pod_id>를 고유한
system-mysql
pod를 축소하고 0(영) 복제본으로 둡니다.$ oc scale dc/system-mysql --replicas=0
은 URL
mysql2://root:<password>@<host>/system
와 동등한 base64 를 찾아 <password> 및 <host> 를 적절하게 바꿉니다.$ echo "mysql2://root:<password>@<host>/system" | base64
원격 MySQL 데이터베이스에 기본 'user'@'%' 를 생성합니다. SELECT 권한만 있으면 됩니다. 또한 동등한 base64를 찾을 수 있습니다.
$ echo "user" | base64 $ echo "<password>" | base64
- <password>를 'user'@'%'의 암호로 바꿉니다.
백업을 수행하고 OpenShift 시크릿
system-database
를 편집합니다.$ oc get secret system-database -o yaml > system-database-orig.bkp.yml $ oc edit secret system-database
- URL: [step-8]의 값으로 바꿉니다.
- DB_USER 및 DB_PASSWORD: 두 가지 모두에 대해 이전 단계의 값을 사용합니다.
-
system-mysql-dump.sql
을 원격 데이터베이스 서버로 전송하고 덤프를 가져옵니다. 명령을 사용하여 가져옵니다. 아래 명령을 사용하여
system-mysql-dump.sql
을 원격 데이터베이스 서버에 전송하고 덤프를 서버로 가져옵니다.mysql -u root -p < system-mysql-dump.sql
system 이라는 새 데이터베이스가 생성되었는지 확인합니다.
mysql -u root -p -se "SHOW DATABASES"
모든 Pod를 올바른 순서로 확장하는 Start 3scale 온-프레미스 에 대한 다음 지침을 사용합니다.
3scale 온-프레미스 시작
-
backend-redis
,system-memcache
,system-mysql
,system-redis
,zync-database
. -
backend-listener
및backend-worker
. -
system-app
. system-sidekiq
,backend-cron
,system-sphinx
-
3scale 2.3에는
system-resque
가 포함되어 있습니다.
-
3scale 2.3에는
-
apicast-staging
및apicast-production
. 3scale 2.6 이전 버전의 경우
apicast-wildcard-router
및zync
3scale 2.6 이상 버전의 경우zync-que
및zync
다음 예제에서는
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가 문제 없이 가동 및 실행되어야 합니다.
-
- 검증 후 표시된 순서대로 다른 포드를 확장합니다.
-
system-mysql
DeploymentConfig 오브젝트를 백업합니다. 모든 것이 제대로 실행되고 있는지 확인한 후 며칠 후에 삭제할 수 있습니다.system-mysql
DeploymentConfig를 삭제하면 향후 이 절차가 다시 수행되는 경우 향후 혼동이 발생하지 않습니다.