备份和恢复 Ranger 架构

本页面介绍如何在使用 Ranger 集群的 Dataproc 上备份和恢复 Ranger 架构

准备工作

  1. 根据需要创建存储桶。您必须有权访问 Cloud Storage 存储桶,该存储分区将用来存储和恢复 Ranger 架构。

    要创建存储桶,请按以下步骤操作:

    1. 在 Google Cloud 控制台中,进入 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:Ranger 架构文件名(不带 .sql 文件扩展名),保存在 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. 将 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