5.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및zync3scale 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=0Copy to Clipboard Copied! Toggle word wrap Toggle overflow 참고각 단계에 대한 배포 구성은 동시에 축소할 수 있습니다. 예를 들어
apicast-wildcard-router및zync를 함께 축소할 수 있습니다. 그러나 다음 항목을 축소하기 전에 각 단계의 Pod가 종료될 때까지 기다리는 것이 좋습니다. 3scale 인스턴스는 완전히 다시 시작될 때까지 완전히 액세스할 수 없습니다.
-
3scale 2.6 이전 버전의 경우
3scale 프로젝트에서 실행 중인 Pod가 없는지 확인하려면 다음 명령을 사용합니다.
oc get pods -n <3scale_namespace>
oc get pods -n <3scale_namespace>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=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 다음 단계를 진행하기 전에
system-mysqlpod를 통해 외부 MySQL 데이터베이스에 로그인할 수 있는지 확인합니다.oc rsh system-mysql-<system_mysql_pod_id>
$ 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 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
$ oc rsh system-mysql-<system_mysql_pod_id> /bin/bash -c "mysqldump -u root --single-transaction --routines --triggers --all-databases" > system-mysql-dump.sqlCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
<system_mysql_pod_id>를 고유한
system-mysqlPod ID 로 바꿉니다. 다음 예제와 같이
system-mysql-dump.sql파일에 유효한 MySQL 수준 덤프가 포함되어 있는지 확인합니다.Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
<system_mysql_pod_id>를 고유한
system-mysqlpod를 축소하고 0(영) 복제본으로 둡니다.oc scale dc/system-mysql --replicas=0
$ oc scale dc/system-mysql --replicas=0Copy 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" | base64Copy to Clipboard Copied! Toggle word wrap Toggle overflow 원격 MySQL 데이터베이스에 기본 'user'@'%' 를 생성합니다. SELECT 권한만 있으면 됩니다. 또한 동등한 base64를 찾을 수 있습니다.
echo "user" | base64 echo "<password>" | base64
$ echo "user" | base64 $ echo "<password>" | base64Copy 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-databaseCopy 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.sqlCopy 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및zync3scale 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=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 이제
system-apppod가 문제 없이 가동 및 실행되어야 합니다.
-
- 검증 후 표시된 순서대로 다른 포드를 확장합니다.
-
system-mysqlDeploymentConfig 오브젝트를 백업합니다. 모든 것이 제대로 실행되고 있는지 확인한 후 며칠 후에 삭제할 수 있습니다.system-mysqlDeploymentConfig를 삭제하면 향후 이 절차가 다시 수행되는 경우 향후 혼동이 발생하지 않습니다.