天天看點

【mysql】資料遷移之Clickhouse備份

作者:星辰有夢一隅得安

【地震高崗,一派西山千古秀】

Clickhouse場景

1.文本檔案導入導出

資料庫裡的資料導出成特定的格式,再導入,這種方式很直接,也很簡單容易了解,但是隻能使用在資料量小的情況下,如果資料量一旦大,這種方式就是災難。

導出:

clickhouse-client --password 12345678 --query="select * from inuser.t_record FORMAT CSV" > record.csv
複制代碼           

導入: 注意FORMAT後面大寫

cat inuser.record.csv | clickhouse-client --port 9008 --password 12345678 --query="INSERT INTO inuser.record FORMAT CSV"
複制代碼           

2.拷貝資料目錄

冷資料恢複,直接拷貝走clickhouse 的資料到另一台機器上,修改下相關配置就可以直接啟動了,仔細的觀察一下 ClickHouse 在檔案系統上的目錄結構(配置檔案 /ect/clickhouse-server/config.xml 裡面配置的 <path>),為了便于檢視,隻保留了 data 和 metadata 目錄。

基于這個資訊,直接把data和metadata目錄(要排除 system 庫)複制到新叢集,即可實作資料遷移

步驟:
1、停止原先的clickhouse資料庫,并打包好 對應資料庫或表的 data 和 metadata 資料
2、拷貝到目标clickhouse資料庫對應的目錄,比如/var/lib/clickhouse 目錄下
3、給clickhouse 賦予權限, 
chown -Rf clickhouse:clickhouse /var/lib/clickhouse/*
chown -Rf clickhouse:clickhouse /var/lib/clickhouse
4、重新開機目标clickhouse資料庫
5、驗證資料 select count(1) form inuser.t_record;
複制代碼           

3.使用第三方工具,clickhouse-backup

clickhouse-backup 是社群開源的一個 ClickHouse 備份工具,可用于實作資料遷移。其原理是先建立一個備份,然後從備份導入資料,類似 MySQL 的 mysqldump + SOURCE。這個工具可以作為正常的異地冷備方案

使用限制:

  1. 支援1.1.54390以上的ClickHouse
  2. 僅MergeTree系清單引擎
  3. 不支援備份Tiered storage或storage_policy
  4. 雲存儲上的最大備份大小為5TB
  5. AWS S3上的parts數最大為10,000

下載下傳clickhouse-backup 軟體包

  • 官方提供了二進制版本和rpm包的方式 github位址: github.com/AlexAkulov/… 下載下傳位址: github.com/AlexAkulov/…
  • 修改clickhouse-backup 配置檔案config.yml 根據clickhouse自身的配置來修改 此配置檔案,比如 clickhouse的資料目錄,資料庫密碼,監控位址及端口

官方的配置說明:

clickhouse-backup 除了備份到本機,此外還支援遠端備份的方式,備份到s3 上【對象存儲】,ftp,sftp 上,還支援 使用 api 接口 通路

  • 檢視clickhouse-backup 相關指令
1、 檢視全部預設的配置項
 clickhouse-backup default-config
2、 檢視可備份的表【已在配置檔案中過濾掉system和default 庫下面的所有表】
 [root@localhost clickhouse-backup]# clickhouse-backup tablesbrdatasets.hits_v1  1.50GiB  default 
3、 建立備份
複制代碼           

全庫備份

clickhouse-backup create 備份存儲在中 $data_path/backup 下,備份名稱預設為時間戳,可手動指定備份名稱

clickhouse-backup create 備份包含兩個目錄:

metadata目錄: 包含重新建立所需的DDL SQL shadow目錄: 包含作為ALTER TABLE ... FREEZE操作結果的資料 單表備份

clickhouse-backup create [-t, --tables=.

] <backup_name> 備份表datasets.hits_v1

clickhouse-backup create -t datasets.hits_v1 備份多個表datasets.hits_v1, datasets.hits_v2

clickhouse-backup create -t datasets.hits_v1,datasets.hits_v2 4、檢視備份記錄

[root@localhost datasets]# clickhouse-backup list 5、删除備份檔案

[root@localhost datasets]# clickhouse-backup delete local 2021-09-06T14-03-23

資料恢複

文法: clickhouse-backup restore 備份名

【門朝大海,三河合水萬年流】

繼續閱讀