BACKUP および RESTORE コマンドを使用して、ClickHouse のデータを Object Storage Service (OSS) にバックアップし、低コストで長期アーカイブすることができます。 また、これらのコマンドを使用して、セルフマネージド ClickHouse クラスターを ApsaraDB for ClickHouse に移行することもできます。 これらの組み込み ClickHouse SQL コマンドは、データベースやテーブルなどのオブジェクトをバックアップおよび復元します。 この Topic では、BACKUP および RESTORE コマンドの構文と使用例について説明します。
注意事項
Community-compatible Edition と Enterprise Edition のデータベースエンジンとテーブルエンジンには互換性がないため、これらのエディション間でデータをバックアップおよび復元することはできません。
バックアップと回復のプロセス中、クラスターの CPU 使用率が増加します。
backup_threadsやrestore_threadsなどのパラメーターを調整して、リソースの消費を制限できます。メモリ使用量に大きな影響はありません。
前提条件
OSS の場合:
バケットが作成されていること。
ClickHouse に OSS バケットへのアクセス権が付与されていること。詳細については、「バケットポリシーの一般的な例」をご参照ください。
ご利用のリージョンのエンドポイント情報を取得していること。
構文
BACKUP|RESTORE
TABLE [db.]table_name [AS [db.]table_name_in_backup]
[PARTITION[S] partition_expr [,...]] |
DICTIONARY [db.]dictionary_name [AS [db.]name_in_backup] |
DATABASE database_name [AS database_name_in_backup]
[EXCEPT TABLES ...] |
TEMPORARY TABLE table_name [AS table_name_in_backup] |
VIEW view_name [AS view_name_in_backup] |
ALL [EXCEPT {TABLES|DATABASES}...] } [,...]
[ON CLUSTER 'cluster_name']
TO|FROM File('<path>/<filename>') | Disk('<disk_name>', '<path>/') | S3('<S3 endpoint>/<path>', '<Access key ID>', '<Access key Secret>')
[SETTINGS base_backup = File('<path>/<filename>') | Disk(...) | S3('<S3 endpoint>/<path>', '<Access key ID>', '<Access key Secret>')]Community-compatible Edition
BACKUP コマンドと RESTORE コマンドは、インスタンス、データベース、テーブルのバックアップと回復をサポートします。このセクションでは、テーブルを例にバックアッププロセスを説明します。
OSS へのデータのバックアップ
OSS への直接アップロード
BACKUP TABLE default.data ON CLUSTER default TO S3('https://<yourBucketName>.<yourEndpoint>/data/', 'yourAccessKeyID', 'yourAccessKeySecret')ローカルディスクへのバックアップと OSS へのアップロード
ApsaraDB for ClickHouse は、ローカルディスクへのデータバックアップをサポートしていません。
バックアップを構成します。
/etc/clickhouse-server/config.d/backup_disk.xmlファイルを追加して、バックアップ先を指定できます。次の例では、
<storage_configuration>タグでbackupsという名前のカスタムディスクを定義し、物理パスとして/backups/を使用しています。<backups>タグでは、バックアップにbackupsディスクのみを使用でき、バックアップファイルは/backups/フォルダに保存されるように指定しています。<clickhouse> <storage_configuration> <disks> <backups> <type>local</type> <path>/backups/</path> </backups> </disks> </storage_configuration> <backups> <allowed_disk>backups</allowed_disk> <allowed_path>/backups/</allowed_path> </backups> </clickhouse>ローカルディスクにデータをバックアップします。
BACKUP TABLE test.table TO Disk('backups', 'data_1.zip')ossutil を使用してバックアップを OSS にアップロードします。
ossutil cp data_1.zip oss://<yourBucketName>/data/data_1.zip -i <yourAccessKeyID> -k <yourAccessKeySecret> -e <yourEndpoint>
OSS からのデータの復元
-- ZIP ファイルから単一ノードにデータを復元します。
RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')
-- ディレクトリからすべてのノードにデータを復元します。
RESTORE TABLE default.data ON CLUSTER default FROM S3('https://<yourBucketName>.<yourEndpoint>/data/', 'yourAccessKeyID', 'yourAccessKeySecret')Enterprise Edition
OSS へのデータのバックアップ
BACKUP TABLE default.data TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')OSS からのデータの復元
RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')パフォーマンス最適化パラメーター
表示方法
-- ユーザーレベルのパラメーター
SELECT * FROM system.settings WHERE name LIKE '%backup%' OR name LIKE '%restore%';
-- サーバーレベルのパラメーター
SELECT * FROM system.server_settings WHERE name LIKE '%backup%' OR name LIKE '%restore%';パラメーターの説明
backup
パラメータータイプ
パラメーター名
説明
サーバーレベルのパラメーター
backup_threads
再起動が必要です。バックアップのスレッド数を制限します。デフォルトの最大値は 16 です。
max_backup_bandwidth_for_server
再起動が必要です。単一サーバー上のすべてのバックアップの合計帯域幅を制限します。
max_backups_io_thread_pool_size
再起動が必要です。バックアップ I/O 操作のスレッド数を制限します。
max_backups_io_thread_pool_free_size
再起動が必要です。バックアップ I/O 操作のスレッドプール内のアイドルスレッド数を制限します。
ユーザーレベルのパラメーター
max_backup_bandwidth
単一のバックアップジョブの帯域幅を制限します。
restore
パラメータータイプ
パラメーター名
説明
サーバーレベルのパラメーター
restore_threads
再起動が必要です。復元のスレッド数を制限します。デフォルトの最大値は 16 です。
よくある質問
"Not found backup engine S3" エラーを解決するにはどうすればよいですか?
このエラーは、インスタンスが OSS へのデータバックアップをサポートしていない古いバージョンで実行されているために発生します。この問題を解決するには、インスタンスをバージョン 23.8 以降にアップグレードします。セルフマネージド ClickHouse クラスターの場合、データをローカルディスクにバックアップしてから、バックアップを OSS にアップロードできます。
"Using archives with backups on clusters is disabled" エラーを解決するにはどうすればよいですか?
マルチノードデプロイメントのクラスターバックアップは、ZIP アーカイブフォーマットをサポートしていません。次の例に示すように、S3 パスにはフォルダを使用してください。
BACKUP TABLE default.data ON CLUSTER default TO S3('https://<yourBucketName>.<yourEndpoint>/data/', 'yourAccessKeyID', 'yourAccessKeySecret')BACKUP コマンドを実行した後に clickhouse-client と ClickHouse 間の接続が切断された場合はどうすればよいですか?
バックアップタスクはバックグラウンドで実行されるため、接続が切断されても影響はありません。select * from system.backups; コマンドを実行して、バックアップジョブの進捗状況を確認できます。
タスクを非同期で実行するには、ASYNC を BACKUP コマンドに追加します。
BACKUP TABLE default.data ON CLUSTER default TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret') ASYNC;BACKUP および RESTORE コマンドの速度はどのくらいですか?
バックアップと回復プロセスの速度は、CPU、ディスクスループット、ネットワークスループット、および OSS の帯域幅に影響されます。ボトルネックとなっているコンポーネントが実際の速度を決定します。
ApsaraDB for ClickHouse の場合、クラスターのスペックをアップグレードすることで、CPU、ディスクスループット、ネットワークスループットを向上させることができます。
OSS の場合:詳細については、「制限とパフォーマンスメトリック」をご参照ください。
ApsaraDB for ClickHouse でノードを 1 つずつバックアップおよび復元するにはどうすればよいですか?
ノードの IP アドレスをクエリできます。
SELECT * FROM system.clusters;clickhouse-clientを使用してインスタンスノードに直接接続し、必須の `ON CLUSTER default` 設定を無効にすることができます。説明このパラメーター設定は Alibaba Cloud ApsaraDB for ClickHouse にのみ適用されます。自社運用の ClickHouse クラスターにはこのパラメーターを設定しないでください。
set enforce_on_cluster_default_for_ddl = 0;BACKUPコマンドを実行できます。BACKUP TABLE default.data TO S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')RESTOREコマンドを実行できます。RESTORE TABLE default.data FROM S3('https://<yourBucketName>.<yourEndpoint>/data/data_1.zip', 'yourAccessKeyID', 'yourAccessKeySecret')