データのバックアップと復元
このトピックでは、StarRocks でデータをバックアップおよび復元する方法、またはデータを新しい StarRocks クラスターに移行する方法 について説明します。
StarRocks は、データをスナップショットとしてリモートストレージシステムにバックアップし、任意の StarRocks クラスターにデータを復元することをサポートしています。
バージョン 3.4.0 以降、StarRocks はより多くのオブジェクトをサポートし、構文をリファクタリングして柔軟性を向上させることで、BACKUP および RESTORE の機能を強化しました。
StarRocks は、次のリモートストレージシステムをサポートしています。
- Apache™ Hadoop® (HDFS) クラスター
- AWS S3
- Google GCS
- MinIO
StarRocks は、次のオブジェクトのバックアップをサポートしています。
- 内部データベース、テーブル(すべてのタイプとパーティショニング戦略)、およびパーティション
- 外部カタログのメタデータ(バージョン 3.4.0 以降でサポート)
- 同期マテリアライズドビューおよび非同期マテリアライズドビュー
- ビュー(バージョン 3.4.0 以降でサポート)
- ユーザー定義関数(バージョン 3.4.0 以降でサポート)
NOTE
共有データ StarRocks クラスターは、データの BACKUP および RESTORE をサポートしていません。
リポジトリの作成
データをバックアップする前に、リモートストレージシステムにデータスナップショットを保存するためのリポジトリを作成する必要があります。StarRocks クラスター内に複数のリポジトリを作成できます。詳細な手順については、CREATE REPOSITORY を参照してください。
- HDFS にリポジトリを作成
次の例では、test_repo という名前のリポジトリを HDFS クラスターに作成します。
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を指定しないでください。
- MinIO にリポジトリを作成
次の例では、MinIO バケット bucket_minio に test_repo という名前のリポジト リを作成します。
CREATE REPOSITORY test_repo
WITH BROKER
ON LOCATION "s3://bucket_minio/backup"
PROPERTIES(
"aws.s3.access_key" = "XXXXXXXXXXXXXXXXX",
"aws.s3.secret_key" = "yyyyyyyyyyyyyyyyy",
"aws.s3.endpoint" = "http://minio:9000"
);
リポジトリが作成された後、SHOW REPOSITORIES を使用してリポジトリを確認できます。データを復元した後、StarRocks で DROP REPOSITORY を使用してリポジトリを削除できます。ただし、リモートストレージシステムにバックアップされたデータスナップショットは、StarRocks を通じて削除することはできません。リモートストレージシステムで手動で削除する必要があります。
データのバックアップ
リポジトリが作成された後、データスナップショットを作成し、リモートリポジトリにバックアップする必要があります。詳細な手 順については、BACKUP を参照してください。BACKUP は非同期操作です。SHOW BACKUP を使用して BACKUP ジョブのステータスを確認したり、CANCEL BACKUP を使用して BACKUP ジョブをキャンセルしたりできます。
StarRocks は、データベース、テーブル、またはパーティションの粒度レベルでの完全バックアップをサポートしています。
テーブルに大量のデータを保存している場合は、パーティションごとにデータをバックアップおよび復元することをお勧めします。これにより、ジョブの失敗時の再試行コストを削減できます。定期的に増分データをバックアップする必要がある場合は、テーブルにパーティショニングプランを設定し、新しいパーティションのみを毎回バックアップできます。
データベースのバックアップ
データベースに対して完全な BACKUP を実行すると、データベース内のすべてのテーブル、同期および非同期マテリアライズドビュー、ビュー、および UDF がバックアップされます。
次の例では、スナップショット sr_hub_backup にデータベース sr_hub をバックアップし、リポ ジトリ test_repo にスナップショットをアップロードします。
-- バージョン 3.4.0 以降でサポート。
BACKUP DATABASE sr_hub SNAPSHOT sr_hub_backup
TO test_repo;
-- 以前のバージョンの構文と互換性があります。
BACKUP SNAPSHOT sr_hub.sr_hub_backup
TO test_repo;
テーブルのバックアップ
StarRocks は、すべてのタイプとパーティショニング戦略のテーブルのバックアップと復元をサポートしています。テーブルに対して完全な BACKUP を実行すると、そのテーブルとその上に構築された同期マテリアライズドビューがバックアップされます。
次の例では、スナップショット sr_member_backup にデータベース sr_hub のテーブル sr_member をバックアップし、リポジトリ test_repo にスナップショットをアップロードします。
-- バージョン 3.4.0 以降でサポート。
BACKUP DATABASE sr_hub SNAPSHOT sr_member_backup
TO test_repo
ON (TABLE sr_member);
-- 以前のバージョンの構文と互換性があります。
BACKUP SNAPSHOT sr_hub.sr_member_backup
TO test_repo
ON (sr_member);
次の例では、スナップショット sr_core_backup にデータベース sr_hub のテーブル sr_member と sr_pmc をバックアップし、リポジトリ test_repo にスナップショットをアップロードします。
BACKUP DATABASE sr_hub SNAPSHOT sr_core_backup
TO test_repo
ON (TABLE sr_member, TABLE sr_pmc);
次の例では、スナップショット sr_all_backup にデータベース sr_hub のすべてのテーブルをバックアップし、リポジトリ test_repo にスナップショットをアップロードします。
BACKUP DATABASE sr_hub SNAPSHOT sr_all_backup
TO test_repo
ON (ALL TABLES);