データのバックアップとリストア
このトピックでは、StarRocksでデータをバックアップおよびリストアする方法、またはデータを新しいStarRocksクラスターに移行する方法について説明します。
StarRocksは、データをスナップショットとしてリモートストレージシステムにバックアップし、任意のStarRocksクラスターにデータをリストアすることをサポートしています。
StarRocksは以下のリモートストレージシステムをサポートしています:
- Apache™ Hadoop® (HDFS) クラスター
- AWS S3
- Google GCS
NOTE
共有データStarRocksクラスターは、データのBACKUPおよびRESTOREをサポートしていません。
データのバックアップ
StarRocksは、データベース、テーブル、またはパーティションの粒度レベルでの完全バックアップをサポートしています。
テーブルに大量のデータを保存している場合は、パーティションごとにデータをバックアップおよびリストアすることをお勧めします。これにより、ジョブの失敗時のリトライコストを削減できます。定期的に増分データをバックアップする必要がある場合は、テーブルに対して動的パーティション化プランを策定し、毎回新しいパーティションのみをバックアップすることができます。
リポジトリの作成
データをバックアップする前に、リモートストレージシステムにデータスナップショットを保存するためのリポジトリを作成する必要があります。StarRocksクラスター内に複数のリポジトリを作成できます。詳細な手順については、CREATE REPOSITORYを参照してください。
- HDFSでのリポジトリの作成
以下の例は、HDFSクラスターにtest_repoという名前のリポジトリを作成します。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "hdfs://<hdfs_host>:<hdfs_port>/repo_dir/backup"
PROPERTIES(
"username" = "<hdfs_username>",
"password" = "<hdfs_password>"
);
-
AWS S3でのリポジトリの作成
AWS S3にアクセスするための認証方法として、IAMユーザーベースのクレデンシャル(アクセスキーとシークレットキー)、インスタンスプロファイル、またはアサームドロールを選択できます。
- 以下の例は、IAMユーザーベースのクレデンシャルを認証方法として使用して、AWS S3バケット
bucket_s3にtest_repoという名前のリポジトリを作成します。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
"aws.s3.secret_key" = "yyyyyyyyyyyyyyyyyyyyyyyy",
"aws.s3.region" = "us-east-1"
);- 以下の例は、インスタンスプロファイルを認証方法として使用して、AWS S3バケット
bucket_s3にtest_repoという名前のリポジトリを作成します。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.use_instance_profile" = "true",
"aws.s3.region" = "us-east-1"
);- 以下の例は、アサームドロールを認証方法として使用して、AWS S3バケット
bucket_s3にtest_repoという名前のリポジトリを作成します。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_s3/backup"
PROPERTIES(
"aws.s3.use_instance_profile" = "true",
"aws.s3.iam_role_arn" = "arn:aws:iam::xxxxxxxxxx:role/yyyyyyyy",
"aws.s3.region" = "us-east-1"
); - 以下の例は、IAMユーザーベースのクレデンシャルを認証方法として使用して、AWS S3バケット
NOTE
StarRocksは、S3Aプロトコルに従ってのみAWS S3でのリポジトリ作成をサポートしています。したがって、AWS S3でリポジトリを作成する際には、
ON LOCATIONでリポジトリの場所として渡すS3 URIのs3://をs3a://に置き換える必要があります。
- Google GCSでのリポジトリの作成
以下の例は、Google GCSバケットbucket_gcsにtest_repoという名前のリポジトリを作成します。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3a://bucket_gcs/backup"
PROPERTIES(
"fs.s3a.access.key" = "xxxxxxxxxxxxxxxxxxxx",
"fs.s3a.secret.key" = "yyyyyyyyyyyyyyyyyyyy",
"fs.s3a.endpoint" = "storage.googleapis.com"
);
NOTE
- StarRocksは、S3Aプロトコルに従ってのみGoogle GCSでのリポジトリ作成をサポートしています。したがって、Google GCSでリポジトリを作成する際には、
ON LOCATIONでリポジトリの場所として渡すGCS URIのプレフィックスをs3a://に置き換える必要があります。- エンドポイントアドレスに
httpsを指定しないでください。
リポジトリが作成された後、SHOW REPOSITORIESを使用してリポジトリを確認できます。データをリストアした後、DROP REPOSITORYを使用してStarRocks内のリポジトリを削除できます。ただし、リモートストレージシステムにバックアップされたデータスナップショットはStarRocksを通じて削除することはできません。リモートストレージシステム内で手動で削除する必要があります。