概要
remoteSecure()関数を使用して、データを直接 pull/push する方法- クラウドオブジェクトストレージ経由で
BACKUP/RESTOREコマンドを使用する方法
この移行ガイドでは、前提条件BACKUP/RESTOREアプローチに焦点を当て、 オープンソース版 ClickHouse のデータベース、またはサービス全体を S3 バケット経由で ClickHouse Cloud に移行する実践的な例を紹介します。
- Docker がインストールされていること
- S3 バケットと IAM ユーザー を用意していること
- 新しい ClickHouse Cloud サービスを作成できること
クラスターが必要ですこのバックアップ方法では、テーブルを
MergeTree エンジンから ReplicatedMergeTree に変換する必要があるため、ClickHouse クラスターが必要です。
単一インスタンスで実行している場合は、代わりに “Migrating between self-managed ClickHouse and ClickHouse Cloud using remoteSecure” の手順に従ってください。OSS の準備
- examples リポジトリ をローカルマシンにクローンします
- ターミナルで
examples/docker-compose-recipes/recipes/cluster_2S_2Rにcdします - Docker が起動していることを確認してから、ClickHouse クラスターを起動します:
MergeTree テーブルから ReplicatedMergeTree テーブルへ
SharedMergeTree を使用します。
バックアップの復元時に、ClickHouse は ReplicatedMergeTree を使用するテーブルを自動的に SharedMergeTree テーブルへ変換します。
クラスターで実行している場合、テーブルはすでに ReplicatedMergeTree エンジンを使用している可能性が高いです。
そうでない場合は、バックアップを作成する前に、MergeTree テーブルを ReplicatedMergeTree に変換する必要があります。
MergeTree テーブルを ReplicatedMergeTree に変換する方法を示すため、まず MergeTree テーブルを作成し、その後 ReplicatedMergeTree に変換します。
そのために、New York taxi data guide の最初の 2 つの手順に従って、サンプルテーブルを作成し、データをロードします。
便宜上、これらの手順も以下に記載しています。
新しいデータベースを作成し、S3 バケット から新しいテーブルにデータを挿入するには、次のコマンドを実行します。
DETACHします。
ReplicatedMergeTree に変換されていることを確認します:
ReplicatedMergeTree を使った分散テーブル
ReplicatedMergeTree テーブルと、クエリの入口となる Distributed テーブルが必要です。
次のコマンドを実行して、すべてのクラスター ノードにローカルのレプリケートテーブルを作成します:
Distributed テーブルを作成します:
Cloud の準備
1
Cloud Console を開く
https://console.clickhouse.cloud/ にアクセスします2
新しいサービスを作成する
3
サービスを設定して作成する
使用するリージョンと構成を選択し、Create service をクリックします4
アクセスロールを作成する
SQL Console を開きますS3 アクセスを設定する
S3 からバックアップを復元するには、ClickHouse Cloud と S3 バケットの間で安全にアクセスできるよう設定する必要があります。- “Accessing S3 data securely” の手順に従ってアクセスロールを作成し、ロール ARN を取得します。
- “How to create an S3 bucket and IAM role” で作成した S3 バケットポリシーを更新し、前の手順で取得したロール ARN を追加します。
- IAM ユーザー (
docs-s3-user): セルフマネージドの ClickHouse クラスターが S3 にバックアップできるようにします - ClickHouse Cloud ロール (
ClickHouseAccess-001): Cloud サービスが S3 から復元できるようにします
バックアップの作成 (セルフマネージド環境)
BUCKET_URL、KEY_ID、SECRET_KEY は、お使いの AWS 認証情報に置き換えてください。
ガイド「S3 バケットと IAM ロールを作成する方法」
では、まだこれらをお持ちでない場合の取得方法を説明しています。
分片 1:
単一ノード構成分散テーブルを使用していない場合は、1つのコマンドでデータベース全体をバックアップできます。
- すべてのユーザーデータベースとテーブル
- ユーザーアカウントとパスワード
- ロールと権限
- 設定プロファイル
- 行ポリシー
- クォータ
- ユーザー定義関数
TO S3() (AWS と GCP の両方に対応) や TO AzureBlobStorage() の構文を使用できます。
非常に大規模なデータベースの場合は、ASYNC を使用してバックグラウンドでバックアップを実行することも検討してください:
ClickHouse Cloud への復元
ROLE_ARN は
“S3 データへ安全にアクセスする” で取得した
値に設定してください。2 回目以降の復元では SETTINGS allow_non_empty_tables=true を使用し、
競合によって失敗する代わりに、分片データがすでに復元済みのテーブルに追記されるようにします。
分片 1:
非分散デプロイメント分散テーブルを使用していない場合は、1つのコマンドでデータベースを復元できます。
SharedMergeTree を使用しているため、従来の分散テーブルは不要です。削除したうえで、クエリで元のテーブル名をそのまま使えるようにするビューへ置き換えることができます。
ReplicatedMergeTree テーブルは SharedMergeTree として復元されます: