自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Clickhouse備份與恢復(fù)+異機(jī)遠(yuǎn)程備份腳本

數(shù)據(jù)庫 其他數(shù)據(jù)庫
Clickhouse 的數(shù)據(jù)備份有多種方式,其官方網(wǎng)站上就提供了多種備份方式可以參考,但是不同公司有不同的可用資源和業(yè)務(wù)需求,因此不存在一個(gè)通用的解決方案可以應(yīng)對各種情況下的ClickHouse備份和恢復(fù)。

[[422996]]

Clickhouse 的數(shù)據(jù)備份有多種方式,其官方網(wǎng)站上就提供了多種備份方式可以參考,但是不同公司有不同的可用資源和業(yè)務(wù)需求,因此不存在一個(gè)通用的解決方案可以應(yīng)對各種情況下的ClickHouse備份和恢復(fù)。 適用于 1GB 數(shù)據(jù)的方案可能并不適用于幾十 PB 數(shù)據(jù)的情況。 有多種具備各自優(yōu)缺點(diǎn)的可能方法,將在下面對其進(jìn)行討論。最好使用幾種方法而不是僅僅使用一種方法來彌補(bǔ)它們的各種缺點(diǎn)。

背景:

某項(xiàng)目clickhouse 數(shù)據(jù)庫遷移,數(shù)據(jù)量大約9億條單表,版本為clickhouse20,遷移前我先在本地做了一些列的備份測試,下面我把我在生產(chǎn)中選用的備份方法和遇到的種種小插曲和大家分享下

實(shí)驗(yàn)環(huán)境:

官網(wǎng)下載的demo數(shù)據(jù),大約有8G的測試數(shù)據(jù)

clickhouse 20.4.6

一、 文本文件導(dǎo)入導(dǎo)出

#說白了就是手動(dòng)的把數(shù)據(jù)庫里的數(shù)據(jù)導(dǎo)出成特定的格式,再導(dǎo)入;這種方式!!不推薦!!!!除非你的數(shù)據(jù)庫真的很少,我當(dāng)時(shí)從官網(wǎng)下載了一個(gè)demo 數(shù)據(jù),手動(dòng)導(dǎo)入導(dǎo)出,差點(diǎn)把我累死

導(dǎo)出:

  1. clickhouse-client --password helloword --query="select * from iot_dev.t_indicator_record FORMAT CSV" > iot_dev.t_indicator_record.csv 

導(dǎo)入: 注意FORMAT后面大寫

  1. cat iot_dev.t_indicator_record.csv | clickhouse-client --port 9008 --password helloword --query="INSERT INTO iot_dev.t_indicator_record FORMAT CSV" 

二、 拷貝數(shù)據(jù)目錄

#此方案和mysql 的冷數(shù)據(jù)恢復(fù)是一個(gè)方案,直接拷貝走clickhouse 的數(shù)據(jù)到另一臺機(jī)器上,修改下相關(guān)配置就可以直接啟動(dòng)了,仔細(xì)的觀察一下 ClickHouse 在文件系統(tǒng)上的目錄結(jié)構(gòu)(配置文件

/ect/clickhouse-server/config.xml 里面配置的 ),為了便于查看,只保留了 data 和 metadata 目錄。

  1. ├── data 
  2. │   ├── default 
  3. │   ├── system 
  4. │   │   ├── asynchronous_metric_log 
  5. │   │   ├── metric_log 
  6. │   │   ├── query_log 
  7. │   │   ├── query_thread_log 
  8. │   │   └── trace_log 
  9. ├── metadata 
  10. │   ├── default 
  11. │   │   └── v_table_size.sql 
  12. │   ├── default.sql 
  13. │   ├── system 
  14. │   │   ├── asynchronous_metric_log.sql 
  15. │   │   ├── metric_log.sql 
  16. │   │   ├── query_log.sql 
  17. │   │   ├── query_thread_log.sql 
  18. │   │   └── trace_log.sql 
Clickhouse備份與恢復(fù)+異機(jī)遠(yuǎn)程備份腳本
  1. data 目錄里保存的是數(shù)據(jù),每個(gè)數(shù)據(jù)庫一個(gè)目錄,內(nèi)部每個(gè)表一個(gè)子目錄。 
  2. metadata 目錄里保存的是元數(shù)據(jù),即數(shù)據(jù)庫和表結(jié)構(gòu)。其中 
  3.         <database>.sql 是 創(chuàng)建數(shù)據(jù)庫的 DDL(ATTACH DATABASE default ENGINE = Ordinary) 
  4.         <database>/<table>.sql 是建表的 DDL (ATTACH TABLE ...) 

基于這個(gè)信息,直接把data和metadata目錄(要排除 system 庫)復(fù)制到新集群,即可實(shí)現(xiàn)數(shù)據(jù)遷移

實(shí)操步驟:

  1. 1、停止原先的clickhouse數(shù)據(jù)庫,并打包好 對應(yīng)數(shù)據(jù)庫或表的 data 和 metadata 數(shù)據(jù) 
  2. 2、拷貝到目標(biāo)clickhouse數(shù)據(jù)庫對應(yīng)的目錄,比如/var/lib/clickhouse 目錄下 
  3. 3、給clickhouse 賦予權(quán)限, chown -Rf clickhouse:clickhouse /var/lib/clickhouse/* 
  4.                                                       chown -Rf clickhouse:clickhouse /var/lib/clickhouse 
  5. 4、重啟目標(biāo)clickhouse數(shù)據(jù)庫 
  6. 5、驗(yàn)證數(shù)據(jù) 
  7.         select count(1) form iot_dev.t_indicator_record; 

三、 使用第三方工具,clickhouse-backup

此方案,是我在測試的過程中使用最方便的備份與恢復(fù)工具,因此我會(huì)詳細(xì)的說下此工具的使用方法及需要注意的地方。

clickhouse-backup 是社區(qū)開源的一個(gè) ClickHouse 備份工具,可用于實(shí)現(xiàn)數(shù)據(jù)遷移。其原理是先創(chuàng)建一個(gè)備份,然后從備份導(dǎo)入數(shù)據(jù),類似 MySQL 的 mysqldump + SOURCE。這個(gè)工具可以作為常規(guī)的異地冷備方案

# 使用限制:

  • 支持1.1.54390以上的ClickHouse
  • 僅MergeTree系列表引擎
  • 不支持備份Tiered storage或storage_policy
  • 云存儲上的最大備份大小為5TB
  • AWS S3上的parts數(shù)最大為10,000

(1)、下載clickhouse-backup 軟件包

官方提供了二進(jìn)制版本和rpm包的方式,我這里采用了二進(jìn)制安裝

  1. github地址: https://github.com/AlexAkulov/clickhouse-backup 
  2.  
  3. 下載地址: https://github.com/AlexAkulov/clickhouse-backup/releases/download/v1.0.0/clickhouse-backup.tar.gz 
  1. #解壓軟件包 
  2. tar -xf clickhouse-backup.tar.gz -C /root 
  3.  
  4. #復(fù)制二進(jìn)制文件到系統(tǒng)中 
  5. cp /root/clickhouse-backup /usr/bin 
  6.  
  7. #創(chuàng)建clickhouse-backup 配置文件目錄 
  8. mkdir -p /etc/clickhouse-backup 
  9.  
  10. #拷貝模板配置文件到clickhouse-backup 配置文件目錄下 
  11. cp /root/config.yml /etc/clickhouse-backup/ 

(2)、修改clickhouse-backup 配置文件config.yml

# 根據(jù)clickhouse自身的配置來修改 此配置文件,比如 clickhouse的數(shù)據(jù)目錄,數(shù)據(jù)庫密碼,監(jiān)控地址及端口

官方的配置說明:

clickhouse-backup 除了備份到本機(jī),此外還支持遠(yuǎn)程備份的方式,備份到s3 上【對象存儲】,ftp,sftp 上,還支持 使用 api 接口 訪問

  1. general: 
  2.   remote_storage: none           # REMOTE_STORAGE,遠(yuǎn)程備份的方式,對應(yīng)下面的【azblo,s3,gcs,api,ftp,sftp】 
  3.   max_file_size: 107374182400    # MAX_FILE_SIZE 
  4.   disable_progress_bar: false    # DISABLE_PROGRESS_BAR 
  5.   backups_to_keep_local: 0       # BACKUPS_TO_KEEP_LOCAL, 本地備份保留個(gè)數(shù) ,0為不限制 
  6.   backups_to_keep_remote: 0      # BACKUPS_TO_KEEP_REMOTE,遠(yuǎn)程的備份保留個(gè)數(shù),0為不限制 
  7.   log_level: info                # LOG_LEVEL,日志等級 
  8.   allow_empty_backups: false     # ALLOW_EMPTY_BACKUPS 
  9. clickhouse: 
  10.   username: default                # CLICKHOUSE_USERNAME,數(shù)據(jù)庫用戶名,默認(rèn) 
  11.   password""                     # CLICKHOUSE_PASSWORD,數(shù)據(jù)庫密碼 
  12.   host: localhost                  # CLICKHOUSE_HOST,數(shù)據(jù)庫實(shí)例地址 
  13.   port: 9000                       # CLICKHOUSE_PORT,數(shù)據(jù)庫連接端口 
  14.   disk_mapping: {}                 # CLICKHOUSE_DISK_MAPPING 
  15.   skip_tables:                     # CLICKHOUSE_SKIP_TABLES ,備份時(shí),需要忽略的庫表 
  16.     - system.* 
  17.   timeout: 5m                      # CLICKHOUSE_TIMEOUT 
  18.   freeze_by_part: false            # CLICKHOUSE_FREEZE_BY_PART 
  19.   secure: false                    # CLICKHOUSE_SECURE 
  20.   skip_verify: false               # CLICKHOUSE_SKIP_VERIFY 
  21.   sync_replicated_tables: true     # CLICKHOUSE_SYNC_REPLICATED_TABLES 
  22.   log_sql_queries: true            # CLICKHOUSE_LOG_SQL_QUERIES 
  23.  
  24.   config_dir:      "/etc/clickhouse-server"              # CLICKHOUSE_CONFIG_DIR 
  25.   restart_command: "systemctl restart clickhouse-server" # CLICKHOUSE_RESTART_COMMAND 
  26.  
  27. azblob: 
  28.   endpoint_suffix: "core.windows.net" # AZBLOB_ENDPOINT_SUFFIX 
  29.   account_name: ""             # AZBLOB_ACCOUNT_NAME 
  30.   account_key: ""              # AZBLOB_ACCOUNT_KEY 
  31.   sas: ""                      # AZBLOB_SAS 
  32.   container: ""                # AZBLOB_CONTAINER 
  33.   path: ""                     # AZBLOB_PATH 
  34.   compression_level: 1         # AZBLOB_COMPRESSION_LEVEL 
  35.   compression_format: tar      # AZBLOB_COMPRESSION_FORMAT 
  36.   sse_key: ""                  # AZBLOB_SSE_KEY 
  37. s3: 
  38.   access_key: ""                   # S3_ACCESS_KEY,<AWS訪問密鑰> 
  39.   secret_key: ""                   # S3_SECRET_KEY 
  40.   bucket: ""                       # S3_BUCKET,<存儲桶BUCKET名稱> 
  41.   endpoint: ""                     # S3_ENDPOINT 
  42.   region: us-east-1                # S3_REGION 
  43.   acl: private                     # S3_ACL 
  44.   force_path_style: false          # S3_FORCE_PATH_STYLE 
  45.   path: ""                         # S3_PATH , <備份路徑> 
  46.   disable_ssl: false               # S3_DISABLE_SSL 
  47.   compression_level: 1             # S3_COMPRESSION_LEVEL 
  48.   # supports 'tar''gzip''zstd''brotli' 
  49.   compression_format: tar          # S3_COMPRESSION_FORMAT 
  50.   # empty (default), AES256, or aws:kms 
  51.   sse: AES256                      # S3_SSE 
  52.   disable_cert_verification: false # S3_DISABLE_CERT_VERIFICATION 
  53.   storage_class: STANDARD          # S3_STORAGE_CLASS 
  54.   debug: false                     # S3_DEBUG 
  55. gcs: 
  56.   credentials_file: ""         # GCS_CREDENTIALS_FILE 
  57.   credentials_json: ""         # GCS_CREDENTIALS_JSON 
  58.   bucket: ""                   # GCS_BUCKET 
  59.   path: ""                     # GCS_PATH 
  60.   compression_level: 1         # GCS_COMPRESSION_LEVEL 
  61.   compression_format: tar      # GCS_COMPRESSION_FORMAT 
  62. cos: 
  63.   url: ""                      # COS_URL 
  64.   timeout: 2m                  # COS_TIMEOUT 
  65.   secret_id: ""                # COS_SECRET_ID 
  66.   secret_key: ""               # COS_SECRET_KEY 
  67.   path: ""                     # COS_PATH 
  68.   compression_format: tar      # COS_COMPRESSION_FORMAT 
  69.   compression_level: 1         # COS_COMPRESSION_LEVEL 
  70. api: 
  71.   listen: "localhost:7171"     # API_LISTEN 
  72.   enable_metrics: true         # API_ENABLE_METRICS 
  73.   enable_pprof: false          # API_ENABLE_PPROF 
  74.   username: ""                 # API_USERNAME 
  75.   password""                 # API_PASSWORD 
  76.   secure: false                # API_SECURE 
  77.   certificate_file: ""         # API_CERTIFICATE_FILE 
  78.   private_key_file: ""         # API_PRIVATE_KEY_FILE 
  79.   create_integration_tables: false # API_CREATE_INTEGRATION_TABLES 
  80. ftp: 
  81.   address: ""                  # FTP_ADDRESS 
  82.   timeout: 2m                  # FTP_TIMEOUT 
  83.   username: ""                 # FTP_USERNAME 
  84.   password""                 # FTP_PASSWORD 
  85.   tls: false                   # FTP_TLS 
  86.   path: ""                     # FTP_PATH 
  87.   compression_format: tar      # FTP_COMPRESSION_FORMAT 
  88.   compression_level: 1         # FTP_COMPRESSION_LEVEL 
  89.   debug: false                 # FTP_DEBUG 
  90. sftp: 
  91.   address: ""                  # SFTP_ADDRESS 
  92.   username: ""                 # SFTP_USERNAME 
  93.   password""                 # SFTP_PASSWORD 
  94.   key""                      # SFTP_KEY 
  95.   path: ""                     # SFTP_PATH 
  96.   compression_format: tar      # SFTP_COMPRESSION_FORMAT 
  97.   compression_level: 1         # SFTP_COMPRESSION_LEVEL 

 我本次使用的配置文件,就是最簡單的配置,直接本地備份,然后通過執(zhí)行腳本的方式去推送備份文件到備份主機(jī)上

  1. [root@localhost clickhouse-backup]# cat config.yml  
  2.  
  3. general: 
  4.   max_file_size: 1099511627776 
  5.   disable_progress_bar: false 
  6.   backups_to_keep_local: 0 
  7.   backups_to_keep_remote: 0 
  8.   log_level: info 
  9.   allow_empty_backups: false 
  10. clickhouse: 
  11.   username: default 
  12.   password"" 
  13.   host: localhost 
  14.   port: 9000 
  15.   disk_mapping: {} 
  16.   skip_tables: 
  17.   - system.* 
  18.   - default.* 
  19.   timeout: 5m 
  20.   freeze_by_part: false 
  21.   secure: false 
  22.   skip_verify: false 
  23.   sync_replicated_tables: true 
  24.   skip_sync_replica_timeouts: true 
  25.   log_sql_queries: false 

 (3)、查看clickhouse-backup 相關(guān)命令

  1. NAME
  2.    clickhouse-backup - Tool for easy backup of ClickHouse with cloud support 
  3.  
  4. USAGE: 
  5.    clickhouse-backup <command> [-t, --tables=<db>.<table>] <backup_name> 
  6.  
  7. VERSION: 
  8.    1.0.0 
  9.  
  10. DESCRIPTION: 
  11.    Run as 'root' or 'clickhouse' user 
  12.  
  13. COMMANDS: 
  14.    tables          Print list of tables 
  15.    create          Create new backup 
  16.    create_remote   Create and upload 
  17.    upload          Upload backup to remote storage 
  18.    list            Print list of backups 
  19.    download        Download backup from remote storage 
  20.    restore         Create schema and restore data from backup 
  21.    restore_remote  Download and restore 
  22.    delete          Delete specific backup 
  23.    default-config  Print default config 
  24.    server          Run API server 
  25.    help, h         Shows a list of commands or help for one command 
  26.  
  27. GLOBAL OPTIONS: 
  28.    --config FILE, -c FILE  Config FILE name. (default: "/etc/clickhouse-backup/config.yml") [$CLICKHOUSE_BACKUP_CONFIG] 
  29.    --help, -h              show help 
  30.    --version, -v           print the version 

1、 查看全部默認(rèn)的配置項(xiàng)

  1. clickhouse-backup default-config 

2、 查看可備份的表【已在配置文件中過濾掉system和default 庫下面的所有表】

  1. [root@localhost clickhouse-backup]# clickhouse-backup tablesbrdatasets.hits_v1  1.50GiB  default  

3、 創(chuàng)建備份

#全庫備份

  1. clickhouse-backup create 
  2. 2021/09/06 10:03:23  info done                      backup=2021-09-06T14-03-23 operation=create table=datasets.hits_v1 
  3. 2021/09/06 10:03:23  info done                      backup=2021-09-06T14-03-23 operation=create 

備份存儲在中 $data_path/backup 下,備份名稱默認(rèn)為時(shí)間戳,可手動(dòng)指定備份名稱

  1. clickhouse-backup create fxkjnj_0906 

備份包含兩個(gè)目錄:

  • metadata目錄: 包含重新創(chuàng)建所需的DDL SQL
  • shadow目錄: 包含作為ALTER TABLE ... FREEZE操作結(jié)果的數(shù)據(jù)
  1. [root@localhost backup]# ll /var/lib/clickhouse/backup/2021-09-06T14-03-23/ 
  2. total 4 
  3. drwxr-x--- 3 clickhouse clickhouse  22 Sep  6 10:03 metadata 
  4. -rw-r----- 1 clickhouse clickhouse 865 Sep  6 10:03 metadata.json 
  5. drwxr-x--- 3 clickhouse clickhouse  22 Sep  6 10:03 shadow 

 #單表備份

  1. clickhouse-backup create [-t, --tables=<db>.<table>] <backup_name> 

備份表datasets.hits_v1

  1. clickhouse-backup create  -t datasets.hits_v1 

備份多個(gè)表datasets.hits_v1, datasets.hits_v2

  1. clickhouse-backup create  -t datasets.hits_v1,datasets.hits_v2 

4、查看備份記錄

  1. [root@localhost datasets]# clickhouse-backup list 
  2. 2021-09-06T14-03-23   1.50GiB   06/09/2021 14:03:23   local       
  3. 2021/09/06 10:10:50 error InvalidParameter: 1 validation error(s) found. 
  4. - minimum field size of 1, ListObjectsV2Input.Bucket. 

 5、刪除備份文件

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

(4)、數(shù)據(jù)恢復(fù)

語法:

clickhouse-backup restore 備份名

  1. [root@localhost shadow]# clickhouse-backup restore --help 
  2. NAME
  3.    clickhouse-backup restore - Create schema and restore data from backup 
  4.  
  5. USAGE: 
  6.    clickhouse-backup restore  [-t, --tables=<db>.<table>] [-s, --schema] [-d, --data] [--rm, --drop] <backup_name> 
  7.  
  8. OPTIONS: 
  9.    --config FILE, -c FILE                   Config FILE name. (default: "/etc/clickhouse-backup/config.yml") [$CLICKHOUSE_BACKUP_CONFIG] 
  10.    --table value, --tables value, -t value   
  11.    --schema, -s                             Restore schema only 
  12.    --data, -d                               Restore data only 
  13.    --rm, --drop                             Drop table before restore 

參數(shù):

  • --table 只恢復(fù)特定表,可使用正則。如針對特定的數(shù)據(jù)庫:--table=dbname.*
  • --schema 只還原表結(jié)構(gòu)
  • --data 只還原數(shù)據(jù)
  • --rm 數(shù)據(jù)恢復(fù)之前,先刪除需要恢復(fù)的表

四、使用clickhouse-backup備份與恢復(fù)數(shù)據(jù)-實(shí)戰(zhàn)

4.1 、本機(jī)備份與恢復(fù)

1、備份前,先查看數(shù)據(jù)庫里的數(shù)據(jù)量,一共是17747796條數(shù)據(jù)

  1. 1、備份前,先查看數(shù)據(jù)庫里的數(shù)據(jù)量,一共是17747796條數(shù)據(jù) 
  2. [root@localhost ~]# clickhouse-client 
  3. ClickHouse client version 20.4.6.53 (official build). 
  4. Connecting to localhost:9000 as user default
  5. Connected to ClickHouse server version 20.4.6 revision 54434. 
  6. localhost :)  
  7. localhost :) select count(1) from datasets.hits_v1; 
  8.  
  9. SELECT count(1) 
  10. FROM datasets.hits_v1 
  11.  
  12. ┌─count(1)─┐ 
  13. │ 17747796 │ 
  14. └──────────┘ 
  15.  
  16. rows in set. Elapsed: 0.016 sec.  
  17.  
  18. localhost :) exit 
  19.  
  20.  
  21.  
  22. 2、創(chuàng)建clickhouse-backup配置文件,本地備份文件最多保留7個(gè) 
  23.  
  24. [root@localhost ~]# vim /etc/clickhouse-backup/config.yml  
  25. general: 
  26.   max_file_size: 1099511627776 
  27.   disable_progress_bar: false 
  28.   backups_to_keep_local: 7 
  29.   log_level: info 
  30.   allow_empty_backups: false 
  31. clickhouse: 
  32.   username: default 
  33.   password"helloword" 
  34.   host: localhost 
  35.   port: 9000 
  36.   disk_mapping: {} 
  37.   skip_tables: 
  38.   - system.* 
  39.   - default.* 
  40.   timeout: 5m 
  41.   freeze_by_part: false 
  42.   secure: false 
  43.   skip_verify: false 
  44.   sync_replicated_tables: true 
  45.   skip_sync_replica_timeouts: true 
  46.   log_sql_queries: false 
  47.  
  48.  
  49. 3、查看可備份的表 
  50. [root@localhost backup]# clickhouse-backup tables 
  51. datasets.hits_v1  1.50GiB  default   
  52.  
  53.  
  54. 4、使用clickhouse-backup 做個(gè)備份 
  55. [root@localhost clickhouse]# clickhouse-backup create 
  56. 2021/09/06 10:50:42  info done                      backup=2021-09-06T14-50-42 operation=create table=datasets.hits_v1 
  57. 2021/09/06 10:50:42  info done                      backup=2021-09-06T14-50-42 operation=create 
  58.  
  59.  
  60.  
  61. 5、模擬進(jìn)行數(shù)據(jù)破壞,?。?!生產(chǎn)環(huán)境勿用?。?!此處為測試 
  62. [root@localhost clickhouse]# clickhouse-client  
  63. ClickHouse client version 20.4.6.53 (official build). 
  64. Connecting to localhost:9000 as user default
  65. Connected to ClickHouse server version 20.4.6 revision 54434. 
  66.  
  67. localhost :) drop database datasets; 
  68. DROP DATABASE datasets 
  69. Ok. 
  70. rows in set. Elapsed: 0.002 sec.  
  71.  
  72. SHOW DATABASES 
  73. ┌─name───────────────────────────┐ 
  74. │ _temporary_and_external_tables │ 
  75. │ default                        │ 
  76. │ system   
  77. │ test 
  78. └────────────────────────────────┘ 
  79. rows in set. Elapsed: 0.002 sec.  
  80.  
  81.  
  82.  
  83.  
  84. 6、恢復(fù)數(shù)據(jù)庫 
  85. [root@localhost backup]# clickhouse-backup restore 2021-09-06T14-50-42 -s -d --rm 
  86. 2021/09/06 10:57:04  info done                      backup=2021-09-06T14-50-42 operation=restore table=datasets.hits_v1 
  87. 2021/09/06 10:57:04  info done                      backup=2021-09-06T14-50-42 operation=restore 
  88.  
  89.  
  90. 7、驗(yàn)證數(shù)據(jù)庫,查看數(shù)據(jù)是否復(fù)原,數(shù)據(jù)量是否匹配 
  91.  
  92. [root@localhost backup]# clickhouse-client  
  93. ClickHouse client version 20.4.6.53 (official build). 
  94. Connecting to localhost:9000 as user default
  95. Connected to ClickHouse server version 20.4.6 revision 54434. 
  96.  
  97. localhost :) show databases; 
  98.  
  99. SHOW DATABASES 
  100. ┌─name───────────────────────────┐ 
  101. │ _temporary_and_external_tables │ 
  102. │ datasets                       │ 
  103. │ default                        │ 
  104. │ system                         │ 
  105. │ test                           │ 
  106. └────────────────────────────────┘ 
  107. rows in set. Elapsed: 0.002 sec.  
  108.  
  109. localhost :) select count(1) from datasets.hits_v1; 
  110.  
  111. SELECT count(1) 
  112. FROM datasets.hits_v1 
  113.  
  114. ┌─count(1)─┐ 
  115. │ 17747796 │ 
  116. └──────────┘ 
  117.  
  118. rows in set. Elapsed: 0.020 sec.  
  119.  
  120. localhost :)  

4.2、異機(jī)遠(yuǎn)程備份與恢復(fù)

所謂異機(jī)遠(yuǎn)程備份,就是指將備份好的文件,同步傳輸?shù)竭h(yuǎn)程 專業(yè)的存儲服務(wù)器,往往這些存儲服務(wù)器都是大存儲,可以備份存儲1年甚至幾年的數(shù)據(jù)庫備份都沒問題

環(huán)境:

clickhouse 數(shù)據(jù)庫 192.168.99.102

存儲服務(wù)器 192.168.99.101

  1. 1、備份前,先查看數(shù)據(jù)庫里的數(shù)據(jù)量,一共是17747796條數(shù)據(jù) 
  2. [root@localhost ~]# clickhouse-client 
  3. ClickHouse client version 20.4.6.53 (official build). 
  4. Connecting to localhost:9000 as user default
  5. Connected to ClickHouse server version 20.4.6 revision 54434. 
  6. localhost :)  
  7. localhost :) select count(1) from datasets.hits_v1; 
  8.  
  9. SELECT count(1) 
  10. FROM datasets.hits_v1 
  11.  
  12. ┌─count(1)─┐ 
  13. │ 17747796 │ 
  14. └──────────┘ 
  15.  
  16. rows in set. Elapsed: 0.016 sec.  
  17.  
  18. localhost :) exit 
  19.  
  20.  
  21.  
  22. 2、創(chuàng)建clickhouse-backup配置文件,本地備份文件最多保留7個(gè) 
  23.  
  24. [root@localhost ~]# vim /etc/clickhouse-backup/config.yml  
  25. general: 
  26.   max_file_size: 1099511627776 
  27.   disable_progress_bar: false 
  28.   backups_to_keep_local: 7 
  29.   log_level: info 
  30.   allow_empty_backups: false 
  31. clickhouse: 
  32.   username: default 
  33.   password"helloword" 
  34.   host: localhost 
  35.   port: 9000 
  36.   disk_mapping: {} 
  37.   skip_tables: 
  38.   - system.* 
  39.   - default.* 
  40.   timeout: 5m 
  41.   freeze_by_part: false 
  42.   secure: false 
  43.   skip_verify: false 
  44.   sync_replicated_tables: true 
  45.   skip_sync_replica_timeouts: true 
  46.   log_sql_queries: false 
  47.  
  48.  
  49. 3、查看可備份的表 
  50. [root@localhost backup]# clickhouse-backup tables 
  51. datasets.hits_v1  1.50GiB  default   
  52.  
  53.  
  54. 4、使用clickhouse-backup 做個(gè)備份 
  55. [root@localhost clickhouse]# clickhouse-backup create 
  56. 2021/09/06 10:50:42  info done                      backup=2021-09-06T14-50-42 operation=create table=datasets.hits_v1 
  57. 2021/09/06 10:50:42  info done                      backup=2021-09-06T14-50-42 operation=create 
  58.  
  59.  
  60.  
  61. 5、使用SCP 將備份文件,傳輸?shù)酱鎯Ψ?wù)器上 
  62. [root@localhost clickhouse]#  scp -rp /var/lib/clickhouse/backup/2021-09-06T14-50-42 fxkjnj@192.168.99.101:/data/clickhouse-backup/ 
  63.  
  64. 6、登錄到存儲服務(wù)器 ,查看備份數(shù)據(jù)是否存在 
  65. [root@localhost clickhouse]# ll /data/clickhouse-backup/2021-09-06T14-50-42 
  66. total 4 
  67. drwxr-x--- 3 clickhouse clickhouse  22 Sep  6 10:50 metadata 
  68. -rw-r----- 1 clickhouse clickhouse 865 Sep  6 10:50 metadata.json 
  69. drwxr-x--- 3 clickhouse clickhouse  22 Sep  6 10:50 shadow 

五、使用腳本定期異機(jī)遠(yuǎn)程備份

環(huán)境: clickhouse 數(shù)據(jù)庫 192.168.99.102 存儲服務(wù)器 192.168.99.101

條件:

  • 存儲服務(wù)器 建立備份目錄,/data/clickhouse-back
  • clickhouse 數(shù)據(jù)庫 可以免密到 存儲服務(wù)器 上,免密傳輸備份文件
  1. vim  /var/lib/clickhouse/clickhouse-backup.sh 
  2. #!/bin/bash 
  3. #Author        fxkjnj.com 
  4. #################################################### 
  5. ## 
  6. ##      clickhouse-back script 
  7. ##      backup data at remote host 
  8. ##      you should config ssh trust 
  9. ##  
  10. #################################################### 
  11.  
  12.  
  13.  
  14. MSNAME=yz 
  15. BAKFILE=$MSNAME-`date +%Y%m%d%H%M%S` 
  16. LOCAL_BAKDIR=/var/lib/clickhouse/backup 
  17.  
  18. REMOTE_BAKDIR=/data/clickhouse-back 
  19. REMOTE_HOST=root@192.168.99.101 
  20.  
  21.  
  22.  
  23. #備份到本地 
  24. /usr/bin/clickhouse-backup create $BAKFILE 
  25. if [[ $? != 0 ]]; then 
  26.     echo "clickhouse-backup Create FAILED" > /var/log/clickhouse-backup.log 
  27.     exit 
  28. else 
  29. #SCP備份到遠(yuǎn)程主機(jī) 
  30. scp -rp $LOCAL_BAKDIR/$BAKFILE $REMOTE_HOST:$REMOTE_BAKDIR/ 
  31.     if [[ $? != 0 ]]; then 
  32.         echo "clickhouse-backup FAILED" > /var/log/clickhouse-backup.log 
  33.     else 
  34.         echo "clickhouse-backup successful" > /var/log/clickhouse-backup.log 
  35.     fi 
  36. fi 
  37.  
  38.  
  39. #定期刪除遠(yuǎn)程備份文件 
  40. ssh $REMOTE_HOST  "find $REMOTE_BAKDIR/yz* -maxdepth 0 -mtime +30 -type d | xargs rm -rf {}" 

六、常見問題

1、問題現(xiàn)象:使用clickhouse-backup 恢復(fù)數(shù)據(jù)時(shí),提示UUID 問題

  1. clickhouse-backup restore 2021-08-21T06-35-10 -s -d --rm 
  2. 2021/08/21 14:40:51 error can't create table `default`.`t`: code: 57, message:  
  3. Directory for table data store/c57/c5780d8a-7d5a-47a3-8578-0d8a7d5a37a3/ already exists after 1 times, please check your schema depencncies 

 解決方法:

  1. 去掉  備份文件中  ${backup_path}/2021-08-21T06-35-10/metadata/default/t.json 中的UUID 
  2. UUID '80ea6411-9c37-4d47-80ea-64119c374d47' 
  3.  
  4.  
  5. 再次執(zhí)行恢復(fù) 
  6. clickhouse-backup restore 2021-08-21T06-35-10 -s -d --rm 
  7.  
  8. SELECT count(1) 
  9. FROM datasets.hits_v1 
  10.  
  11. ┌─count(1)─┐ 
  12. │ 17747796 │ 
  13. └──────────┘ 
  14.  
  15. rows in set. Elapsed: 0.016 sec.  
  16.  
  17. localhost :) exit 

 

責(zé)任編輯:姜華 來源: 今日頭條
相關(guān)推薦

2010-05-26 10:25:50

MySQLdump增量

2010-05-20 11:17:41

虛擬機(jī)備份恢復(fù)

2017-05-08 10:08:54

災(zāi)備

2022-08-09 11:25:52

數(shù)據(jù)備份服務(wù)器虛擬化磁盤

2011-03-25 13:43:56

CactiEZ備份

2016-11-18 15:42:06

存儲

2022-08-26 17:22:12

SQL數(shù)據(jù)庫

2017-04-27 09:05:08

備份寶災(zāi)備

2009-06-24 10:44:08

2018-04-17 08:24:58

2013-07-18 10:41:11

VADPSRM

2017-04-24 14:29:42

存儲備份寶災(zāi)備

2024-04-18 09:20:43

PostgreSQL關(guān)系型數(shù)據(jù)庫數(shù)據(jù)庫管理系統(tǒng)

2009-04-03 10:54:49

Oracle備份恢復(fù)

2010-04-22 15:14:12

Aix操作系統(tǒng)

2014-09-16 16:37:12

NETGEARReadyRECOVE數(shù)據(jù)備份

2022-02-23 21:10:53

LonghornKubernetes快照

2017-10-14 13:25:40

公有云Azure Site 云服務(wù)

2010-09-13 14:25:03

2015-10-21 14:07:17

Oracle備份Oracle恢復(fù)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號