准备工作
CentOS 取消打开文件数限制
- ulimit -a 查看配置信息
[root@localhost ~]# ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 31118
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 1024
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 8192
cpu time (seconds, -t) unlimited
max user processes (-u) 31118
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
其中我们最关心的是 open files 和 max user processes,max user processes 意思是当前用户最大能打开多少个进程。
- 在服务机上的 /etc/security/limits.conf 文件的末尾加入以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
一共四列,第一列代表用户组,* 代表所有用户组,要设定特定的用户可以把 * 替换为 用户名@用户组;第二列 soft 和 hard,意思就是 当前 和 最大(上限),注意 当前要 <= 最大;第三列 nofile 和 nproc ,即 打开文件数 和 进程数;
- 在服务机上的/etc/security/limits.d/20-nproc.conf 文件的末尾加入以下内容
* soft nofile 65536
* hard nofile 65536
* soft nproc 131072
* hard nproc 131072
该路径的文件会覆盖 第2步骤的配置,所以建议在该文件也配置。
以上配置生效,需要重启最好,不重启可以用以下命令。有没有生效可以通过 ulimit -a 来查看
# -n 或 -u 在 ulimit -a 中可以看到
# 修改 open files
ulimit -n 65536
# 修改 max user processes
ulimit -u 131072
如果是集群的话,其他服务器也需要同步以上配置
提前创建号 clickhouse 用户和组,并尝试登录没有问题
# 该命令默认会添加一个 clickhouse 组
useradd clickhouse -d /home/users/clickhouse
# 修改clickhouse用户登录密码
passwd clickhouse
安装依赖
- yum install -y libtool
- yum install -y *unixODBC*
- 其他服务器也是一样的步骤
CentOS 取消 SELINUX
- 修改 /etc/selinux/config 中的 SELINUX=disabled
vim /etc/selinux/config
SELINUX=disabled
SELINUX 是linux内核的安全软件,改了之后需要重启,否则不会生效。当然也可以让其临时生效,setenforce 0(0关闭,1开启 但是想开的话必须先重启),执行后可以通过 getenforce 查看状态。
- 其他服务器同步操作
单机安装
官网地址:https://clickhouse.com/
下载地址:https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/
下载的话注意要下载4个包,clickhouse-client、clickhouse-common-static、clickhouse-common-dbg、clickhouse-server。其中版本的话 20.5 后支持 final 多线程,20.6.3后支持 explain 执行计划,20.8 出了实时同步 Mysql。clickhouse端口默认 9000
linu 下载可以通过以下命令直接下载。
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-client-21.7.3.14-2.noarch.rpm
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-21.7.3.14-2.x86_64.rpm
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-common-static-dbg-21.7.3.14-2.x86_64.rpm
wget https://repo.yandex.ru/clickhouse/rpm/stable/x86_64/clickhouse-server-21.7.3.14-2.noarch.rpm
如果下载的文件在该文件夹下没有其他文件,可以使用以下命令直接安装,如果还有其他 rpm 文件,则把 * 就换成所对应的文件。
rpm -ivh *.rpm
在安装过程中新版本会让你设置一个密码,默认账户就是 default,不设置可以直接回车。
Enter password for default user:
安装完成后可以通过如下命令来确定是否安装成功
rpm -qa|grep clickhouse
安装好的配置文件会放在 /etc/ 下,而 lib 数据会放在 /var/lib/clickhouse,日志会在 /var/log/clickhouse,命令会在 usr/bin/ 下。
bin/ ===> /usr/bin/
conf/ ===> /etc/clickhouse-server/
lib/ ===> /var/lib/clickhouse
log/ ===> /var/log/clickhouse
安装成功的 clickhouse 会自己创建一个 clickhouse 用户,如果你是用非 root 用户访问,可能会无法访问以上目录。
进入 /etc/clickhouse-server/ 可以看到有 4 个文件
config.d
config.xml
users.d
users.xml
其中 config.d 和 users.d 是文件夹,里面放的是一些默认配置。最核心的还是两个 xml 文件,config.xml 是通用的服务端配置,users.xml 为参数配置。
修改 config.xml
<!-- 默认本机访问,允许其他服务访问可以使用 :: ,意思不对IP做限制-->
<listen_host>::</listen_host>
<!-- 数据文件路径 -->
<path>/var/lib/clickhouse/</path>
<!-- 日志文件路径 -->
<log>/var/log/clickhouse-server/clickhouse-server.log</log>
<!-- 修改时区 -->
<timezone>Asia/Shanghai</timezone>
如果修改报错后报 E45: 'readonly' option is set (add ! to override),可以换成 wq!,就可以了。
启动 server
# 启动方式1,这种方式不会加载/etc下的配置文件,垃圾
clickhouse status[start,stop,restart]
# 启动方式2(比较好),但是不是后台启动,自己 nohup 启动就好
clickhouse-server --config-file=/etc/clickhouse-server/config.xml
clickhouse-server --config-file=/etc/clickhouse-server/config.xml 可能由于权限不足原因启动不了,此时要切换 clickhouse 用户启动,但是 su clickhouse可能无效,可以给 clickhouse 添加 用户目录 和 /bin/bash 权限,确保su clickhouse没有问题,然后通过命令启动。如果命令启动报错,大部分还是文件权限原因,如 Access to file denied: /var/log/clickhouse-server/clickhouse-server.log ,直接 chown clickhouse Access to file denied: /var/log/clickhouse-server/clickhouse-server.log 修改文件权限,再次执行就好了。
连接 server
clickhouse-client -m
- -m 以 ; 号为语句的结束
- -h 指定访问的IP
- -p 指定访问的端口
- --query "" 执行查询语句
- -u [ --user ] arg (=default) 指定用户,默认就是 default
- --password 如果设置了密码可以加上该参数
关闭开机自启动设置
systemctl disable clickhouse-server
如果机器缓存占用多没释放,可以使用 echo 3 > /proc/sys/vm/drop_caches