clickhouse安装过程

-- rpm包地址
https://packagecloud.io/Altinity/clickhouse
 

在我们安装的软件中包含这些包:

  • clickhouse-client 包,包含 clickhouse-client 应用程序,它是交互式ClickHouse控制台客户端。
  • clickhouse-common 包,包含一个ClickHouse可执行文件。
  • clickhouse-server 包,包含要作为服务端运行的ClickHouse配置文件。

总共包含四个RPM包,

 
  
  1. clickhouse-client-19.17.4.11-1.el7.x86_64.rpm

  2. clickhouse-common-static-19.17.4.11-1.el7.x86_64.rpm

  3. clickhouse-server-19.17.4.11-1.el7.x86_64.rpm

  4. 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的命令:

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

  2. 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:文件句柄数量的配置
 
  
  1. [root@cdh06 clickhouse-server]# cat /etc/security/limits.d/clickhouse.conf

  2. clickhouse soft nofile 262144

  3. clickhouse hard nofile 262144

该配置也可以通过config.xml的max_open_files修改

  • /etc/cron.d/clickhouse-server:cron:定时任务配置,用于恢复因异常原因中断的ClickHouse服务进程,其默认的配置如下。
 
  
  1. [root@cdh06 cron.d]# cat /etc/cron.d/clickhouse-server

  2. #*/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,修改数据的保存地址

/u01/chbase/data/

/u02/chbase/data/tmp/

 

/u02/chbase/data/user_files/

正是由于修改了路径,所以这个目录的 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 

启动/关闭服务

 
  
  1. ## 启动服务

  2. [root@cdh06 ~]# service clickhouse-server start

  3. Start clickhouse-server service: Path to data directory in /etc/clickhouse-server/config.xml: /var/lib/clickhouse/

  4. DONE

  5. ## 关闭服务

  6. [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>123456password>

    "networks" replace="replace">

        ::/0

    

    default

    default

    

        <database>defaultdatabase>

    

    1

<ch_dml>

    <password>ch_dml>

    "networks" replace="replace">

        ::/0

    

    default

    default

    

        <database>fd_chdatabase>

    

ch_dml>

<ch_readonly>

    ch_readonly

    "networks" replace="replace">

        ::/0

    

    readonly

    default

    

        <database>fd_chdatabase>

    

ch_readonly>

我这里是创建两个用户:dba和xinchen,

dba用户采用明文密码,默认权限,允许访问的数据库是default。
admin用户采用密文密码,只读权限,允许访问的数据库是default,testdb。

端口不通

1、设置clickhouse的8123端口可以让任意机器访问
将config.xml中的0.0.0.0 注释解除掉,然后重启clickhouse-server即可

4.开放外网访问,VIM CONFIG.XML 找到 LISTEN_HOST 标签,修改为以下

0.0.0.0

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的其他用户名登录,则需要使用此参数指定

你可能感兴趣的:(clickhouse,clickhouse)