BACKUP および RESTORE コマンドを使用すると、UI 経由でのバックアップや復元に加えて、バックアップを各ストレージバケットにエクスポートできます。
このガイドでは、3 つの CSP すべてに対応するコマンドを紹介します。
要件
独自の CSP ストレージバケットにバックアップをエクスポートまたは復元するには、以下の情報が必要です。
- AWS S3 エンドポイント (形式:
s3://<bucket_name>.s3.amazonaws.com/<optional_directory>) 例:s3://testchbackups.s3.amazonaws.com/内訳:testchbackupsは、バックアップのエクスポート先となる S3 バケット名です。backupsは省略可能なサブディレクトリです。
- AWS アクセスキーとシークレット。AWS ロールベース認証もサポートされており、上記セクションで説明したとおり、AWS アクセスキーとシークレットの代わりに使用できます。
- GCS エンドポイント (形式:
https://storage.googleapis.com/<bucket_name>/) - Access HMAC キーと HMAC シークレット。
- Azure ストレージ接続文字列。
- ストレージアカウント内の Azure コンテナー名。
- コンテナー内の Azure ブロブ。
特定のDBのバックアップ / 復元
ここでは、1つのデータベースのバックアップと復元について説明します。 フルバックアップおよび復元コマンドについては、バックアップコマンドの概要を参照してください。
AWS S3
BACKUP DATABASE test_backups
TO S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)ここで uuid は、一連のバックアップを区別するために使用される一意の識別子です。
RESTORE DATABASE test_backups
FROM S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)Google Cloud Storage (GCS)
BACKUP DATABASE test_backups
TO S3(
'https://storage.googleapis.com/<bucket>/<uuid>',
'<hmac-key>',
'<hmac-secret>'
)ここで、uuid はバックアップを識別するための一意の識別子です。
RESTORE DATABASE test_backups
FROM S3(
'https://storage.googleapis.com/<bucket>/<uuid>',
'<hmac-key>',
'<hmac-secret>'
)Azure Blob Storage
BACKUP DATABASE test_backups
TO AzureBlobStorage(
'<AzureBlobStorage endpoint connection string>',
'<container>',
'<blob>/<>'
)ここで、uuid はバックアップを識別するための一意の識別子です。
RESTORE DATABASE test_backups
FROM AzureBlobStorage(
'<AzureBlobStorage endpoint connection string>',
'<container>',
'<blob>/<uuid>'
)サービス全体のバックアップ / 復元
サービス全体をバックアップするには、以下のコマンドを使用します。 このバックアップには、作成済みのエンティティ、設定プロファイル、ロールポリシー、クォータ、関数に関するすべてのユーザーデータとシステムデータが含まれます。 ここでは AWS S3 の例を示します。 GCS および Azure Blob Storage のバックアップを取得する場合も、上記で説明した構文でこれらのコマンドを使用できます。
BACKUP
TABLE system.users,
TABLE system.roles,
TABLE system.settings_profiles,
TABLE system.row_policies,
TABLE system.quotas,
TABLE system.functions,
ALL EXCEPT DATABASES INFORMATION_SCHEMA, information_schema, system
TO S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)ここで、uuid はバックアップを識別するための一意の識別子です。
RESTORE ALL
FROM S3(
'https://testchbackups.s3.amazonaws.com/<uuid>',
'<key id>',
'<key secret>'
)
SETTINGS restore_access_entities_with_current_grants = 1restore_access_entities_with_current_grants 設定は、ClickHouse Cloud バージョン 26.4 (ビルド 26.4.1.1942 以降) から利用できます。
サービスで実行中のバージョンは、以下で確認できます。
SELECT version()restore_access_entities_with_current_grants を有効にすると、復元されたユーザーとロールに付与される権限は、復元を実行するユーザーが付与できる権限に制限されます
(GRANT CURRENT GRANTS と同じセマンティクス) 。これにより、バックアップに復元を実行するユーザーが付与できる権限を超える権限が含まれていても、RESTORE が ACCESS_DENIED で失敗することはありません。
26.4 より前のバージョンでは、この設定を省略してください。
よくある質問
自分のクラウドオブジェクトストレージ内のバックアップはどうなりますか? ClickHouse が後でクリーンアップしてくれますか?
バックアップをお使いのバケットにエクスポートすることはできますが、一度書き込まれたバックアップを ClickHouse がクリーンアップまたは削除することはありません。バケット内のバックアップのライフサイクル管理 (必要に応じた削除やアーカイブ、あるいは全体のコストを最適化するためのより低コストなストレージへの移動を含む) は、お客様の責任となります。
既存のバックアップの一部を別の場所に移動した場合、復元プロセスはどうなりますか?
バックアップの一部を別の場所に移動した場合は、バックアップの保存先である新しい場所を参照するように restore コマンドを更新する必要があります。
オブジェクトストレージへのアクセスに必要な認証情報を変更した場合はどうなりますか?
バックアップを再び正常に実行できるようにするには、変更後の認証情報を UI で更新する必要があります。
外部バックアップのエクスポート先を変更した場合はどうなりますか?
新しい保存先を UI で更新する必要があります。以後のバックアップは新しい保存先に作成され、既存のバックアップは元の場所に残ります。
有効にしたサービスで外部バックアップを無効にするにはどうすればよいですか?
サービスの外部バックアップを無効にするには、サービスの設定画面に移動し、[Change external backup] をクリックします。次の画面で [Remove setup] をクリックすると、そのサービスの外部バックアップを無効にできます。