このページでは、Ranger クラスタを備えた Dataproc で Ranger スキーマをバックアップおよび復元する方法について説明します。
始める前に
必要に応じてバケットを作成します。Ranger スキーマの保存と復元に使用する Cloud Storage バケットへのアクセス権が必要です。
バケットを作成するには:
- Google Cloud コンソールで、Cloud Storage の [バケット] ページに移動します。
- [バケットを作成] をクリックします。
- [バケットの作成] ページでユーザーのバケット情報を入力します。次のステップに進むには、[続行] をクリックします。
- [作成] をクリックします。
Ranger スキーマをバックアップする
SSH を使用して、Ranger スキーマでクラスタの Dataproc マスターノードに接続します。マスターノードで実行されている SSH ターミナル セッションで、このセクションのコマンドを実行します。
環境変数を設定します。
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 に保存します。
Hive サービスを停止します。
sudo systemctl stop hive-metastore.service sudo systemctl stop hive-server2.service
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;
Ranger スキーマを
.sql
ファイルに保存します。mysqldump -u root -p${MYSQL_PASSWORD} ranger > ${SCHEMA_FILE}.sql
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;
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
Ranger スキーマを Cloud Storage にコピーします。
gsutil cp ${SCHEMA_FILE}.sql gs://${BUCKET_NAME}
Ranger スキーマを復元する
SSH を使用して、クラスタ スキーマを復元するクラスタの Dataproc マスターノードに接続します。マスターノードで実行されている SSH ターミナル セッションで、このセクションのコマンドを実行します。
環境変数を設定します。
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 スキーマ ファイル名。
Hive サービスを停止します。
sudo systemctl stop hive-metastore.service sudo systemctl stop hive-server2.service
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;
Cloud Storage の Ranger スキーマ
.sql
ファイルをクラスタのマスターノードにコピーします。gsutil cp ${BUCKET_NAME}/${SCHEMA_FILE}.sql .
Ranger スキーマを復元します。この手順により、既存の Ranger スキーマの内容が上書きされます。
mysqldump -u root -p${MYSQL_PASSWORD} ranger < ${SCHEMA_FILE}.sql
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;
Ranger 構成ファイルを更新します。次のプロパティを使用して、次のファイルで Ranger DB ホストを新しいデータベースのホスト名に変更します。
File プロパティ ranger-hdfs-security.xml
ranger.plugin.hdfs.policy.rest.url
ranger-yarn-security.xml
ranger.plugin.yarn.policy.rest.url
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