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 にコピーします。

    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 ホストを新しいデータベースのホスト名に変更します。

    File プロパティ
    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