ClickHouse 变量与参数说明

本文汇总 clickhouse_ansible 公开能力中最常改、最容易影响结果的变量,帮助你在部署、备份、恢复前快速定位配置入口。

1. 通用变量

文件:playbooks/vars/common_config.yml

变量默认值作用
clickhouse_version23.6.1ClickHouse 版本,支持三段或四段写法
clickhouse_install_debug_packagefalse是否额外准备并安装 clickhouse-common-static-dbg
clickhouse_default_passwordDbbot_default@8888default 用户密码
clickhouse_uid / clickhouse_gid18123 / 18123ClickHouse 用户和组的固定 UID/GID
fcs_auto_download_packagestrue控制节点是否自动下载 ClickHouse 安装包
fcs_set_hostnametrue是否修改目标主机 hostname
fcs_allow_dbbot_default_passwdfalse是否允许使用公开默认密码继续执行
use_clickhouse_keeperfalsefalse 使用独立 ZooKeeper,true 使用 ClickHouse Keeper
clickhouse_enable_sslfalse是否启用 SSL
deploy_require_manual_confirmtrue部署前是否要求控制台确认

说明:

  • clickhouse_install_debug_package=false 是当前建议默认值,能显著减少下载和分发时间。
  • 源集群与容灾集群建议统一 clickhouse_uid / clickhouse_gid,避免 NFS 恢复时权限错位。
  • clickhouse_default_password 的公开默认值是 Dbbot_default@8888
  • 默认 fcs_allow_dbbot_default_passwd: false,因此部署、备份、恢复相关 Playbook 会在 pre_tasks 阶段拦截公开默认密码。

2. 集群变量

文件:playbooks/vars/cluster_config.yml

变量默认值作用
clickhouse_cluster_nameexample_3shards_2replicas集群名
clickhouse_tcp_port_base9000ClickHouse TCP 端口基线
clickhouse_http_port_base8123ClickHouse HTTP 端口基线
clickhouse_interserver_http_port_base9009副本间 HTTP 端口基线
clickhouse_mysql_port_base9004MySQL 协议兼容端口基线
clickhouse_postgresql_port_base9005PostgreSQL 协议兼容端口基线
clickhouse_aux_port_stride10多实例协议兼容端口步长

端口计算规则:

  • 主端口按 instance_id 逐个加 1
  • MySQL / PostgreSQL 协议兼容端口按 instance_idclickhouse_aux_port_stride

3. 备份变量

文件:playbooks/vars/backup_config.yml

变量默认值作用
backup_databases / backup_tables[]备份对象,至少设置一项
backup_modefull备份模式,支持 full / incremental
backup_base_batch_id""增量备份基线批次号
backup_storage_diskbackup_nfsClickHouse 侧备份磁盘名
backup_mount_dir/backupNFS 挂载目录
backup_checkpoint_modefilesafe_ts 记录方式
backup_require_replicated_tablestrue是否阻断非复制本地表备份
backup_allow_partial_clusterfalse是否允许 --limit 只备份部分节点

生产建议:

  • 生产环境优先使用固定 backup_batch_id
  • 备份前先完成 setup_nfs_client_mount_rc_local.ymlprepare_backup_disk.yml

4. 恢复变量

文件:playbooks/vars/restore_config.yml

变量默认值作用
restore_batch_id""目标恢复批次号,必填
restore_manifest_file""manifest 路径,默认自动定位
restore_to_all_replicastrue是否所有副本都参与恢复
restore_allow_non_empty_tablesfalse是否允许恢复到非空表
restore_enable_two_phase_mv_compattrue是否启用 MV 两阶段兼容恢复
restore_allow_partial_clusterfalse是否允许 --limit 只恢复部分节点
restore_require_manual_confirmtrue恢复前是否要求控制台确认
restore_mount_dir/backup恢复目标侧挂载目录

恢复前务必先做两件事:

  1. 在恢复目标集群挂载 NFS
  2. 在恢复目标集群执行 prepare_backup_disk.yml

5. NFS 与清理变量

NFS server/client 的默认值写在 playbook 内,核心值如下:

变量默认值作用
nfs_server_ip198.51.100.162NFS 服务端 IP
nfs_export_dir/srv/nfs/clickhouse_backup服务端导出目录
nfs_mount_point/backup客户端挂载目录
dbbot_inventory_purposenfs_server / backupNFS server/client 守卫

清理变量位于:playbooks/vars/uninstall_config.yml

变量默认值作用
uninstall_require_manual_confirmtrue卸载前是否要求确认
uninstall_purge_clickhouse_configtrue是否删除 ClickHouse 配置
uninstall_purge_clickhouse_datatrue是否删除 ClickHouse 数据目录
uninstall_purge_clickhouse_logstrue是否删除 ClickHouse 日志目录
uninstall_remove_backup_mountfalse是否顺带卸载 /backup 并移除 rc.local 挂载脚本
uninstall_purge_zookeepertrue是否删除独立 ZooKeeper 服务与目录

6. 恢复校验变量

文件:playbooks/vars/validate_restore_config.yml

变量默认值作用
validate_source_groupclickhouse_backup源集群分组
validate_target_groupclickhouse_restore目标集群分组
validate_source_query_host127.0.0.1源端查询地址
validate_target_query_host127.0.0.1目标端查询地址
validate_fail_on_missing_pairstrue源/目标缺少对应分片副本时是否失败
validate_checks[]校验项列表

使用这个 playbook 时,需要同时传入两套 inventory,例如:

ansible-playbook \
  -i ../inventory/hosts.backup.ini \
  -i ../inventory/hosts.restore.ini \
  validate_restore_consistency.yml

对 TTL 表,建议在 validate_checks 中写固定时间窗口的 where 条件,而不是直接比全表总数。

7. 推荐阅读顺序

  1. ClickHouse 集群部署
  2. ClickHouse 备份
  3. ClickHouse 恢复
  4. ClickHouse 恢复后数据校验
  5. ClickHouse 卸载与清理
  6. ClickHouse 目录结构与配置