Ranger 스키마 백업 및 복원

이 페이지에서는 Ranger 클러스터의 Dataproc에서 Ranger 스키마를 백업하고 복원하는 방법을 보여줍니다.

시작하기 전에

  1. 필요한 경우 버킷을 만듭니다. Ranger 스키마를 저장하고 복원하는 데 사용할 Cloud Storage 버킷에 대한 액세스 권한이 있어야 합니다.

    버킷을 만드는 방법은 다음과 같습니다.

    1. Google Cloud Console에서 Cloud Storage 버킷 페이지로 이동합니다.

      버킷 페이지로 이동

    2. 버킷 만들기를 클릭합니다.
    3. 버킷 만들기 페이지에서 버킷 정보를 입력합니다. 다음 단계로 이동하려면 계속을 클릭합니다.
      • 버킷 이름 지정에서 버킷 이름 지정 요구사항을 충족하는 이름을 입력합니다.
      • 데이터를 저장할 위치 선택에서 다음을 수행합니다.
        • 위치 유형 옵션을 선택합니다.
        • 위치 옵션을 선택합니다.
      • 데이터의 기본 스토리지 클래스 선택에서 스토리지 클래스를 선택합니다.
      • 객체 액세스를 제어하는 방식 선택에서 액세스 제어 옵션을 선택합니다.
      • 고급 설정(선택사항)에서 암호화 방법, 보관 정책 또는 버킷 라벨을 지정합니다.
    4. 만들기를 클릭합니다.

Ranger 스키마 백업

  1. SSH를 사용하여 Ranger 스키마로 클러스터의 Dataproc 마스터 노드에 연결합니다. 마스터 노드에서 실행되는 SSH 터미널 세션에서 이 섹션의 명령어를 실행합니다.

  2. 환경 변수를 설정합니다.

    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에 저장됩니다 .

  3. Hive 서비스를 중지합니다.

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. 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;
    
  5. Ranger 스키마를 .sql 파일에 저장합니다.

    mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql
    
  6. 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;
    
  7. 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
    
  8. Ranger 스키마를 Cloud Storage에 복사합니다.

    gsutil cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
    

Ranger 스키마 복원

  1. SSH를 사용하여 클러스터 스키마를 복원할 클러스터의 Dataproc 마스터 노드에 연결합니다. 마스터 노드에서 실행되는 SSH 터미널 세션에서 이 섹션의 명령어를 실행합니다.

  2. 환경 변수를 설정합니다.

    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 스키마 파일의 이름입니다.

  3. Hive 서비스를 중지합니다.

    sudo systemctl stop hive-metastore.service
    sudo systemctl stop hive-server2.service
    

  4. 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;
    
  5. Cloud Storage의 Ranger 스키마 .sql 파일을 클러스터 마스터 노드에 복사합니다.

    gsutil cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .
    
  6. Ranger 스키마를 복원합니다. 이 단계는 기존 Ranger 스키마의 콘텐츠를 덮어씁니다.

    mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql
    
  7. 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;
    
  8. Ranger 구성 파일을 업데이트합니다. 다음 파일에서 다음 속성으로 Ranger DB 호스트를 새 데이터베이스 호스트 이름으로 변경합니다.

    파일 속성
    ranger-hdfs-security.xml ranger.plugin.hdfs.policy.rest.url
    ranger-yarn-security.xml ranger.plugin.yarn.policy.rest.url
  9. 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