clickhouse-v24.1-离线部署

发布于:2024-09-18 ⋅ 阅读:(9) ⋅ 点赞:(0)

部署版本

数据库版本:24.1.1.2048

jdk版本:jdk8

4个文件(三个ck的包):

OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar

clickhouse-client-24.1.1.2048.x86_64.rpm

clickhouse-common-static-24.1.1.2048.x86_64.rpm

clickhouse-server-24.1.1.2048.x86_64.rpm

文件下载地址

百度云个人下载地址(可能失效):

链接: 百度网盘 请输入提取码 提取码: 2xy6

官网地址:

packages.clickhouse.com/rpm/stable/

阿里云地址:

clickhouse-rpm安装包下载_开源镜像站-阿里云

本次部署集群情况

三个节点的集群

副本设置了一分片三副本

检查环境

官方预构建的二进制文件通常针对 x86_64 进行编译,并利用 SSE 4.2 指令集,因此,除非另有说明,支持它的 CPU 使用将成为额外的系统需求。下面是检查当前 CPU 是否支持 SSE 4.2 的命令:

$ grep -q sse4_2 /proc/cpuinfo && echo "SSE 4.2 supported" || echo "SSE 4.2 not supported"

部署过程

网络配置

如果你部署的环境有端口访问限制,需要提前开通这些端口的访问权限

端口:8123 9000 9009(内部互相访问) 9181 9234 

cat > /etc/hosts <<EOF
10.1.1.5 bigdata01
10.1.1.6 bigdata02
10.1.1.7 bigdata03
EOF

修改本地的主机名,每个节点执行的主机名根据上面的网络设置进行修改

hostnamectl set-hostname 新主机名

eg:

hostnamectl set-hostname bigdata01

jdk安装

#上传到对应的目录,然后解压
tar -xf OpenJDK8U-jdk_x64_linux_hotspot_8u382b05.tar.gz -C /usr/local

# 配置环境变量
cat > /etc/profile.d/jdk.sh <<EOF
JAVA_HOME=/usr/local/jdk8u382-b05
CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
PATH=$PATH:$JAVA_HOME/bin
EOF

#配置生效
source /etc/profile.d/jdk.sh

ck安装

每个节点都要执行操作

#提前把这三个文件放到同一目录下面
#clickhouse-client-24.1.1.2048.x86_64.rpm
#clickhouse-common-static-24.1.1.2048.x86_64.rpm
#clickhouse-server-24.1.1.2048.x86_64.rpm
# 安装ck的三个包 (去掉keeper的组件,否则提示冲突)
yum -y install clickhouse-*


# 修改配置

# 修改数据、缓存存储位置
sed -i 's#var/lib/clickhouse#data/clickhouse#g' /etc/clickhouse-server/config.xml


# 创建存储目录
mkdir /data/clickhouse && chown -R clickhouse.clickhouse /data/clickhouse

#日志目录(非必须,如果启动提示文件不存在,再创建)
vim /var/log/clickhouse-server/clickhouse-server.log
vim /var/log/clickhouse-server/clickhouse-server.err.log

# 设置权限
chown clickhouse:clickhouse /var/log/clickhouse-server/clickhouse-server.log
chown clickhouse:clickhouse /var/log/clickhouse-server/clickhouse-server.err.log
chown clickhouse:clickhouse /usr/bin/clickhouse


# 配置文件的权限
chmod 644 /etc/clickhouse-server/config.xml


# 修改监听地址使远程可访问
cat > /etc/clickhouse-server/config.d/listen.xml <<EOF
<clickhouse>
  <listen_try>1</listen_try>
  <listen_host>0.0.0.0</listen_host>
</clickhouse>
EOF


#修改时区
cat > /etc/clickhouse-server/config.d/timezone.xml <<EOF
<clickhouse>
  <timezone>Asia/Shanghai</timezone>
</clickhouse>
EOF

修改keeper

注:每个节点server_id的值不一样,根据实际修改。该参数不能重复,每个节点唯一

注:单节点的raft_configuration参数也需要配置

修改 /etc/clickhouse-server/config.xml 主配置文件,在根节点 <clickhouse> 下添加配置。server_id 字段需要每个节点唯一。

#打开配置文件

vim /etc/clickhouse-server/config.xml

#根节点 <clickhouse> 标签下添加以下内容

<!-- 添加以下条目以允许通过网络接口进行外部通信。 -->
<listen_host>0.0.0.0</listen_host>

<!-- 指定实例启用 ClickHouse Keeper。更新每台服务器的<server_id>设置,node1为1、node2为2、node3为3。-->
<keeper_server>
  <tcp_port>9181</tcp_port>
  <server_id>1</server_id>
  <log_storage_path>/data/clickhouse/coordination/log</log_storage_path>
  <snapshot_storage_path>/data/clickhouse/coordination/snapshots</snapshot_storage_path>

  <coordination_settings>
    <operation_timeout_ms>10000</operation_timeout_ms>
    <session_timeout_ms>30000</session_timeout_ms>
    <raft_logs_level>warning</raft_logs_level>
    <force_sync>false</force_sync>
  </coordination_settings>

  <raft_configuration>
    <server>
      <id>1</id>
      <hostname>bigdata01</hostname>
      <port>9234</port>
    </server>
    <server>
      <id>2</id>
      <hostname>bigdata02</hostname>
      <port>9234</port>
    </server>
    <server>
      <id>3</id>
      <hostname>bigdata03</hostname>
      <port>9234</port>
    </server>
  </raft_configuration>
</keeper_server>

<!-- 指定实例所使用的 ClickHouse Keeper -->
<zookeeper>
  <node>
    <host>bigdata01</host>
    <port>9181</port>
  </node>
  <node>
    <host>bigdata02</host>
    <port>9181</port>
  </node>
  <node>
    <host>bigdata03</host>
    <port>9181</port>
  </node>
</zookeeper>

配置项目的作用:

coordination_settings 配置下的force_sync的作用:

force_sync 选项用于决定 ClickHouse Keeper 是否强制将数据同步到磁盘。在 ClickHouse Keeper 中,当客户端请求更新 ZooKeeper 的数据节点时,ClickHouse Keeper 会将这些更新写入内存缓冲区,并最终写入磁盘。force_sync 控制着这些更新何时被强制同步到磁盘。

修改宏变量

注:每个节点的shard、replica值不一样,根据实际修改

三个节点的副本值replica不同

本次的配置是1分片,3副本(一个数据块,在三个服务器上面存储分别存一份)

bigdata01


vim /etc/clickhouse-server/config.d/macros.xml

<clickhouse>
  <macros>
    <installation>ck_cluster</installation>
    <cluster>ck_cluster</cluster>
    <shard>1</shard>
    <replica>1</replica>
  </macros>
</clickhouse>

bigdata02


vim /etc/clickhouse-server/config.d/macros.xml

<clickhouse>
  <macros>
    <installation>ck_cluster</installation>
    <cluster>ck_cluster</cluster>
    <shard>1</shard>
    <replica>2</replica>
  </macros>
</clickhouse>

bigdata03


vim /etc/clickhouse-server/config.d/macros.xml

<clickhouse>
  <macros>
    <installation>ck_cluster</installation>
    <cluster>ck_cluster</cluster>
    <shard>1</shard>
    <replica>3</replica>
  </macros>
</clickhouse>

修改集群的分片、副本

三个节点操作一致

vim /etc/clickhouse-server/config.d/remote-servers.xml

<clickhouse>
  <default_on_cluster_name>ck_cluster</default_on_cluster_name>
  <default_replica_path>/clickhouse/tables/{cluster}/{shard}/{database}/{table}</default_replica_path>
  <default_replica_name>{replica}</default_replica_name>
  
  <remote_servers>
    <!-- User-specified clusters -->
    <ck_cluster replace="false">
    <shard>
      <internal_replication>true</internal_replication>
      <replica>
          <host>bigdata01</host>
          <port>9000</port>
          <user>default</user>
          <password>jM80NNij</password>
      </replica>
          <replica>
          <host>bigdata02</host>
          <port>9000</port>
          <user>default</user>
          <password>jM80NNij</password>
       </replica>
       <replica>
          <host>bigdata03</host>
          <port>9000</port>
          <user>default</user>
          <password>jM80NNij</password>
        </replica>
    </shard>
   </ck_cluster>
 </remote_servers>
</clickhouse>
  

用户密码

# 生成密码
PASSWORD=$(base64 < /dev/urandom | head -c8); echo "$PASSWORD"; echo -n "$PASSWORD" | sha256sum | tr -d '-'

#生成结果
jM80NNij
e377b4470304eadc7342f33ff6cfccc26f7888d46646d6956b7209d33a5f2fb1

#内容 - 建议放在某个配置文件中做留存,防止遗忘

<!--password  jM80NNij     e377b4470304eadc7342f33ff6cfccc26f7888d46646d6956b7209d33a5f2fb1 -->

#解释 
# 正常用来登录的密码
jM80NNij
# 配置文件中配置的密码
e377b4470304eadc7342f33ff6cfccc26f7888d46646d6956b7209d33a5f2fb1

打开sql管理能力

vim /etc/clickhouse-server/users.xml
# 编辑该配置项目,打开sql管理能力 
<access_management>1</access_management>

添加用户

adminuser帐号配置:

vim /etc/clickhouse-server/users.d/adminuser.xml


<clickhouse>
  <users>
    <adminuser>
      <!--password  jM80NNij     e377b4470304eadc7342f33ff6cfccc26f7888d46646d6956b7209d33a5f2fb1 -->
        <password_sha256_hex>e377b4470304eadc7342f33ff6cfccc26f7888d46646d6956b7209d33a5f2fb1</password_sha256_hex>
        <!-- 打开 adminuser 用户远程连接 -->
        <networks>
            <ip>::/0</ip>
        </networks>
        <quota>default</quota>
        <profile>default</profile>
    </adminuser>
  </users>
</clickhouse>

用户名:adminuser

密码:jM80NNij

default帐号配置:

# 添加密码
sed -i 's#<password></password>#<password_sha256_hex>e377b4470304eadc7342f33ff6cfccc26f7888d46646d6956b7209d33a5f2fb1</password_sha256_hex>#' /etc/clickhouse-server/users.xml

用户名:default

密码:jM80NNij

启动服务

systemctl start clickhouse-server.service
systemctl status clickhouse-server.service
systemctl enable clickhouse-server.service

查看实时日志

journalctl -u clickhouse-server.service -f

验证

启动 ClickHouse 并验证每个 Keeper 实例是否正在运行。在每台服务器上执行以下命令。如果 Keeper

正在运行且运行正常,则该命令将返回: ruok``imok

# echo ruok | nc localhost 9181; echo
imok

如果没有nc 命令

telnet bigdata0x 9181
# eg  telnet bigdata01 9181

数据库有一个名为zookeeper的表,其中包含 ClickHouse Keeper 实例的详细信息。让我们看一下表格:system.zookeeper

先登录:

clickhouse-client --password="jM80NNij"

SELECT *
FROM system.zookeeper
WHERE path IN ('/', '/clickhouse');

# 查看集群
SHOW CLUSTERS;


#  查看集群
SELECT
    cluster,
    shard_num,
    replica_num,
    host_name,
    is_local,
    user,
    database_shard_name,
    database_replica_name
FROM system.clusters

查看ClickhouseKeeper的日志

clickhouse-keeper dump /path/to/changelog_1_100000.bin

补充系统日志表的保留时间

查看所有表以及相关的信息

SELECT 
    sum(rows) AS `总行数`,
    formatReadableSize(sum(data_uncompressed_bytes)) AS `原始大小`,
    formatReadableSize(sum(data_compressed_bytes)) AS `压缩大小`,
    round((sum(data_compressed_bytes) / sum(data_uncompressed_bytes)) * 100, 0) AS `压缩率`,
    `table` AS `表名`
FROM system.parts where database = 'system' group by `table`;

修改的语句

ALTER TABLE `system`.metric_log MODIFY TTL event_date + toIntervalDay(15);
ALTER TABLE `system`.trace_log MODIFY TTL event_date + toIntervalDay(15);
ALTER TABLE `system`.query_log MODIFY TTL event_date + toIntervalDay(15);
ALTER TABLE `system`.asynchronous_metric_log MODIFY TTL event_date + toIntervalDay(15);

# 查看创建语句是否成功
SHOW CREATE  `system`.metric_log;

B站视频

【clickhouse-v24.1-离线集群部署】 https://www.bilibili.com/video/BV1yNpieREL2/?share_source=copy_web&vd_source=54b8e98ca037df7d40df4e66e8fae702


网站公告

今日签到

点亮在社区的每一天
去签到