-- rpm包地址
https://packagecloud.io/Altinity/clickhouse
在我们安装的软件中包含这些包:
clickhouse-client
包,包含 clickhouse-client 应用程序,它是交互式ClickHouse控制台客户端。clickhouse-common
包,包含一个ClickHouse可执行文件。clickhouse-server
包,包含要作为服务端运行的ClickHouse配置文件。总共包含四个RPM包,
clickhouse-client-19.17.4.11-1.el7.x86_64.rpm
clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm
clickhouse-server-19.17.4.11-1.el7.x86_64.rpm
clickhouse-server-common-19.17.4.11-1.el7.x86_64.rpm
尖叫提示:如果安装过程中,报错:依赖检测失败,表示缺少依赖包
可以先手动安装 libicu-50.2-4.el7_7.x86_64.rpm依赖包
系统要求
ClickHouse可以在任何具有x86_64,AArch64或PowerPC64LE CPU架构的Linux,FreeBSD或Mac OS X上运行。虽然预构建的二进制文件通常是为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"
SSE 4.2 supported
要在不支持SSE 4.2或具有AArch64或PowerPC64LE体系结构的处理器上运行ClickHouse,应该通过源构建ClickHouse进行适当的配置调整。
安装RPM包
## 将rpm包上传至/opt/software目录下
## 执行如下命令进行安装
[root@cdh06 software]# rpm -ivh *.rpm
错误:依赖检测失败:
libicudata.so.50()(64bit) 被 clickhouse-common-static-19.17.4.11-1.el7.x86_64 需要
libicui18n.so.50()(64bit) 被 clickhouse-common-static-19.17.4.11-1.el7.x86_64 需要
libicuuc.so.50()(64bit) 被 clickhouse-common-static-19.17.4.11-1.el7.x86_64 需要
libicudata.so.50()(64bit) 被 clickhouse-server-19.17.4.11-1.el7.x86_64 需要
libicui18n.so.50()(64bit) 被 clickhouse-server-19.17.4.11-1.el7.x86_64 需要
libicuuc.so.50()(64bit) 被 clickhouse-server-19.17.4.11-1.el7.x86_64 需要
## 上面安装报错,缺少相应的依赖包,
## 需要下载相对应的依赖包
## 下载libicu-50.2-4.el7_7.x86_64.rpm进行安装即可
cd /opt
rpm -ivh libicu-50.2-4.el7_7.x86_64.rpm
cd /opt/software
rpm -ivh *.rpm
[root@cdh06 clickhouse-server]# cat /etc/security/limits.d/clickhouse.conf
clickhouse soft nofile 262144
clickhouse hard nofile 262144
该配置也可以通过config.xml的max_open_files修改
[root@cdh06 cron.d]# cat /etc/cron.d/clickhouse-server
#*/10 * * * * root (which service > /dev/null 2>&1 && (service clickhouse-server condstart ||:)) || /etc/init.d/clickhouse-server condstart > /dev/null 2>&1
最后是一组在/usr/bin路径下的可执行文件:
3,启动服务
启动服务之前,修改config.xml,修改数据的保存地址
正是由于修改了路径,所以这个目录的 OWNER 设为 clickhouse 用户
mkdir -p /u01/chbase/data/
mkdir -p /u02/chbase/data/tmp
mkdir -p /u02/chbase/data/user_files
chmod -R 775 /u01/
chmod -R 775 /u02/
chown -R clickhouse:clickhouse /u01/chbase/data/
chown -R clickhouse:clickhouse /u02/chbase/data/
clickhouse用户由安装 程序自动创建,启动脚本会基于此用户启动服务
启动有两种方式:首先是基于默认配置的启动,命令如下
cd /usr/bin
service clickhouse-server start
## 启动服务
[root@cdh06 ~]# service clickhouse-server start
Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/
DONE
## 关闭服务
[root@cdh06 ~]# service clickhouse-server stop
这种情况,会默认读取 /etc/clickhouse-server/config.xml 配置文件启动
其次是指定配置文件启动,这种情况要手动切换到clickhouse用户下启动
#su clickhouse
第一次要激活clickhouse这个帐号,用下面的命令激活
# usermod -s /bin/bash clickhouse
再次切换到ckickhouse ,并用基于指定配置文件的启动
#clickhouse-server --config-file=/etc/clickhouse-server/config-ch5.xml
启动成功后,就可以用客户端测试连接了
#clickhouse-client
show databases;
CREATE DATABASE [IF NOT EXISTS] db_name [ON CLUSTER cluster] [ENGINE = engine(...)]
CREATE DATABASE IF NOT EXISTS fd_ch
默认情况下,ClickHouse使用的是原生的数据库引擎Ordinary(在此数据库下可以使用任意类型的表引擎,在绝大多数情况下都只需使用默认的数据库引擎)。当然也可以使用Lazy引擎和MySQL引擎,比如使用MySQL引擎,可以直接在ClickHouse中操作MySQL对应数据库中的表。假设MySQL中存在一个名为clickhouse的数据库,可以使用下面的方式连接MySQL数据库。
这里clickhouse的权限不像mysql直接创建角色,用户。而是需要在配置文件中添加角色用户。
默认的配置文件路径是:/etc/clickhouse-server
其中有config.xml,users.xml,一个是服务器相关配置,一个是用户权限的配置。下面看看users.xml。这里面分几部分。
1. 用户名,用户密码,访问来源地址
2. 资源限制,和greenplum有点像。
3. 配置设置,这其中有用户是否只读。目前只有select和insert。所以权限也比较简单。
然后在users.xml中加入要新创建的账号。
<
password
>123456
password
>
"networks"
replace
=
"replace"
>
default
default
<
database
>
default
database
>
<
ch_dml>
<
password>
ch_dml>
"networks"
replace
=
"replace"
>
default
default
<
database
>fd_ch
database
>
ch_dml
>
<
ch_readonly>
ch_readonly
"networks"
replace
=
"replace"
>
default
<
database
>fd_ch
database
>
ch_readonly
>
我这里是创建两个用户:dba和xinchen,
dba用户采用明文密码,
admin用户采用密文密码,
端口不通
1、设置clickhouse的8123端口可以让任意机器访问
将config.xml中的
tail -300f /var/log/clickhouse-server/clickhouse-server.log
tail -300f /var/log/clickhouse-server/clickhouse-server.err.log
第1次连的时候会下载数据库连接驱动,默认连的是国外的maven默认仓库,
这里最好改下连国内阿里云的:
点击: 窗口 --> 首选项 --> 连接 --> 驱动 --> Maven
添加阿里云源:
http://maven.aliyun.com/nexus/content/groups/public/
1. 卸载及删除安装文件
yum list installed | grep clickhouse
yum remove -y clickhouse-common-static
yum remove -y clickhouse-server-common
rm -rf /var/lib/clickhouse
rm -rf /etc/clickhouse-*
rm -rf /var/log/clickhouse-server
2. 下载最新稳定版本
https://packagecloud.io/app/Altinity/clickhouse/search?
3. 安装
yum install -y clickhouse-common-static-18.12.17-1.el7.x86_64.rpm
yum install -y clickhouse-server-common-18.12.17-1.el7.x86_64.rpm
yum install -y clickhouse-server-18.12.17-1.el7.x86_64.rpm
yum install -y clickhouse-client-18.12.17-1.el7.x86_64.rpm
4. 启动服务
service clickhouse-server start
5. 查询服务状态
service clickhouse-server status
systemctl status clickhouse-server
clickhouse-server service is running 则说明启动成功
Clickhouse 常见问题
1、配置文件错误
配置文件错误,导致clickhouse无法启动。
指定配置文件启动clickhouse
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
升级步骤
根据配置,每个shard有多个replicas副本,那么每个shard的升级需要逐个replica进行,其中一个replica确保升级成功后,我们才能继续下一个replica的升级操作,就这样逐个的升级确保整个集群的升级成功。(这样做的前提是clickhouse集群所有的表均使用的是copy表),不停机情况下确保单节点单节点的停止升级,另外一个保证可用
1、停止实例
停掉某个replica实例上的clickhouse-server:
sudo /etc/init.d/clickhouse-server stop
systemctl stop clickhouse-server
1
2
2、将需要升级到RPM包都放到一个文件夹下
RPM包下载地址(官网版本较新):
https://repo.clickhouse.tech/rpm/stable/x86_64
执行命令(一般不会报错,直接升级成功)
yum upgrade *.rpm -y
1
3、验证是否安装成功
启动新版clickhouse-server:systemctl start clickhouse-server
查看是否启动成功:systemctl status clickhouse-server
查看clickhouse相关日志有无明显报错信息,clickhouse相关日志的位置我们需要查看config.xml文件的配置,这边可以看到升级版本还是指向的之前的历史配置文件(默认配置日志路径:/var/log/clickhouse-server/clickhouse-server.log)
运行clickhouse-client,进入交互终端后确认版本信息,执行:select version()
备注:如一开始连接失败,则执行systemctl restart clickhouse-server几次该命令即可
降级步骤
若升级过程中出现严重问题,无法规避,那我们需要做降级操作,降级所需的所有rpm包文件我们需要放到单独的(downgrade)文件夹,进入文件夹执行:
systemctl stop clickhouse-server
yum downgrade *.rpm -y
systemctl start clickhouse-server (若出现数据损坏无法启动的情况,需要查看日志分析具体原因,分析具体损坏的文件)
备注:如由于内网原因或者其他配置原因导致该降级过程无法实施,请参照以下做法(经过测试)
1、yum list installed ‘clickhouse*’ 查看安装的ClickhouseRPM版本
2、yum -y remove … 卸载当前升级的版本
3、sudo yum -y localinstall clickhouse-*.rpm 重新安装历史版本
4、将历史配置文件重新覆盖当前安装目录,由于历史data目录不会更改且元数据都向上兼容,直接配置指向数据目录即可
5、sudo /etc/init.d/clickhouse-server start 启动
6、clickhouse-client --port 9000 确认是否成功、数据是否缺失即可
————————————————
版权声明:本文为CSDN博主「大大大大大大太阳」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_40341628/article/details/115351330
#!/bin/bash
OUTDIR=/root/backup/
clickhouse-client -q "SHOW DATABASES" > /root/backup/db.txt
while read -r db
do
clickhouse-client -q "SHOW TABLES FROM $db" > /root/backup/table.txt
#echo "--------------------------------${db}"
while read -r table
do
if [ "$db" == "system" ]; then
echo "skip system db"
continue 2;
fi
if [[ "$table" == ".inner."* ]]; then
echo "skip materialized view $table ($db)"
continue;
fi
echo "export table $table from database $db"
# dump schema
clickhouse-client -q "SHOW CREATE TABLE ${db}.${table} format CSV" >> "${OUTDIR}/schema.sql"
done < `ls /root/backup/table.txt`
done < `ls /root/backup/db.txt`
到此,单节点安装结束。
版本升级
在使用离线RPM安装包安装后,可以直接通过rpm命令升级:
rpm -Uvh ./*.rpm
客户端的访问接口
ClickHouse的底层访问接口支持TCP和HTTP两种协议,其中,TCP协议拥有更好的性能,其默认端口为9000,主要用于集群间的内部通信及CLI客户端;而HTTP协议则拥有更好的兼容性,可以通过REST服务的形式被广泛用于JAVA、Python等编程语言的客户端,其默认端口为8123。通常而言,并不建议用户直接使用底层接口访问ClickHouse,更为推荐的方式是通过CLI和JDBC这些封装接口,因为它们更加简单易用。
CLI(Command Line Interface)即命令行接口,其底层是基于TCP接口进行通信的,是通过clickhouse-client脚本运行的。它拥有两种执行模式。
重要参数
(1)--host / -h:服务端的地址,默认值为localhost。如果修改了config.xml内的listen_host,则需要依靠此参数指定服务端地址,例如下面所示的代码。
(2)--port:服务端的TCP端口,默认值为9000。如果要修改config.xml内的tcp_port,则需要使用此参数指定。
(3)--user / -u:登录的用户名,默认值为default。如果使用非default的其他用户名登录,则需要使用此参数指定