ClickHouse 目录结构与配置
本文用于说明 clickhouse_ansible 的目录布局、配置入口和推荐维护方式。
1. 顶层目录
典型路径:
/usr/local/dbbot/clickhouse_ansible
关键目录:
downloads/:ClickHouse 和 ZooKeeper 安装包。inventory/:部署、备份、恢复、NFS 服务端等场景的主机清单。playbooks/:入口 Playbook、预任务和变量文件。roles/:系统初始化、协调组件部署、ClickHouse 部署等角色。artifacts/manifests/:备份与恢复运行产物。
2. 目录结构示例
clickhouse_ansible/
├── artifacts/
│ └── manifests/
├── downloads/
├── inventory/
│ ├── hosts.deploy.ini
│ ├── hosts.dr_deploy.ini
│ ├── hosts.backup.ini
│ ├── hosts.dr_backup.ini
│ ├── hosts.restore.ini
│ ├── hosts.nfs_server.ini
│ └── hosts.single.ini
├── playbooks/
│ ├── deploy_cluster.yml
│ ├── deploy_single.yml
│ ├── setup_nfs_server.yml
│ ├── setup_nfs_client_mount_rc_local.yml
│ ├── prepare_backup_disk.yml
│ ├── backup_cluster.yml
│ ├── restore_cluster.yml
│ ├── uninstall_cluster.yml
│ ├── pre_tasks/
│ ├── tasks/
│ └── vars/
└── roles/
├── init_system/
├── deploy_zookeeper/
└── deploy_clickhouse/
3. inventory 文件职责
hosts.deploy.ini:部署专用,要求dbbot_inventory_purpose=deploy。hosts.dr_deploy.ini:容灾集群部署专用,要求dbbot_inventory_purpose=deploy。hosts.backup.ini:备份专用,要求dbbot_inventory_purpose=backup。hosts.dr_backup.ini:容灾目标的 NFS 挂载与备份盘准备专用,要求dbbot_inventory_purpose=backup。hosts.restore.ini:恢复专用,要求dbbot_inventory_purpose=restore。hosts.nfs_server.ini:NFS 服务端专用,要求dbbot_inventory_purpose=nfs_server。hosts.single.ini:单机验证专用。
这种拆分的目的是降低误操作概率,避免把备份或恢复命令误打到部署 inventory。
4. 变量文件职责
4.1 playbooks/vars/common_config.yml
用于维护通用参数,例如:
clickhouse_versionclickhouse_user/clickhouse_groupclickhouse_uid/clickhouse_gidclickhouse_data_dir_baseclickhouse_default_passwordfcs_allow_dbbot_default_passwdclickhouse_enable_ssluse_clickhouse_keeperclickhouse_install_debug_package
说明:
clickhouse_default_password的开源默认值是Dbbot_default@8888。- 默认
fcs_allow_dbbot_default_passwd: false,因此如果仍使用这个公开默认密码,相关 Playbook 会在pre_tasks阶段直接失败。
4.2 playbooks/vars/cluster_config.yml
用于维护集群层级参数,例如:
clickhouse_cluster_nameclickhouse_tcp_port_baseclickhouse_http_port_baseclickhouse_interserver_http_port_base
4.3 playbooks/vars/backup_config.yml
用于备份策略和 manifest 输出,例如:
backup_modebackup_storage_diskbackup_mount_dirbackup_checkpoint_modebackup_require_replicated_tables
4.4 playbooks/vars/restore_config.yml
用于恢复行为控制,例如:
restore_batch_idrestore_to_all_replicasrestore_allow_non_empty_tablesrestore_enable_two_phase_mv_compat
4.5 playbooks/vars/standalone_config.yml
用于单机验证模式,例如:
clickhouse_topology_modeclickhouse_single_host_required
4.6 playbooks/vars/uninstall_config.yml
用于控制卸载行为,例如:
uninstall_purge_clickhouse_configuninstall_purge_clickhouse_datauninstall_remove_backup_mountuninstall_purge_zookeeper
5. 执行逻辑概览
入口 Playbook 一般遵循以下顺序:
pre_tasks:参数校验、拓扑解析、环境检查、公开默认密码拦截。roles:执行系统初始化、协调组件部署、ClickHouse 部署或备份恢复逻辑。artifacts/manifests:对备份和恢复流程输出运行元数据。
6. 实践建议
- 为部署、备份、恢复分别维护 inventory。
- 为 NFS 服务端单独维护
hosts.nfs_server.ini。 - 在多环境中统一
clickhouse_uid/clickhouse_gid,减少跨集群恢复权限问题。 - 对生产环境优先使用固定版本号与固定批次号,方便审计和回滚。
- 默认不安装调试包;只有明确需要故障分析时再启用
clickhouse_install_debug_package=true。