clickhouse高可用环境搭建
环境说明
操作系统版本:centos 7.6 1810
clickhouse 版本:20.9.3.45-2
zookeeper 版本:3.4.5
1. 下载 rpm 包
https://packagecloud.io/altinity/clickhouse
下载:
clickhouse-client-20.9.3.45-2.noarch.rpm
clickhouse-common-static-20.9.3.45-2.x86_64.rpm
clickhouse-server-20.9.3.45-2.noarch.rpm
2. clickhouse + zookeeper 节点分配
clickhouse 节点分配
主机 | 分片 | 副本 |
---|---|---|
hostname01 | 1 | |
hostname02 | 1 | |
hostname03 | 1 | |
hostname04 | 1 | |
hostname05 | 1 |
zookeeper 节点分配
主机 | node |
---|---|
hostname01 | 1 |
hostname02 | 1 |
hostname03 | 1 |
hostname04 | 1 |
hostname05 | 1 |
3. zookeeper 安装包分发到各个节点,安装集群,启动集群。【略】
4. clickhouse 集群安装
4.2 CH安装包分发各个节点
scp -r *.rpm root@hostname:`pwd`
备注:安装 rpm 包路径:/opt/software/clickhouse
4.2 安装 rpm 包
rpm -ivh *
备注: 每个节点都要执行
4.3 修改配置文件
默认安装目录
# 配置文件目录
/etc/clickhouse-server
# 服务启动脚本
/etc/init.d/clickhouse-server
# 数据目录
/var/lib/clickhouse
# 日志目录
/var/log/clickhouse-server
4.3.1 添加临时全局 config.xml 配置文件【无需重启服务】
- cd /etc/clickhouse-server/config.d # 此目录在clickhouse 服务启动后生成。
- 编辑 vi myconfig.xml
添加如下内容:
<?xml version="1.0"?>
<yandex>
<logger>
<!-- #修改日志文件目录 -->
<level>trace</level>
<log>/home/clickhouse/log/clickhouse-server/clickhouse-server.log</log>
<errorlog>/home/clickhouse/log/clickhouse-server/clickhouse-server.err.log</errorlog>
</logger>
<!-- # 修改默认 tcp 端口,如果 tcp 端口被占用,服务无法启动 -->
<tcp_port>9003</tcp_port>
<!-- # 修改数据目录 -->
<path>/home/clickhouse/data/clickhouse/</path>
<!-- # 修改数据目录 -->
<tmp_path>/home/clickhouse/data/clickhouse/tmp/</tmp_path>
<!-- # 修改数据目录 -->
<user_files_path>/home/clickhouse/data/clickhouse/user_files/</user_files_path>
<!-- # 修改数据目录 -->
<access_control_path>/home/clickhouse/data/clickhouse/access/</access_control_path>
<!-- # clickhouse 集群配置 -->
<remote_servers incl="clickhouse_remote_servers" />
<!-- # zookeeper 集群配置 -->
<zookeeper incl="zookeeper-servers" optional="true" />
<macros incl="macros" optional="true" />
<!-- # 修改 schemas 格式化目录 -->
<format_schema_path>/home/clickhouse/data/clickhouse/format_schemas/</format_schema_path>
<!-- # 添加集群配置文件 -->
<include_from>/etc/clickhouse-server/config.d/metrika.xml</include_from>
<listen_host>::</listen_host>
</yandex>
4.3.2 新增临时users.xml 配置文件 【无需重启服务】
- cd /etc/clickhouse-server/users.d
- 添加用户密码配置文件
vi myusers.xml
添加如下内容 :
<?xml version="1.0"?>
<yandex>
<users>
<default>
<!-- 此项要与默认 user.xml 里面的一致,否则密码报错 -->
<password>passwd</password>
<!-- <password_sha256_hex>859647933036763e40e61f8438ab1a5229f7b7a3d7e239444bac97796e4fb24d5</password_sha256_hex> -->
<networks incl="networks" replace="replace">
<ip>::/0</ip>
</networks>
<profile>default</profile>
<quota>default</quota>
</default>
</users>
</yandex>
3. 设置密文密码,对密码passwd进行SHA256加密
echo -n passwd | openssl dgst -sha256
输出:859e43935035763e40e61f428ab1a5221f7b2a3d7e239444bac97766e4fb27d5
4.3.3 创建集群配置信息文件 metrika.xml
vi metrika.xml
添加一下内容:
<?xml version="1.0"?>
<yandex>
<!-- clickhouse 集群分片副本配置,两分片两副本 ,两分片,每个分片有两个副本-->
<clickhouse_remote_servers>
<mycluster>
<!-- 分片1 -->
<shard>
<!-- 写入分片的权重,权重越大,数据写入该分片的概率会越大 -->
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>hostname02</host>
<port>9003</port>
<user>default</user>
<password>passwd</password>
</replica>
<replica>
<host>hostname04</host>
<port>9003</port>
<user>default</user>
<password>passwd</password>
</replica>
</shard>
<!-- 分片2 -->
<shard>
<!-- # 写入分片的权重,权重越大,数据写入该分片的概率会越大 -->
<weight>1</weight>
<internal_replication>true</internal_replication>
<replica>
<host>hostname03</host>
<port>9003</port>
<user>default</user>
<password>passwd</password>
</replica>
<replica>
<host>hostname05</host>
<port>9003</port>
<user>default</user>
<password>passwd</password>
</replica>
</shard>
</mycluster>
</clickhouse_remote_servers>
<!-- zookeeper 相关配置 -->
<zookeeper-servers>
<node index="1">
<host>hostname01</host>
<port>2181</port>
</node>
<node index="2">
<host>hostname02</host>
<port>2181</port>
</node>
<node index="3">
<host>hostname03</host>
<port>2181</port>
</node>
<node index="4">
<host>hostname04</host>
<port>2181</port>
</node>
<node index="5">
<host>hostname05</host>
<port>2181</port>
</node>
</zookeeper-servers>
<!-- macros -->
<!-- 应用于复制表,【04,hostname04】分片号相同,副本号在每台机器上不能相同 -->
<macros>
<shard>04</shard>
<replica>hostname04</replica>
</macros>
<!-- 压缩算法 lz4 压缩算法lz4压缩比zstd快, 但更占磁盘 -->
<clickhouse_compression>
<case>
<min_part_size>10000000000</min_part_size>
<min_part_size_ratio>0.01</min_part_size_ratio>
<method>lz4</method>
</case>
</clickhouse_compression>
</yandex>
4.4 配置文件分发
scp -r config.xml users.xml metrika.xml root@hostname03:`pwd`
scp -r config.xml users.xml metrika.xml root@hostname04:`pwd`
scp -r config.xml users.xml metrika.xml root@hostname05:`pwd`
备注:修改 metrika.xml 的标签:macros 的值
4.4 服务启动
sudo systemctl start clickhouse-server
sudo systemctl stop clickhouse-server
或者
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
查看server端服务开启/关闭状态
service clickhouse-server status
4.5 数据库连接
clickhouse-client -h hostname --port 9003 -u default --password password
备注: 连接端口默认 9000,修改端口要指定连接端口
5. 卸载:
(1)yum list installed | grep clickhouse
(2)yum remove -y clickhouse-common-static
(3)yum remove -y clickhouse-server-common
(4)rm -rf /var/lib/clickhouse
(5)rm -rf /etc/clickhouse-*
(6)rm -rf /var/log/clickhouse-server
默认安装目录:/etc/clickhouse-server
参考:https://blog.csdn.net/a13568hki/article/details/108329748