【Clickhouseのバックアップとリストア指南】Clickhouse-Backupを使ったバックアップ・リストア方法

mieruka.link読者の皆様、こんにちは。ハイボール系ITエンジニアの伊集院です。

*このネタが分からない人は、YoutubeでNOBU塾を検索。

さて本日のトピックは、Clickhouseのお話です。

Clickhouseとは?ですが、MySQLやPostgresSQLが行指向なリレーショナルデーターベースに対して、列指向のリレーショナルデーターベースで、OLAPシナリオ(データベースからデータを取り出し、多次元的な分析を行う処理のことをいう)を高速に処理できるデーターベースとのことです。

実際に、Clickhouse本系のサイトにいくと、OLAPシナリオで他のデーターベースとどれくらい速度の差があるか?を記載している一覧があります。

今後、筆者も積極的にClickhouseを使っていこうと思い勉強していたのですが、分析対象のデーターベースのバックアップリストアをしようと調べていたところ、多少分かり辛い部分や嵌った部分がありましたので本記事で紹介します。

今のところ主要なバックアップ・リストア方法は、2パターン

Clickhouseをインストールすると、clickhouse-clientも同時にインストールされます。

こちらのコマンドを使った、バックアップリストアがありますが正直面倒です。

よって、有志の方が作ってくれているClickhouse-backupをインストールして使うことにしました。

ダウンロードは、こちらからお願いします。

筆者の環境は、Ubuntu18.04ですのでdebパッケージをダウンロードしてインストールしました。

$sudo wget https://github.com/AlexAkulov/clickhouse-backup/releases/download/1.3.0/clickhouse-backup_1.3.0_amd64.deb
$sudo dpkg -i clickhouse-backup_1.3.0_amd64.deb

ここで海外のサイトを参考にバックアップ、リストアを学ぼうと考えました。

参考にしたサイトは、Backup and restore with clickhouse-backupです。

こちらでは、試験的にbackupデーターベースを作成し、そこにtestテーブルを作成。

レコードを4行追加してデーターベースをDROP、その後リストアしようといったものでした。

なんだ~簡単じゃ!と思い手順通りに行いましたが、以下のエラーがでてリストアできません。

# clickhouse-backup restore 2022-02-12T05-19-33
2022/02/12 14:24:53.152581 error can't create table `backup`.`test`: code: 57, message: Directory for table data store/089/089e1f48-6410-4965-8a8a-0707c9bb896b/ already exists after 1 times, please check your schema dependencies

直訳するとディレクトリは既に存在するぞ!スキーマーの関係を見直せ!と怒られています。

解決方法が分からずインターネットを徘徊すると、中国のサイトで同じ事象に嵌り問題解決方法を掲載してくれている方がおりました。

そちらのサイトが、Clickhouse备份与恢复+异机远程备份脚本です。

中国語は全く分かりませんが、本記事に以下の記載があります。

备份文件中  ${backup_path}/2021-08-21T06-35-10/metadata/default/t.json 中的UUID  UUID ’80ea6411-9c37-4d47-80ea-64119c374d47′  再次执行恢复  clickhouse-backup restore 2021-08-21T06-35-10 -s -d –rm 

引用: Clickhouse备份与恢复+异机远程备份脚本

jsonのUUIDを消して、再実行すれば問題解決のようです。

実際に筆者の環境でもUUID部分を消したら無事リストアができました。

Clickhouse-Backupを使った、Clickhouseバックアップ・リストアの手順

1. バックアップの実行

# clickhouse-backup create
2022/02/12 15:17:34.055248  info done                      backup=2022-02-12T06-17-33 operation=create table=backup.test
2022/02/12 15:17:34.073125  info done                      backup=2022-02-12T06-17-33 duration=563ms operation=create

2. バックアップファイルの確認

# clickhouse-backup list
2022-02-12T05-19-33   2.74KiB   12/02/2022 05:19:33   local
2022-02-12T06-17-33   2.74KiB   12/02/2022 06:17:34   local

3. jsonファイル、UUID記述の削除

#cd /var/lib/clickhouse/backup/2022-02-12T06-17-33/metadata/backup
#vi test.json ※太字部分を削除
 "query": "CREATE TABLE backup.test UUID '5a28cd8f-53b7-47fc-8fa0-cf0216edfa11' (`date` DateTime, `user_id` String, `pageviews` Int32) ENGINE = MergeTree PARTITION BY toStartOfHour(date) ORDER BY date SETTINGS index_granularity = 8192",

4. リストア実行

#clickhouse-backup restore 2022-02-12T06-17-33 -s -d --rm

以上です。

お疲れさまでした。

(Visited 224 times, 1 visits today)
The following two tabs change content below.
【好きなもの】 インフラ技術が好き。古いものが好き。 【生きてきたフィールド】 システム運用、ソフトウェア開発、ミドルウェア検証、OSSサポート、プリセールスエンジニア、プロジェクトマネジメント 【このサイトでの役割】 サイト管理者。