-- 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
查看安装信息
目录结构
- /etc/clickhouse-server:服务端的配置文件目录,包括全局配置config.xml和用户配置users.xml等。
- /etc/clickhouse-client:客户端配置,包括conf.d文件夹和config.xml文件。
- /var/lib/clickhouse:默认的数据存储目录(通常会修改默认路径配置,将数据保存到大容量磁盘挂载的路径)。
- /var/log/clickhouse-server:默认保存日志的目录(通常会修改路径配置,将日志保存到大容量磁盘挂载的路径)。
配置文件
- /etc/security/limits.d/clickhouse.conf:文件句柄数量的配置
-
[root@cdh06 clickhouse-server]# cat /etc/security/limits.d/clickhouse.conf
-
clickhouse soft nofile 262144
-
clickhouse hard nofile 262144
该配置也可以通过config.xml的max_open_files修改
- /etc/cron.d/clickhouse-server:cron:定时任务配置,用于恢复因异常原因中断的ClickHouse服务进程,其默认的配置如下。
-
[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路径下的可执行文件:
- clickhouse:主程序的可执行文件。
- clickhouse-client:一个指向ClickHouse可执行文件的软链接,供客户端连接使用。
- clickhouse-server:一个指向ClickHouse可执行文件的软链接,供服务端启动使用。
- clickhouse-compressor:内置提供的压缩工具,可用于数据的正压反解。
3,启动服务
启动服务之前,修改config.xml,修改数据的保存地址
<!-- <path>/var/lib/clickhouse/</path> -->
<path>/u01/chbase/data/</path>
<!-- <tmp_path>/var/lib/clickhouse/tmp/</tmp_path> -->
<tmp_path>/u02/chbase/data/tmp/</tmp_path>
<!-- <user_files_path>/var/lib/clickhouse/user_files/</user_files_path> -->
<user_files_path>/u02/chbase/data/user_files/</user_files_path>
正是由于修改了路径,所以这个目录的 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中加入要新创建的账号。
<dba>
<
password
>123456</
password
>
<networks incl=
"networks"
replace
=
"replace"
>
<ip>::/0</ip>
</networks>
<profile>
default
</profile>
<quota>
default
</quota>
<allow_databases>
<
database
>
default
</
database
>
</allow_databases>
<access_management>1</access_management>
</dba>
<
ch_dml>
<
password>
ch_dml</password
>
<networks incl=
"networks"
replace
=
"replace"
>
<ip>::/0</ip>
</networks>
<profile>
default
</profile>
<quota>
default
</quota>
<allow_databases>
<
database
>fd_ch
</
database
>
</allow_databases>
</
ch_dml>
<
ch_readonly>
<password>
ch_readonly</password>
<networks incl=
"networks"
replace
=
"replace"
>
<ip>::/0</ip>
</networks>
<profile>readonly</profile>
<quota>
default
</quota>
<allow_databases>
<
database
>fd_ch</
database
>
</allow_databases>
</
ch_readonly>
我这里是创建两个用户:dba和xinchen,
dba用户采用明文密码,<profile>默认权限,<allow_databases>允许访问的数据库是default。
admin用户采用密文密码,<profile>只读权限,<allow_databases>允许访问的数据库是default,testdb。
端口不通
1、设置clickhouse的8123端口可以让任意机器访问
将config.xml中的<listen_host>0.0.0.0</listen_host> 注释解除掉,然后重启clickhouse-server即可
4.开放外网访问,VIM CONFIG.XML 找到 LISTEN_HOST 标签,修改为以下
<listen_host>0.0.0.0</listen_host>
tail -300f /var/log/clickhouse-server/clickhouse-server.log
tail -300f /var/log/clickhouse-server/clickhouse-server.err.log
DBeaver连接clickhouse
配置maven仓库
第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的其他用户名登录,则需要使用此参数指定