このセクションでは、ClickHouse におけるバックアップと復元の概要を説明します。各バックアップ方法のより 詳細な説明については、サイドバーにある各方法のページを参照してください。
はじめに
MergeTree ファミリーのエンジンを使用するテーブルを
そのまま削除することはできません。とはいえ、こうした安全策ですべてのケースを
カバーできるわけではなく、問題が発生する可能性は残ります。
想定される人的ミスを効果的に軽減するには、
データのバックアップと復元のための戦略をあらかじめ慎重に準備しておく必要があります。
利用できるリソースや業務要件は会社ごとに異なるため、
あらゆる状況に適した ClickHouse のバックアップと復元の万能な解決策は
存在しません。1 ギガバイトのデータに有効な方法が、数十
PB のデータには通用しない可能性があります。考えられるアプローチにはそれぞれ長所と短所が
あり、このドキュメントのこのセクションで紹介しています。さまざまな
欠点を補うために、1 つだけでなく複数のアプローチを併用することをお勧めします。
何かをバックアップしても、一度も復元を試したことがない場合、
実際に必要になったときに復元が正しく動作しない可能性があります (少なくとも、
業務で許容できるよりも長い時間がかかるでしょう) 。したがって、どのバックアップ
アプローチを選ぶ場合でも、復元プロセスも自動化し、定期的に予備の
ClickHouse クラスターで復元手順を検証してください。
バックアップは次のように分類できます。
- フルまたは増分
- 同期または非同期
- 同時実行または非同時実行
- 圧縮または非圧縮
- named collections を使用
- パスワードで保護
- システムテーブル、ログテーブル、または アクセス管理テーブル のバックアップを取得
バックアップの種類
- フルバックアップ: 小規模なデータベースや重要なデータ向け。
- 増分バックアップ: 大規模なデータベース向け、またはバックアップを高頻度かつコスト効率よく実行する必要がある場合。
- 両方: たとえば、毎週フルバックアップを実行し、毎日増分バックアップを実行します。
同期バックアップと非同期バックアップ
BACKUP コマンドと RESTORE コマンドには、ASYNC を指定することもできます。この場合、
バックアップコマンドはすぐに制御を返し、バックアップ処理はバックグラウンドで実行されます。
コマンドに ASYNC を指定しない場合、バックアップ処理は同期的に実行され、
バックアップが完了するまでコマンドは待機します。
同時実行バックアップと非同時実行バックアップ
圧縮バックアップと非圧縮バックアップ
compression_method および compression_level 設定により圧縮を利用できます。
バックアップの作成時には、以下を指定できます。
named collections の使用
- 管理者アクセス権のないユーザーに認証情報を見せない
- 複雑な構成を一元管理して、コマンドを簡素化する
- 操作間の一貫性を保つ
- クエリログに認証情報が露出するのを防ぐ
システム、ログ、またはアクセス管理テーブルのバックアップ
_log 接尾辞を持つもの (たとえば
query_log、part_log) など、履歴データを格納するシステムテーブルは、
他のテーブルと同様にバックアップおよび復元できます。
ユースケース上、履歴データの分析が必要な場合、たとえば query_log を使って
クエリのパフォーマンスを追跡したり問題をデバッグしたりする場合は、これらの
テーブルをバックアップ戦略に含めることを推奨します。ただし、これらのテーブルの履歴データが
不要であれば、バックアップの保存容量を節約するために除外できます。
users、ロール、row_policies、
settings_profiles、quotas などのアクセス管理に関連するシステムテーブルは、バックアップおよび復元操作時に
特別な扱いを受けます。
これらのテーブルがバックアップに含まれると、その内容は特別な
accessXX.txt ファイルにエクスポートされ、このファイルにはアクセスエンティティの作成と
設定に対応する SQL ステートメントがまとめられます。復元時には、復元処理が
これらのファイルを解釈し、SQL コマンドを再適用して users、
ロール、その他の設定を再作成します。この機能により、
ClickHouse クラスターのアクセス制御設定を、
クラスター全体の構成の一部としてバックアップおよび復元できます。
この機能は、SQL コマンドで管理される構成に対してのみ動作します
(“SQL-driven Access Control and Account Management” と呼ばれます) 。
ClickHouse server の設定ファイル (例: users.xml) で定義されたアクセス設定は
バックアップに含まれず、この方法では復元できません。
基本構文
コマンド概要
設定
S3固有の設定
Azure固有の設定
管理とトラブルシューティング
id と status を返し、その id を使って
バックアップのステータスを取得できます。これは、長時間かかる
ASYNC バックアップの進行状況を確認する際に非常に便利です。以下の例は、
既存のバックアップファイルを上書きしようとしたときに発生したエラーを示しています。
system.backups テーブルに加え、すべてのバックアップおよび復元操作は、システムログテーブル
system.backup_log にも記録されます: