이 페이지에서는 Ranger 클러스터의 Dataproc에서 Ranger 스키마를 백업하고 복원하는 방법을 보여줍니다.
시작하기 전에
필요하면 버킷을 만듭니다. Ranger 스키마를 저장하고 복원하는 데 사용할 Cloud Storage 버킷에 대한 액세스 권한이 있어야 합니다.
버킷을 만드는 방법은 다음과 같습니다.
- Google Cloud Console에서 Cloud Storage 버킷 페이지로 이동합니다.
- 버킷 만들기를 클릭합니다.
- 버킷 만들기 페이지에서 버킷 정보를 입력합니다. 다음 단계로 이동하려면 계속을 클릭합니다.
- 버킷 이름 지정에서 버킷 이름 지정 요구사항을 충족하는 이름을 입력합니다.
-
데이터를 저장할 위치 선택에서 다음을 수행합니다.
- 위치 유형 옵션을 선택합니다.
- 위치 옵션을 선택합니다.
- 데이터의 기본 스토리지 클래스 선택에서 스토리지 클래스를 선택합니다.
- 객체 액세스를 제어하는 방식 선택에서 액세스 제어 옵션을 선택합니다.
- 고급 설정(선택사항)에서 암호화 방법, 보관 정책 또는 버킷 라벨을 지정합니다.
- 만들기를 클릭합니다.
Ranger 스키마 백업
SSH를 사용하여 Ranger 스키마가 있는 클러스터의 Dataproc 마스터 노드에 연결합니다. 마스터 노드에서 실행되는 SSH 터미널 세션에서 이 섹션의 명령어를 실행합니다.
환경 변수를 설정합니다.
BUCKET_NAME=bucket name \ MYSQL_PASSWORD=MySQL password SCHEMA_FILE=schema filename
다음을 바꿉니다.
MySQL password: 클러스터 마스터 노드에서
/etc/mysql/my.cnf
를 열어 MySQL 비밀번호를 복사할 수 있습니다.bucket name: Ranger 스키마를 저장하는 데 사용할 Cloud Storage 버킷의 이름입니다.
schema filename:
.sql
파일 이름 확장자 없이 파일 이름을 지정합니다. Ranger 스키마는 마스터 노드에서 이 파일에 저장된 다음, Cloud Storage의 bucket name에 저장됩니다.
Hive 서비스를 중지합니다.
sudo systemctl stop hive-metastore.service sudo systemctl stop hive-server2.service
Ranger 스키마 테이블 변경을 방지합니다.
mysql -u root -p${MYSQL_PASSWORD} REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost'; GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'rangeradmin'@'localhost'; exit;
Ranger 스키마를
.sql
파일에 저장합니다.mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql
Ranger 권한을 재설정합니다.
mysql -u root -p${MYSQL_PASSWORD} REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost'; GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'rangeradmin'@'localhost'; exit;
Hive 및 Ranger 서비스를 다시 시작합니다.
sudo systemctl start hive-metastore.service sudo systemctl start hive-server2.service sudo systemctl restart ranger-admin.service sudo systemctl restart ranger-usersync.service
Ranger 스키마를 Cloud Storage에 복사합니다.
gcloud storage cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
Ranger 스키마 복원
SSH를 사용하여 클러스터 스키마를 복원할 클러스터의 Dataproc 마스터 노드에 연결합니다. 마스터 노드에서 실행되는 SSH 터미널 세션에서 이 섹션의 명령어를 실행합니다.
환경 변수를 설정합니다.
BUCKET_NAME=bucket name \ MYSQL_PASSWORD=MySQL password SCHEMA_FILE=schema filename
다음을 바꿉니다.
MySQL password: 클러스터 마스터 노드에서
/etc/mysql/my.cnf
를 열어 MySQL 비밀번호를 복사할 수 있습니다.bucket name: 저장된 Ranger 스키마가 포함된 Cloud Storage 버킷의 이름입니다.
schema filename: Cloud Storage의 bucket name에 저장된
.sql
파일 이름 확장자가 없는 Ranger 스키마 파일 이름의 이름입니다.
Hive 서비스를 중지합니다.
sudo systemctl stop hive-metastore.service sudo systemctl stop hive-server2.service
Ranger 스키마 테이블 변경을 방지합니다.
mysql -u root -p${MYSQL_PASSWORD} REVOKE ALL PRIVILEGES ON ranger.* from 'rangeradmin'@'localhost'; GRANT SELECT ON ranger.* TO 'rangeradmin'@'localhost'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'rangeradmin'@'localhost'; exit;
Cloud Storage의 Ranger 스키마
.sql
파일을 클러스터 마스터 노드에 복사합니다.gcloud storage cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .
Ranger 스키마를 복원합니다. 이 단계는 기존 Ranger 스키마의 콘텐츠를 덮어씁니다.
mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql
Ranger 권한을 재설정합니다.
mysql -u root -p${MYSQL_PASSWORD} REVOKE SELECT ON ranger.* from 'rangeradmin'@'localhost'; GRANT ALL PRIVILEGES ON ranger.* to 'rangeradmin'@'localhost'; FLUSH PRIVILEGES; SHOW GRANTS FOR 'rangeradmin'@'localhost'; exit;
Ranger 구성 파일을 업데이트합니다. 다음 파일에서 다음 속성으로 Ranger DB 호스트를 새 데이터베이스 호스트 이름으로 변경합니다.
파일 속성 ranger-hdfs-security.xml
ranger.plugin.hdfs.policy.rest.url
ranger-yarn-security.xml
ranger.plugin.yarn.policy.rest.url
Hive 및 Ranger 서비스를 다시 시작합니다.
sudo systemctl start hive-metastore.service sudo systemctl start hive-server2.service sudo systemctl restart ranger-admin.service sudo systemctl restart ranger-usersync.service