Ranger 스키마 백업 및 복원

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

시작하기 전에

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

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

    1. In the Google Cloud console, go to the Cloud Storage Buckets page.

      Go to Buckets page

    2. Click Create bucket.
    3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
      • For Name your bucket, enter a name that meets the bucket naming requirements.
      • For Choose where to store your data, do the following:
        • Select a Location type option.
        • Select a Location option.
      • For Choose a default storage class for your data, select a storage class.
      • For Choose how to control access to objects, select an Access control option.
      • For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
    4. Click Create.

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에 복사합니다.

    gcloud storage 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 파일을 클러스터 마스터 노드에 복사합니다.

    gcloud storage 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