9.2. MySQL 데이터베이스 외부 지정
다음 단계를 사용하여 MySQL 데이터베이스를 완전히 외부화합니다.
그러면 프로세스가 진행되는 동안 환경에서 다운타임이 발생합니다.
절차
3scale 온-프레미스 인스턴스가 호스팅되는 OpenShift 노드에 로그인하고 해당 프로젝트로 변경합니다.
oc login -u <user> <url> oc project <3scale-project>
oc login -u <user> <url> oc project <3scale-project>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <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
oc scale dc/apicast-wildcard-router --replicas=0 oc scale dc/zync --replicas=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고각 단계에 대한 배포 구성은 동시에 축소할 수 있습니다. 예를 들어
apicast-wildcard-router
및zync
를 함께 축소할 수 있습니다. 그러나 다음 항목을 축소하기 전에 각 단계의 Pod가 종료될 때까지 기다리는 것이 좋습니다. 3scale 인스턴스는 완전히 다시 시작될 때까지 완전히 액세스할 수 없습니다.
-
3scale 2.6 이전 버전의 경우
3scale 프로젝트에서 실행 중인 Pod가 없는지 확인하려면 다음 명령을 사용합니다.
oc get pod
oc get pod
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 명령에서 리소스를 찾을 수 없음을 반환해야 합니다.
다음 명령을 사용하여 데이터베이스 수준 Pod를 다시 확장합니다.
oc scale dc/{backend-redis,system-memcache,system-mysql,system-redis,zync-database} --replicas=1
oc scale dc/{backend-redis,system-memcache,system-mysql,system-redis,zync-database} --replicas=1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 단계를 진행하기 전에
system-mysql
pod를 통해 외부 MySQL 데이터베이스에 로그인할 수 있는지 확인합니다.oc rsh system-mysql-<system_mysql_pod_id> mysql -u root -p -h <host>
oc rsh system-mysql-<system_mysql_pod_id> mysql -u root -p -h <host>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <system_mysql_pod_id > : system-mysql 포드의 식별자입니다.
사용자는 항상 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
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 Copied! Toggle word wrap Toggle overflow -
<system_mysql_pod_id>를 고유한
system-mysql
Pod ID 로 바꿉니다. 다음 예제와 같이
system-mysql-dump.sql
파일에 유효한 MySQL 수준 덤프가 포함되어 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
<system_mysql_pod_id>를 고유한
system-mysql
pod를 축소하고 0(영) 복제본으로 둡니다.oc scale dc/system-mysql --replicas=0
oc scale dc/system-mysql --replicas=0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 은 URL
mysql2://root:<password>@<host>/system
와 동등한 base64 를 찾아 <password> 및 <host> 를 적절하게 바꿉니다.echo "mysql2://root:<password>@<host>/system" | base64
echo "mysql2://root:<password>@<host>/system" | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원격 MySQL 데이터베이스에 기본 'user'@'%' 를 생성합니다. SELECT 권한만 있으면 됩니다. 또한 동등한 base64를 찾을 수 있습니다.
echo "user" | base64 echo "<password>" | base64
echo "user" | base64 echo "<password>" | base64
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - <password>를 'user'@'%'의 암호로 바꿉니다.
백업을 수행하고 OpenShift 시크릿
system-database
를 편집합니다.oc get secret system-database -o yaml > system-database-orig.bkp.yml oc edit secret system-database
oc get secret system-database -o yaml > system-database-orig.bkp.yml oc edit secret system-database
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - url: [step-8] 의 값으로 바꿉니다.
- DB_USER 및 DB_PASSWORD: 이전 단계의 값을 둘 다 사용합니다.
-
system-mysql-dump.sql
을 원격 데이터베이스 서버로 전송하고 덤프를 가져옵니다. 명령을 사용하여 가져옵니다. 아래 명령을 사용하여
system-mysql-dump.sql
을 원격 데이터베이스 서버에 전송하고 덤프를 서버로 가져옵니다.mysql -u root -p < system-mysql-dump.sql
mysql -u root -p < system-mysql-dump.sql
Copy to Clipboard Copied! Toggle word wrap Toggle overflow system 이라는 새 데이터베이스가 생성되었는지 확인합니다.
mysql -u root -p -se "SHOW DATABASES"
mysql -u root -p -se "SHOW DATABASES"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 모든 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
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 Copied! Toggle word wrap Toggle overflow 이제
system-app
pod가 문제 없이 가동 및 실행되어야 합니다.
-
- 검증 후 표시된 순서대로 다른 포드를 확장합니다.
-
system-mysql
DeploymentConfig 오브젝트를 백업합니다. 모든 것이 제대로 실행되고 있는지 확인한 후 며칠 후에 삭제할 수 있습니다.system-mysql
DeploymentConfig를 삭제하면 향후 이 절차가 다시 수행되는 경우 향후 혼동이 발생하지 않습니다.