このページでは、Ranger クラスタを備えた Dataproc で Ranger スキーマをバックアップおよび復元する方法について説明します。
始める前に
必要に応じてバケットを作成します。Ranger スキーマの保存と復元に使用する Cloud Storage バケットへのアクセス権が必要です。
バケットを作成するには:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- 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.
- Click Create.
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