记录一次对clickhouse的版本升级工作,以及从zookeeper 迁移到clickhouse keeper的试验
首先,选择clickhouse的版本
1.如果对版本有比较严格的要求,或者希望使用某种特性,可以去官网文档查看变更日志
https://clickhouse.com/docs/en/whats-new/changelog/
2.下载对应的版本文件,下载路径 https://packages.clickhouse.com/rpm/lts/ lts版本算是比较稳定的企业使用版本
clickhouse-common-static-dbg-22.3.9.19.x86_64.rpm
clickhouse-server-22.3.9.19.x86_64.rpm
clickhouse-client-22.3.9.19.x86_64.rpm
clickhouse-common-static-22.3.9.19.x86_64.rpm
3.备份文件(集群的每台机器都要备份)
3.1 备份数据文件
mkdir /opt/clickhouse_bak
cp -r /opt/clickhouse/* /opt/clickhouse_bak/
3.2 备份配置文件
mkdir /etc/clickhouse-server-bak
mkdir /etc/clickhouse-client-bak
cp -r /etc/clickhouse-client/* /etc/clickhouse-client-bak/
cp -r /etc/clickhouse-server/* /etc/clickhouse-server-bak/
注明:我这里的配置文件是指config.xml ,users.xml, shard.xml(分片配置),将自定义配置的地方,都给备份一次
3.3 关闭clickhouse服务
systemctl stop clickhouse-server.service
确定关闭完成,查看服务状态
systemctl status clickhouse-server.service
进入安装包所在路径
cd /opt/clickhouse
执行rpm安装命令
rpm -Uvh *.rpm
重新安装完成,将备份的配置文件归位
rm -rf /ect/clickhouse-server/*
mv /etc/clickhouse-server-bak/* /ect/clickhouse-server/
给clickhouse用户授权
chown -R clickhouse:clickhouse /etc/clickhouse-server/
配置文件重新配置,不同版本有不同的调优方式文档
重启clickhouse
systemctl daemon-reload
systemctl start clickhouse-server.service
注明:如果是有副本的集群,可实现不停机平滑升级(已经验证查询功能能够正常支持,写功能需要有一定断路器策略)
比如 A,B互为副本一分片,C,D互为副本一分片,停机升级时,停机A,C,保留B,D正常支撑,A,C升级完成后,停机B,D完成升级。
1.准备配置文件
根据官网提示,在shard.xml(分片副本配置文件)新增配置 clickhouse_keeper_server,配置文件如下:
true
1
node1
9000
node2
9001
true
1
node3
9003
node4
9000
01
01
9181
1
/opt/clickhouse/keeper/log
/opt/clickhouse/keeper/snapshots
10000
30000
trace
1
node1
9444
2
node2
9444
3
node3
9444
4
node4
9444
node1
9181
node2
9181
node3
9181
node4
9181
::/0
10000000000
0.01
lz4
config.xml 新增引入配置:
/etc/clickhouse-server/config.d/shard.xml
迁移步骤如下
执行命令
/usr/bin/clickhouse-keeper-converter --zookeeper-logs-dir /opt/zookeeper-3.4.6/dataLogDir/version-2 --zookeeper-snapshots-dir /opt/zookeeper-3.4.6/dataDir/version-2 --output-dir /opt/clickhouse/keeper/snapshots/
注明:本例中,是使用clickhouse-keeper 与clickhouse节点一体的方式启动,如果需要单独配置clickhouse-keeper,需要用命令单独启动
参考:https://clickhouse.com/docs/en/operations/clickhouse-keeper