Ckman安装部署Clickhouse
集群名称:clickhouse_test
3.1 什么是Ckman
Ckman,全称是ClickHouse Management Console,即ClickHouse管理平台。它是由擎创科技数据库团队主导研发的一款用来管理和监控ClickHouse集群的可视化运维工具。目前该工具已在github上开源,开源地址为:github.com/housepower/ckman。
3.2 安装Ckman
#Ckman单节点部署
172.21.243.108
3.2.1 通过Rpm包方式安装
官方下载地址:https://github.com/housepower/ckman/releases
安装版本:ckman-3.1.3.x86_64.rpm
cd /usr/local/apps
执行安装
rpm -ivh ckman-3.1.3.x86_64.rpm
查看是否安装成功
rpm -qa | grep ckman
#安装路径
cd /etc/ckman
Conf配置文件目录中,ckman.hjson文件不需要编辑,保持默认。
说明:从ckman的某个版本开始(至少从2.3.6版本开始),它开始采用HJSON格式来替代 YAML作为配置文件的格式。2.3.6版本之前,配置文件名是ckman.yaml。
3.2.2 启动Ckman
systemctl start ckman
systemctl status ckman
#查看进程
ps -ef | grep ckman
说明:ckman已经注册成服务,进程运行中。
浏览器访问
访问地址:http://172.21.243.108:8808/
账号:ckman
密码:Ckman123456!
说明:ckman登录成功
3.3 安装Zookeeper
3.3.1 配置ssh免密
#生成公钥私钥
ssh-keygen -t rsa
vim authorized_keys
#验证免密登录
ssh 172.21.243.108
说明:3台节点免密配置完成。
Clickhouse集群部署依赖Zookeeper(注:版本大于或等于3.6.0)
3.3.2 配置java环境
安装配置JDK1.8(配置过程省略…)
3.3.3 下载安装Zookeeper
#下载地址
https://zookeeper.apache.org/releases.html
https://www.apache.org/dyn/closer.lua/zookeeper/zookeeper-3.8.4/apache-zookeeper-3.8.4-bin.tar.gz
Zookeeper版本:apache-zookeeper-3.8.4-bin.tar.gz
#安装包上传服务器并解压缩
cd /usr/local/apps/
tar -xf apache-zookeeper-3.8.4-bin.tar.gz
#修改配置文件
cd /usr/local/apps/apache-zookeeper-3.8.4-bin/conf
cp zoo_sample.cfg zoo.cfg
说明:备份复制一份,改下文件名。
vim zoo.cfg
dataDir=/data/zookeeper
admin.enableServer=true
admin.server.Port=8080
server.1=172.21.243.83:2888:3888
server.2=172.21.243.108:2888:3888
server.3=172.21.243.177:2888:3888
说明:prometheus这4行注释放开,然后追加5行内容。
#创建zookeeper目录
mkdir /data/zookeeper -p
#在3台节点各创建一个
echo 1 -> /data/zookeeper/myid
echo 2 -> /data/zookeeper/myid
echo 3 -> /data/zookeeper/myid
#检查端口是否被占用
yum install lsof -y
lsof -i :8080
#启动zookeeper
cd /usr/local/apps/apache-zookeeper-3.8.4-bin
./bin/zkServer.sh start
说明:3台zookeeper节点启动成功。
#浏览器访问zookeeper
http://172.21.243.83:7000/metrics
http://172.21.243.108:7000/metrics
http://172.21.243.177:7000/metrics
http://172.21.243.83:8080/commands/mntr
说明:zookeeper部署成功。
3.4 使用ckman安装Clickhouse
#ck集群节点
#zk集群节点
#下载地址
http://repo.yandex.ru/clickhouse/rpm/lts/
https://packages.clickhouse.com/rpm/lts/
#离线下载三个安装包
clickhouse-client-23.3.5.9.x86_64.rpm
clickhouse-server-23.3.5.9.x86_64.rpm
clickhouse-common-static-23.3.5.9.x86_64.rpm
3.4.1 Ckman可视化安装部署ck集群
点击设置
#上传安装包
#查看上传目录
#创建集群
注意:指定存储路径要提前创建好。
说明:系统账户名是指安装ckman使用的账号(root),通过ckman操作ck集群。
疑问:这里默认用户密码是指设置Clickhouse集群的default用户密码,我这里以为是设置一个新的用户和密码,填写为:ck:ck@123。
安装完成后,该ck用户登录不了集群,可能是搞错意思了,生成的user.xml配置文件中只有default用户,没有ck用户,密码为空。
解决办法:1、在ckman界面设置模块,修改默认用户密码;(推荐界面修改)
备注:ckman管理用户密码,配置文件是在这个目录/etc/clickhouse-server/users.d下的users.xml文件。
2、登录到3台节点上手动修user.xml文件中的<password></password>配置
认证方式:有密码和公钥认证,若选择密码认证,ckman使用root用户安装,则需要root用户密码。
若选择公钥认证,不需要root密码,这里选择公钥认证方式,需要将ckman的公钥从.ssh目录复制一份id_rsa放到ckman的conf目录中,并且需要修改conf目录id_rsa的访问权限。
cp ~/.ssh/id_rsa /etc/ckman/conf/
cd /etc/ckman/conf/
chown ckman:ckman id_rsa
说明:配置完成,后面那些复杂配置暂不配置。
#点击创建
说明:创建报错,数据校验失败: host 172.21.243.83 get platform failed:
host: 172.21.243.83, cmd: uname -m: : open /etc/ckman/conf/id_rsa: no such file or directory
排查解决:公钥文件拷贝错了,删除conf目录公钥重新拷贝,已解决。
#点击创建
说明:clickhouse集群创建完成。
说明:集群列表显示集群,可点击进入集群。
#进入集群
进入集群后,可以看到有多个功能模块,包含监控集群、管理集群、表管理、会话管理、查询管理、设置。
监控集群
暂无数据可看,需完成安装配置Prometheus,采集clickhouse和zookeeper集群的Mertics监控点信息后可查看到监控数据。
管理集群
表管理
会话管理
查询管理
设置
3.4.2 Clickhouse目录文件
安装目录:cd /etc/clickhouse-server/
集群分片副本配置文件目录:/etc/clickhouse-server/config.d
3.4.2.1 users
cat users.xml
3.4.2.2 config
cat config.xml
3.4.2.3 metrika
cat metrika.xml
3.4.2.4 host
cat host.xml
3.4.2.5 custom
cat custom.xml
4.4.3 ckman修改ck集群默认用户密码登录
#Ckman界面修改默认用户密码
用户:default
修改默认密码:123456
#选一台节点连接集群
clickhouse-client --port=9000 --user=default --password=123456
3.5 Ckman客户端连接ck节点
#查询数据库
show databases;
3.6 在ckman上创建数据库和用户
3.6.1 创建数据库
#切换到查询管理模块-执行创建sql
CREATE DATABASE IF NOT EXISTS birept
说明:这条语句创建,只会在当前执行ck节点生成数据库,其它节点查不到数据库,
删除数据库重建。
#删除数据库
DROP DATABASE birept;
#创建数据库
CREATE DATABASE IF NOT EXISTS birept ON cluster clickhouse_test;
说明:ck集群3台节点上都能查到数据库:birept。
3.6.2 创建新账号
用户名:test
密码:test123
#访问权限(指定数据库)
说明:无表,暂不设置表权限。
#配置管理(保持默认配置)
#配额管理-用户高级配置(暂不设置)
说明:配置重启完成。
#查看ck用户
clickhouse-client --port=9000 --user=default --password=123456
show users;
说明:新账号创建成功。
3.6.3 新用户登录
clickhouse-client --port=9000 --user=test --password=test123456
说明:密码不正确,或者没有用户。(AUTHENTICATION_FAILED)
#排查
clickhouse-client --port=9000 --user=default --password=123456
查询用户表
SELECT * FROM system.users;
说明:表中有default和test用户信息,但host_ip字段值不同,test用户的host_ip字段填写了集群节点ip。
注意:在Ckman界面创建test用户时配置了允许登录地址ip。
查询权限表
SELECT * FROM system.grants;
SELECT * FROM system.grants WHERE user_name = 'test';
说明:字段grant_option
字段类型: UInt8
含义: 是否允许将权限再授予其他用户或角色。值为1表示允许再授予,值为0表示不允许。(不影响)
怀疑密码错误修改密码
用户:test
密码 :test123
clickhouse-client --port=9000 --user=test --password=test123
说明:发现还是连接不上。
然后尝试指定host连接
clickhouse-client --port=9000 --user=test --password=test123 --host=172.21.243.83
clickhouse-client --port=9000 --user=test --password=test123 --host=172.21.243.177
说明:指定ck集群节点ip,可以连接,由此推断,是因为在创建test用户时,配置了允许登录地址,填写了ip列表,所以在登录时必须指定ip。
3.7 监控部署
单点部署:172.21.243.108
#Clickhouse数据采集配置
cd /etc/clickhouse-server/config.d
这个是Ckman创建集群时,生成配置文件custom.xml里面自带的,不需要任何改动。
#查看metrics数据
http://172.21.243.83:9363/metrics
3.7.1 Prometheus
vim prometheus.yml
#开机启动
systemctl enable prometheus.service
#启动服务
systemctl start prometheus.service
#查看状态
systemctl status prometheus.service
#浏览器访问Prometheus Web
http://172.21.243.108:9090/targets?search=
3.7.2 Grafana
vim /usr/lib/systemd/system/grafana.service
#启动grafana
systemctl start grafana
#设置开机启动
systemctl enable grafana
#查看状态
systemctl status grafana
提示:启动正常, Active: active (running) 表示服务已成功启动。
#查看进程
Grafana默认使用的端口为3000,使用netstat命令验证端口监听状态:
netstat -nltp | grep 3000
3.7.2.1 访问Grafana
使用浏览器访问172.21.243.108:3000,即可看到grafana页面,默认用户名和密码都是admin,初次登录会提示修改默认的登录密码,若暂时不希望修改密码,可以点击Skip跳过。跳过后即可进入到Grafana主界面。
这里使用默认密码登录,修改默认密码,新密码为:123456。
数据源配置
配置路径为:Configuration-->Data sources-->Add data source-->Prometheus
选择Prometheus数据源进行配置,需要修改的配置参数有:
1> Name:数据源的名称,可以自定义,例如starrocks_monitor。
URL:Prometheus的web地址:http://172.21.243.108:9090
2> 完成后单击页面下方的Save&Test,如果显示Data source is working,即表示数据源可用。
配置DashBoard
导入grafana面板,可以从官网中找合适的面板,如果只使用clickhouse的内部监控,不基于exporter,ID为:14192的面板比较合适。
1> 下载模板
Grafana官网提供了DashBoard Clickhouse模版
下载地址为:https://grafana.com/grafana/dashboards/?search=clickhouse
模板名称:14192_rev4.json
2> 配置模板
点击左边的导航栏+号--> Import--> Upload Json File,将下载的json文件导入。
导入后,可以重命名为Dashboard,默认是Clickhouse。
同时,需要选择数据源,这里选择之前创建的Prometheus_bi报表_ck_无项目。点击Import,即完成导入。
访问Grafana CK监控
http://172.21.243.108:3000/d/thEkJB_Mz/clickhouse?orgId=1&refresh=30s
3.8 备份
tar -xzf clickhouse-backup-linux-amd64.tar.gz
#验证安装-查看版本
clickhouse-backup --version
#将安装目录拷贝到指定目录
cd /usr/local/apps/build/linux/amd64
cp clickhouse-backup /usr/local/bin/
#查看clickhouse-backup的默认配置项
clickhouse-backup default-config
#创建目录并创建配置文件
mkdir -p /etc/clickhouse-backup
cd /etc/clickhouse-backup
(解压后有个隐藏的配置文件,可以复制创建一个,也可以新创建一个)
clickhouse-backup default-config > /etc/clickhouse-backup/config.yml.bak (复制创建)
3.8.1 创建备份文件
clickhouse-backup备份需要创建一个config.yml配置文件,可在/etc/clickhouse-backup目录下创建该文件,该文件内容如下:
cd /etc/clickhouse-backup
vim config.yml
3.8.2 表导出导入测试
3.8.2.1 导出表结构
#导出bi测试环境bi_event数据-172.21.242.27
clickhouse-client --port=9000 --user=test --password=test123 -q "DESCRIBE TABLE
birept.bi_event" > bi_event.sql
3.8.2.2 导出表数据
先导出另一个bi报表测试环境的表数据,填充到这个CK集群来,因为自用(无项目)集群表暂没数据。导出bi测试环境bi_event表数据:172.21.242.27节点执行导出
#导出TabSeparatedWithNamesAndTypes格式文件(不可行)
clickhouse -u test -P test123 -q "SELECT * FROM birept.bi_event" --format
TabSeparatedWithNamesAndTypes > bi_event.tsv
#导出CSV格式文件(推荐)
clickhouse-client --port=9000 --user=test --password=test123 --query "SELECT * FROM birept.bi_event" --format CSV > bi_event20240829.csv
#查看导出文件
head -n 10 bi_event20240829.csv
说明:导出表数据到.csv文件成功。
3.8.2.3 导入数据
TabSeparatedWithNames格式文件导入(不好使)
cat bi_event.tsv | clickhouse-client --port=9000 --user=default --password=123456 --query "INSERT INTO birept.bi_event FORMAT TabSeparatedWithNames"
报错:ERROR: text "UInt64<TAB>Dat" is not like UInt64
说明:FORMAT TabSeparatedWithNames这种方式导出表数据文件存在问题,不好排查,尝试换个导出文件格式。
加载用Dbeaver导出的数据(不好使)
cat bi_event_202408290934.csv | clickhouse-client --port=9000 --user=default
--password=123456 --query "INSERT INTO birept.bi_event FORMAT TabSeparatedWithNames"
报错:
这个错误信息表明你的输入数据中包含了 DOS/Windows 风格的换行符(\r\n),而 TabSeparated 格式只支持 Unix 风格的换行符(\n)。因此,你需要将文件转换为 Unix 风格的换行符。
解决方法:使用 dos2unix 工具转换文件
安装:yum install dos2unix
转换:dos2unix bi_event_202408290934.csv
#执行导入数据到表
cat bi_event_202408290934.csv | clickhouse-client --port=9000 --user=default
--password=123456 --query "INSERT INTO birept.bi_event FORMAT TabSeparatedWithNames"
说明:执行正常。
#查看表验证数据
说明:导入120条正确,导入字段数据不正常,很多字段数据为空,估计是转化文件格式出了问题。
CSV格式文件导入(推荐)
clickhouse-client --port=9000 --user=default --password=123456 --query "INSERT INTO birept.bi_event FORMAT CSV" < bi_event20240829.csv
说明:执行导入命令正常。
#验证导入后表数据
说明:第二次导入csv格式文件数据后,表数据总条数240,第一次导入完成是120,数量正常。核对字段值正常。
3.8.2.4 备份表
在使用 clickhouse-backup 进行备份时,你通常需要备份的是本地表(Local Table),而不是分布式表(Distributed Table)。这是因为分布式表实际上是一个虚拟表,它并不存储实际的数据,而是作为查询多个节点上的本地表的一个入口。实际的数据存储在各个节点的本地表中。
备份策略
#备份本地表
本地表存储实际的数据,因此备份时应针对本地表进行。
如果你想备份整个数据库中的所有表,可以使用clickhouse-backup create命令而不指定具体的表。
#备份分布式表
分布式表本身不需要备份,因为它们只是视图,指向实际存储数据的本地表。
如果你需要备份某个分布式表对应的所有数据,你需要分别备份分布在各个节点上的本地表。
查看可以备份的表
clickhouse-backup tables
3.8.2.4.1 备份指定分布式表
clickhouse-backup create --tables birept.bi_event bi_event_20240829
说明:执行了两次备份操作,最后一次修改了config.yml文件,然后执行备份命令后输出的日志就精简了些,备份分布式表正常。
#查看备份文件
cd /data/clickhouse/backup
3.8.2.4.2 备份本地表
clickhouse-backup create --tables birept.bi_event_local bi_event_local_20240829
#查看备份目录
cd /data/clickhouse/backup
#查看已经生成的备份
clickhouse-backup list
说明:备份本地表,要在ck集群的每台节点上执行一遍备份。
#编写自动化脚本备份数据(暂没测试)
在每个节点上备份对应的本地表数据。你可以编写一个脚本来自动化这一过程。
下面是一个简单的Bash脚本示例,用于自动化备份分布式表指向的所有本地表数据:
#!/bin/bash
# 集群名称
CLUSTER="my_cluster"
# 数据库名称
DATABASE="birept"
# 分布式表名称
TABLE="bi_event"
# 获取集群中的所有节点信息
nodes=$(clickhouse -q "SELECT host_name FROM system.clusters WHERE cluster = '$CLUSTER';")
# 遍历每个节点并执行备份命令
for node in $nodes; do
echo "Backing up on node: $node"
# 假设每个节点上的本地表名称与分布式表相同
ssh user@$node "clickhouse-backup create --tables $DATABASE.$TABLE"
done
3.8.2.4.3 生成备份目录文件结构
#各目录的作用
3.8.2.5 恢复表
使用clickhouse-backup恢复数据涉及多个步骤,包括恢复元数据和实际数据。下面是详细的恢复操作步骤及说明。
- 点赞
- 收藏
- 关注作者
评论(0)