30.3. 데이터베이스 백업 및 복원
oc rsync
를 사용하여 기존 데이터베이스 컨테이너의 영구 볼륨 디렉터리로 데이터베이스 아카이브를 복사합니다.
MySQL은 아래 예제에서 사용됩니다. mysql|MYSQL
을 pgsql|PGSQL
또는 mongodb|
hieraGODB로 바꾸고 지원되는 각 데이터베이스 이미지에 대한 정확한 명령을 찾으려면 마이그레이션 가이드 를 참조하십시오. 예에서는 기존 데이터베이스 컨테이너를 가정합니다.
실행 중인 데이터베이스 Pod에서 기존 데이터베이스를 백업합니다.
$ oc rsh <existing db container> # mkdir /var/lib/mysql/data/db_archive_dir # mysqldump --skip-lock-tables -h ${MYSQL_SERVICE_HOST} -P ${MYSQL_SERVICE_PORT:-3306} \ -u ${MYSQL_USER} --password="$MYSQL_PASSWORD" --all-databases > /var/lib/mysql/data/db_archive_dir/all.sql # exit
아카이브 파일을 로컬 머신에 원격 동기화합니다.
$ oc rsync <existing db container with db archive>:/var/lib/mysql/data/db_archive_dir /tmp/.
위에서 만든 데이터베이스 아카이브 파일을 로드할 두 번째 MySQL 포드를 시작합니다. MySQL 포드에는 고유한 NFR
_SERVICE_NAME
이 있어야 합니다.$ oc new-app mysql-persistent \ -p MYSQL_USER=<archived mysql username> \ -p MYSQL_PASSWORD=<archived mysql password> \ -p MYSQL_DATABASE=<archived database name> \ -p DATABASE_SERVICE_NAME='mysql2' 1 $ oc rsync /tmp/db_archive_dir new_dbpod1234:/var/lib/mysql/data $ oc rsh new_dbpod1234
- 1
MySQL
이 기본값입니다. 이 예제에서는mysql2
가 생성됩니다.
적절한 명령을 사용하여 복사된 데이터베이스 아카이브 디렉터리에서 새 데이터베이스 컨테이너의 데이터베이스를 복원합니다.
MySQL
$ cd /var/lib/mysql/data/db_archive_dir $ mysql -u root $ source all.sql $ GRANT ALL PRIVILEGES ON <dbname>.* TO '<your username>'@'localhost'; FLUSH PRIVILEGES; $ cd ../; rm -rf /var/lib/mysql/data/db_backup_dir
이제 보관 데이터베이스를 사용하여 프로젝트에 두 개의 MySQL 데이터베이스 포드가 실행됩니다.