ClickHouse安装部署

2022-06-01 10:12:58 浏览数 (1)

最近由于业务需要,所以研究了一下ClickHouse,也踩了一些坑,在此记录一下。ClickHouse中文文档比较齐全,入门之前建议先看下官方文档,可以减少踩坑和降低学习成本,ClickHouse中文文档地址:https://clickhouse.com/docs/zh/getting-started/tutorial/

1,本地安装部署

由于我的电脑是mac m1的,所以采用的是下载源码自己构建的方式在本地运行ClickHouse的,参考的是如下的文章:MacOS M1芯片安装ClickHouse 。 这篇文章有如下几个点要注意一下,首先是第4步拉取源码,这一步我一开始没复制他的代码,我直接使用的git clone拉的,没有加–recursive参数,结果报了一个错误。

源码下载下来之后,接下来就是在 Mac OS X 中编译 ClickHouse,步骤参考官方文档:在 Mac OS X 中编译 ClickHouse。

2,Centos安装部署

官网提供了很详细的安装部署文档,支持deb、rpm、tgz、docker等安装部署方式,参考文档:安装部署。

不过,此处需要说明下,由于我司开发环境有网络环境隔离,下载rpm包的方式走不通,同样因为网络隔离的原因,官方的tgz包无法通过curl下载,我选择的是手动下载tgz包,然后通过别的方式将下载的tgz包上传到服务器。下载的地址:

代码语言:javascript复制
https://packages.clickhouse.com/tgz/
https://github.com/ClickHouse/ClickHouse/releases

下载完成之后,按照官方文档上的说明使用curl进行下载安装。

代码语言:javascript复制
tar -xzvf "clickhouse-common-static-22.1.3.7.tgz"
sudo "clickhouse-common-static-22.1.3.7、install/doinst.sh"

tar -xzvf "clickhouse-common-static-dbg-22.1.3.7.tgz"
sudo "clickhouse-common-static-dbg-22.1.3.7/install/doinst.sh"

tar -xzvf "clickhouse-server-22.1.3.7.tgz"
sudo "clickhouse-server-22.1.3.7/install/doinst.sh"

tar -xzvf "clickhouse-client-22.1.3.7.tgz"
sudo "clickhouse-client-22.1.3.7/install/doinst.sh"

3,启动Server

启动的命令如下:

代码语言:javascript复制
sudo /etc/init.d/clickhouse-server start

如果使用root用户启动,会发现启动不了,具体的启动日志如下:

代码语言:javascript复制
2022.03.29 17:39:13.912767 [ 6012 ] {} <Information> Application: Will watch for the process with pid 6013
2022.03.29 17:39:13.912900 [ 6013 ] {} <Information> Application: Forked a child process to watch
2022.03.29 17:39:13.913400 [ 6013 ] {} <Information> SentryWriter: Sending crash reports is disabled
2022.03.29 17:39:13.913547 [ 6013 ] {} <Trace> Pipe: Pipe capacity is 1.00 MiB
2022.03.29 17:39:14.193544 [ 6014 ] {} <Trace> BaseDaemon: Received signal -2
2022.03.29 17:39:14.193603 [ 6014 ] {} <Information> BaseDaemon: Stop SignalListener thread
2022.03.29 17:39:14.206283 [ 6012 ] {} <Information> Application: Child process exited normally with code 233.
2022.03.29 17:39:44.409085 [ 6067 ] {} <Information> Application: Will watch for the process with pid 6068
2022.03.29 17:39:44.409167 [ 6068 ] {} <Information> Application: Forked a child process to watch
2022.03.29 17:39:44.409619 [ 6068 ] {} <Information> SentryWriter: Sending crash reports is disabled
2022.03.29 17:39:44.409768 [ 6068 ] {} <Trace> Pipe: Pipe capacity is 1.00 MiB
2022.03.29 17:39:44.664700 [ 6069 ] {} <Trace> BaseDaemon: Received signal -2
2022.03.29 17:39:44.664762 [ 6069 ] {} <Information> BaseDaemon: Stop SignalListener thread
2022.03.29 17:39:44.677423 [ 6067 ] {} <Information> Application: Child process exited normally with code 233

然后,检查ClickHouse相关的用户目录,会发现用户和组都是clickhouse。

发现/var/lib/clickhouse目录下的文件权限为root,如果以普通用户起的话,可以将/var/lib/clickhouse下的文件全部更改为clickhouse。

代码语言:javascript复制
chown -R clickhouse:clickhouse /var/lib/clickhouse/

在启动的时候,如果因为用户权限问题导致启动不了,可以检查下启动时的用户以及clickhouse相关的文件夹的用户和组。

代码语言:javascript复制
/var/lib/clickhouse/
/var/log/clickhouse-server/
/etc/clickhouse-server
#和server无关,和客户端有关
/etc/clickhouser-client

然后用clickhouse用户来启动Server。

代码语言:javascript复制
sudo -u clickhouse clickhouse-server --config-file=/etc/clickhouse-server/config.xml

上面说的是以普通用户的方式启动,更粗暴一点的方式是将和clickhouse相关的全部设置成root。

代码语言:javascript复制
chown -R root:root /var/lib/clickhouse /var/log/clickhouse-server /etc/clickhouse-server /etc/clickhouse-client

nohup clickhouse-server --config-file=/etc/clickhouse-server/config.xml 

4,密码管理

clickhouse安装的时候会让你输入默认密码,默认密码在/etc/clickhouse-server/users.d/default-password.xml 里,如果忘记了或者想换一个密码,可以删掉default-password.xml,在/etc/clickhouse-server/users.xml中设置一个新的密码。

clickhouse用户的密码在users.xml,比如你想将default用户的密码设置成123456,可以找到default用户的配置,修改password的配置为123456即可。

如果需要将密码加密,clickhouse也支持sha256的方式,修改password_sha256_hex的配置,如下:

代码语言:javascript复制
<password_sha256_hex>8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92</password_sha256_hex>

修改完密码之后,重启clickhouse server进程,密码就生效了。

5,版本升级

由于我使用的是tgz包的方式安装的,升级的方式是下载对应版本的包,然后重新执行下安装命令,比如要从22.1.3.7升级到22.3.2.2。

代码语言:javascript复制
tar -xzvf "clickhouse-common-static-22.3.2.2.tgz"
sudo "clickhouse-common-static-22.3.2.2/install/doinst.sh"

tar -xzvf "clickhouse-common-static-dbg-22.3.2.2.tgz"
sudo "clickhouse-common-static-dbg-22.3.2.2/install/doinst.sh"

tar -xzvf "clickhouse-server-22.3.2.2.tgz"
sudo "clickhouse-server-22.3.2.2/install/doinst.sh"

tar -xzvf "clickhouse-client-22.3.2.2.tgz"
sudo "clickhouse-client-22.3.2.2/install/doinst.sh"

0 人点赞