Clickhouse 生产集群部署(Centos 环境)

文章目录

  • 机器环境配置
  • 安装 JDK 8
  • 安装 zookeeper
  • Clickhouse 集群安装
    • rpm 包离线安装
    • 修改全局配置
    • zookeeper配置
    • Shard和Replica设置
    • image.png添加macros配置
    • 启动 clickhouse
      • 启动 10.82.46.135 clickhouse server
      • 启动 10.82.46.163 clickhouse server
      • 启动 10.82.46.218 clickhouse server
  • 验证
    • 创建集群数据库
    • 创建表并写入数据
    • 验证集群高可用

机器环境配置

三台 centos 机器, 部署 1分片3副本 clickhouse 集群

10.82.46.135
10.82.46.163
10.82.46.218

每一台都要配置

1. 关闭selinux
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/configsetenforce 02. 关闭防火墙
systemctl stop firewalld.service #停止firewallsystemctl disable firewalld.service #禁止firewall开机启动systemctl mask firewalldsystemctl stop firewalldyum remove firewalld3. 配置系统打开文件数限制
vi  /etc/security/limits.conf #文件句柄数量的配置* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072vi /etc/security/limits.d/20-nproc.conf* soft nofile 65536* hard nofile 65536* soft nproc 131072* hard nproc 131072

安装 JDK 8

每一台都要安装 JDK

yum install java-1.8.0-openjdk.x86_64 java-1.8.0-openjdk-devel.x86_64vi /etc/profileexport JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.412.b08-1.el7_9.x86_64
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/binsource /etc/profileecho $JAVA_HOME
echo $CLASSPATH
echo $PATH

安装 zookeeper

zookeeper默认使用2181端口,集群模式还会用到2888、3888端口,建议zookeeper部署在内网环境中,服务器上关闭防火墙,分别在三台服务器上操作。

wget https://archive.apache.org/dist/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz
tar -zxvf apache-zookeeper-3.7.1-bin.tar.gz -C /usr/local/
cd /usr/local/apache-zookeeper-3.7.1-bin/
cp conf/zoo_sample.cfg conf/zoo.cfgmkdir -p /data/zookeepervim conf/zoo.cfg# 默认端口 8080 可能被占用
admin.serverPort=8888
# zookeeper 数据存储地址
dataDir=/data/zookeeper
# zookeeper 集群地址
server.1=10.82.46.135:2888:3888
server.2=10.82.46.163:2888:3888
server.3=10.82.46.218:2888:3888# 三台机 id
touch /data/zookeeper/myid
echo 1 > /data/zookeeper/myid
echo 2 > /data/zookeeper/myid
echo 3 > /data/zookeeper/myidexport ZK_HOME=/usr/local/apache-zookeeper-3.7.1-bin# 启动
./bin/zkServer.sh start# 查看日志
tail -f logs/zookeeper-root-server-iov-bigdata-autodrive-prod01.out# 停止
./bin/zkServer.sh stop# 查看状态
./bin/zkServer.sh status

Clickhouse 集群安装

rpm 包离线安装

1. 安装依赖包
yum install -y libtool *unixODBC*2. 分别下载client,static,static-dbg,keeper-dbg和server五个安装包,五个包的版本要一致,这里以23.3.2.37版本为例,把下载的五个包放到/usr/local/src 目录下。
wget https://packages.clickhouse.com/rpm/stable/clickhouse-client-23.3.2.37.x86_64.rpmwget https://packages.clickhouse.com/rpm/stable/clickhouse-common-static-23.3.2.37.x86_64.rpmwget https://packages.clickhouse.com/rpm/stable/clickhouse-server-23.3.2.37.x86_64.rpm3. 执行安装,如果说我们的机器上有旧版本的 clickhouse,该命令会将旧版本升级为我们当前安装的版本,期间会为我们创建一个 default 用户,我们需要输入default 密码
rpm -Uvh --replacepkgs clickhouse-common-static-23.3.2.37.x86_64.rpm clickhouse-client-23.3.2.37.x86_64.rpm clickhouse-server-23.3.2.37.x86_64.rpm

目录说明

  • /etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等
  • /etc/clickhouse-client:客户端配置,包括conf.d文件夹和config.xml文件
  • /var/lib/clickhouse:默认的数据存储目录,建议修改路径到大容量磁盘
  • /var/log/clickhouse-server:默认保存日志的目录,建议修改路径到大容量磁盘

新建存储目录

mkdir -p /data/clickhouse #数据存储目录mkdir -p /data/clickhouse/log #日志存放目录修改目录权限:chown clickhouse:clickhouse /data/clickhouse -Rchown clickhouse:clickhouse /data/clickhouse/log -Rchmod 755 /data/clickhouse -Rchmod 755 /data/clickhouse/log -R

设置数据库密码,默认用户名是:default

cp /etc/clickhouse-server/users.xml /etc/clickhouse-server/users.xml.bakvi /etc/clickhouse-server/users.xml<password>123456</password>:wq! #保存退出

修改全局配置

修改3台服务器ClickHouse配置文件 /etc/clickhouse-server/config.xml

cp /etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml.bak  #备份

修改全局配置信息
vi /etc/clickhouse-server/config.xml

<timezone>Asia/Shanghai</timezone> <!-- #修改时区 --><listen_host>::</listen_host> <!-- #开启外部访问 --><path>/data/clickhouse/</path> <!-- #修改数据存放路径,默认是<path>/var/lib/clickhouse</path> --><level>information</level>   <!-- # 默认 trace --><log>/data/clickhouse/log/clickhouse-server.log</log><errorlog>/data/clickhouse/log/clickhouse-server.err.log</errorlog><size>1000M</size><count>10</count><!-- <max_open_files>1048576</max_open_files> #文件句柄数量的配置 --><http_port>8123</http_port> <!-- #http默认端口 --><tcp_port>9000</tcp_port> <!-- #tcp默认端口 --><max_concurrent_queries>4096</max_concurrent_queries>  <!-- #限制的是活跃查询的数量,是对正在执行或排队等待执行的查询进行限制 --><max_connections>4096</max_connections> <!-- #限制的是客户端连接的数量,是对同时与 ClickHouse 建立的连接进行限制 -->:wq! #保存退出

zookeeper配置

zookeeper 不一定要和ck的节点安装在同一台机器上,只要ck的节点能够访问zk即可。

<zookeeper><node><host>10.82.46.135</host><port>2181</port></node><node><host>10.82.46.163</host><port>2181</port></node><node><host>10.82.46.218</host><port>2181</port></node></zookeeper>

image.png

Shard和Replica设置

这里使用 1分片3副本演示

<perftest_1shards_3replicas>   <!-- #分片名称,自定义 --><shard><internal_replication>true</internal_replication>  <!--#只写一个副本,其他副本通过zookeeper进行同步,保证数据一致性 --><replica><host>10.82.46.135</host><port>9000</port></replica><replica><host>10.82.46.163</host><port>9000</port></replica><replica><host>10.82.46.218</host><port>9000</port></replica></shard>
</perftest_1shards_3replicas>

image.png添加macros配置

<macros><!-- #分片号3个节点都一样 --><shard>01</shard>   <!-- #副本名称,3个节点不能相同,填写各自的ip地址 --><replica>10.82.46.135</replica>  <!-- <replica>10.82.46.163</replica> --><!-- <replica>10.82.46.218</replica> -->
</macros>

启动 clickhouse

启动命令

systemctl start clickhouse-serversystemctl status clickhouse-serversystemctl stop clickhouse-serversystemctl restart clickhouse-serversystemctl enable clickhouse-server

启动 10.82.46.135 clickhouse server

image.png
进入 local 数据库控制台,查看集群(perftest_1shards_3replicas)信息,密码就是 rpm 安装的时候输入的密码

clickhouse-client --host 10.82.46.135 --port=9000select * from system.clusters where cluster = 'perftest_1shards_3replicas';SELECT * FROM system.zookeeper WHERE path = '/clickhouse';select * from system.macros;

image.png

启动 10.82.46.163 clickhouse server

image.png
进入 local 数据库控制台,查看集群(perftest_1shards_3replicas)信息,密码就是 rpm 安装的时候输入的密码

clickhouse-client --host 10.82.46.163 --port=9000select * from system.clusters where cluster = 'perftest_1shards_3replicas';SELECT * FROM system.zookeeper WHERE path = '/clickhouse';select * from system.macros;

image.png

启动 10.82.46.218 clickhouse server

进入 local 数据库控制台,查看集群(perftest_1shards_3replicas)信息,密码就是 rpm 安装的时候输入的密码

clickhouse-client --host 10.82.46.218 --port=9000select * from system.clusters where cluster = 'perftest_1shards_3replicas';SELECT * FROM system.zookeeper WHERE path = '/clickhouse';select * from system.macros;

验证

创建集群数据库

在一台机器上执行创建命令:

CREATE DATABASE db_test_01 ON CLUSTER perftest_1shards_3replicas;

集群安装正常的话,在其他两台机器上 show databases;应该也可以看到这个数据库:
image.png

创建表并写入数据

在其中一台机器上执行:

# 创建集群表
CREATE TABLE db_test_01.tb_test_01 ON CLUSTER 'perftest_1shards_3replicas'
(`id` Int64,`p` Int16
)
ENGINE = ReplicatedMergeTree( '/clickhouse/tables/{shard}/tb_test_01', '{replica}')
PARTITION BY p
ORDER BY id;# 写入数据
INSERT INTO db_test_01.tb_test_01 VALUES(111,111);INSERT INTO db_test_01.tb_test_01 VALUES(222,222);INSERT INTO db_test_01.tb_test_01 VALUES(333,333);INSERT INTO db_test_01.tb_test_01 VALUES(444,444);

在其他节点上查看数据:

select * from db_test_01.tb_test_01;

image.png

验证集群高可用

关闭其中一个节点(10.82.46.135),模拟节点宕机,在另外的节点上写入数据:
systemctl stop clickhouse-server
在另外的节点上写入数据:

INSERT INTO db_test_01.tb_test_01 VALUES(555,555);

重新启动节点(10.82.46.135),查看数据表,发现数据已经同步过来,验证成功:

systemctl start clickhouse-serverclickhouse-client --host 10.82.46.135 --port=9000select * from db_test_01.tb_test_01;

image.png
删库跑路

drop database db_test_01 on cluster perftest_1shards_3replicas;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/51481.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《InheriBT行为树》For Unity

InheriBT: Unity Editor中的行为树编辑框架 行为树&#xff08;Behavior Tree&#xff09;是一种广泛应用于人工智能&#xff08;AI&#xff09;领域的决策模型&#xff0c;特别是在游戏开发中。行为树通过分层结构和节点的组合&#xff0c;实现了复杂行为的简洁表达。然而&am…

CPU350% JVM GC频繁并GC不掉EXCEL导出

背景&#xff1a; 有个Excel导出的需求&#xff0c;测试的时候&#xff0c;只要连续导出大量的数据就会导致FAT机器反请求反应迟钝&#xff0c;甚至卡死&#xff0c;无法恢复。 排查&#xff1a; 1 跳板机跳到机器上&#xff0c;查看 项目 ipd 执行ps -ef | grep 项目名称.j…

虚拟机Ubuntu20.04 利用串口调试机械臂

虚拟机Ubuntu20.04 利用串口调试机械臂 串口库问题 由于机械臂使用的是串口进行驱动控制&#xff0c;在python中相关的串口库为serial和pyserial两个&#xff0c;这里我曾踩过雷同时安装了serial与pyserial两个库&#xff0c;导致报错如下所示&#xff1a; AttributeError: m…

数据结构:(1)线性表

一、基本概念 概念&#xff1a;零个或多个数据元素的有限序列 元素之间是有顺序了。如果存在多个元素&#xff0c;第一个元素无前驱&#xff0c;最后一个没有后继&#xff0c;其他的元素只有一个前驱和一个后继。 当线性表元素的个数n&#xff08;n>0&am…

使用Spring Boot与Spire.Doc实现Word文档的多样化操作

​ 博客主页: 南来_北往 系列专栏&#xff1a;Spring Boot实战 前言 使用Spring Boot与Spire.Doc实现Word文档的多样化操作具有以下优势&#xff1a; 强大的功能组合&#xff1a;Spring Boot提供了快速构建独立和生产级的Spring应用程序的能力&#xff0c;而Spire.Doc则…

OSError: You are trying to access a gated repo.解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。现为CSDN博客专家、人工智能领域优质创作者。喜欢通过博客创作的方式对所学的…

『 Linux 』用户态与内核态的转换机制及信号检测时机

文章目录 用户态与内核态进程地址空间操作系统的本质 信号的处理时机 用户态与内核态 进程在执行代码的过程中代码必定涉及用户代码,库函数代码及操作系统内核代码; 以简单的printf()函数为例,该函数必定为先执行用户的代码即知道需要调用printf()函数,再执行库(如libc)中的代码…

Java线程同步与通信:wait(), notify(), notifyAll(), sleep()

Java线程同步与通信&#xff1a;wait&#xff08;&#xff09;, notify&#xff08;&#xff09;, notifyAll&#xff08;&#xff09;, sleep&#xff08;&#xff09; 1. wait()2. notify()3. notifyAll()4. sleep()4、总结 &#x1f496;The Begin&#x1f496;点点关注&…

一文带你读懂TCP

文章目录 1 TCP协议1.1 TCP 基础1.1.1 TCP 特性1.2.2 TCP连接数 1.2 TCP 头1.2.1 TCP 头格式1.2.2 MTU&#xff0c;MSS&#xff0c;分片传输 1.3 TCP 连接三路握手1.4 TCP 断开四次挥手1.5 SYN攻击和防范1.6 重传机制1.6.1 超时重传1.6.2 快速重传1.6.3 SACK 1.7 滑动窗口1.8 流…

Linux基础复习(二)

前言 本文介绍了一下Linux命令行基本操作及网络配置 一、 命令行提示含义 [当前用户主机名 工作目录]$ 若当前用户是root&#xff0c;则最后一个字符为# 否则&#xff0c;最后一个字符为$ 二、常用Linux命令及其解释 修改主机名 一般在创建一台主机后会使用hostname相关命…

在生信分析中大家需要特别注意的事情​

在生信分析中大家需要特别注意的事情 标准的软件使用和数据分析流程 1. 先看我的b站教学视频 2. 先从我的百度网盘把演示数据集下载下来&#xff0c;先把要运行的模块的演示数据集先运行一遍 3. 前两步都做完了&#xff0c;演示数据集也运行成功了&#xff0c;并且知道了软件…

ajax请求成功但不执行success-function回调函数

目录 一、问题分析 二、处理问题 一、问题分析 在测试员工管理系统的登录和注册代码时&#xff0c;登录一切正常&#xff0c;就是注册成功后没有跳转页面&#xff0c;后面发现是success-function回调函数没有正常执行。原因主要是前端和后端交流的数据格式不一致&#xff0c;…

【C++BFS算法 二分查找】2812. 找出最安全路径

本文涉及知识点 CBFS算法 C二分查找 LeetCode2812. 找出最安全路径 给你一个下标从 0 开始、大小为 n x n 的二维矩阵 grid &#xff0c;其中 (r, c) 表示&#xff1a; 如果 grid[r][c] 1 &#xff0c;则表示一个存在小偷的单元格 如果 grid[r][c] 0 &#xff0c;则表示一…

Windows配置AirSim过程(学习过程)

一、概述 因为需要在虚幻引擎当中使用AirSim&#xff0c;在Windows系统上进行操作&#xff0c;根据官方网站的操作过程&#xff0c;进行了配置&#xff0c;这里作为自己配置过程的记录。 二、具体过程 &#xff08;一&#xff09;系统版本 操作系统是Windows11&#xff0c;Ai…

昇思MindSpore 应用学习-RNN实现情感分类-CSDN

RNN实现情感分类 AI代码解析 概述 情感分类是自然语言处理中的经典任务&#xff0c;是典型的分类问题。本节使用MindSpore实现一个基于RNN网络的情感分类模型&#xff0c;实现如下的效果&#xff1a; 输入: This film is terrible 正确标签: Negative 预测标签: Negative输入…

HALCON如何创建本地函数

HALCON中有本地函数(.hdev)、外部函数(HDevelop函数文件.hdvp)和库函数(.hdpl) 本地函数(.hdev)&#xff1a;创建后仅在当前程序文件中使用&#xff1b; 外部函数(HDevelop函数文件.hdvp)&#xff1a;创建后可以在其他程序文件中复用&#xff0c;默认保存在…/ procedures/下…

vue实现滚动条下滑时隐藏导航栏,上滑时显示导航栏

效果展示 思路 监听滚动事件&#xff0c;记录上次的滚动距离&#xff0c;与最新滚动距离做对比&#xff0c;如果为正&#xff0c;说明滚动距离距顶值scrollTop变大&#xff0c;用户正在向下滚动页面&#xff0c;此时隐藏&#xff0c;反之则反&#xff0c;隐藏就是top值给他负导…

【C++语言】C++11新特性(1)

一、统一的列表初始化 1.1 {} 初始化 在C98中&#xff0c;标准允许使用花括号{}对数组或者结构体元素进行统一的列表初始值设定。比如&#xff1a; struct Point {int _x;int _y; };int main() {int array1[] { 1, 2, 3, 4, 5 };int array2[5] { 0 };Point p { 1, 2 };ret…

【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 项目排期安排(200分) - 三语言AC题解(Python/Java/Cpp)

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员 ✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解 💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导 👏 感谢大家的订阅➕ 和 喜欢💗 🍿 最新华为OD机试D卷目录,全、新、准,题目覆盖率达 95% 以上,支持题目在线…

C++使用MD5对字符串加密,获取文件的MD5值(附完整源码)

目录 1、为什么要使用MD5? 2、开源MD5类 3、获取字符串MD5值的MD5String接口封装 4、获取文件MD5值的MD5File接口封装 5、最后 C++软件异常排查从入门到精通系列教程(专栏文章列表,欢迎订阅,持续更新...)https://blog.csdn.net/chenlycly/article/details/125529931C…