Ranger スキーマのバックアップと復元

このページでは、Ranger クラスタを備えた Dataproc で Ranger スキーマをバックアップおよび復元する方法について説明します。

始める前に

  1. 必要に応じてバケットを作成します。Ranger スキーマの保存と復元に使用する Cloud Storage バケットへのアクセス権が必要です。

    バケットを作成するには:

    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: 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