ClickHouse—物理机部署
其实前面我们已经介绍过ClickHouse 的Docker部署,但是部署在Docker里还是有点不方便,而且性能也不好,所以我们还是直接部署在物理机上。
物理机部署
下载所需的文件
对于Mac有两个版本,一个是Apple Silicon
curl -O 'https://builds.clickhouse.com/master/macos-aarch64/clickhouse' && chmod a+x ./clickhouse
另外一个是x86_64
curl -O 'https://builds.clickhouse.com/master/macos/clickhouse' && chmod a+x ./clickhouse
或者你可以执行下面的命令,脚本会自动根据你的操作系统选择合适的二进制文件,例如linux
curl https://clickhouse.com/ | sh
这个文件是同时包含 Server和Client 的,如果你下载错了你会看到下面的错误
zsh: bad CPU type in executable: ./clickhouse
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iN4AjM5YmZ2YjY1MWYlRmMzYzX1ADMyEDM0IzLclDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
直接启动ClickHouse
我们可以进入我们的下载目录执行,这里我的目录是
/Users/kingcall/workspace/soft/clickhouse
./clickhouse server
可以看到我们的服务端已经启动了
下面我们启动客户端,开一个新的窗口
./clickhouse client
可以看到客户端也启动了
可以执行一个查询看看
‘
其实和我们在Docker 里面的部署没啥差别,我们也可以通过其它数据库管理工具进行连接查询。
部署ClickHouse遇到的问题
其实前面我们直接启动已经可以用了,但是我们的数据目录都是在当前目录,如下所示我们的可执行文件和我们的数据文件在同一个目录下
而且我们的服务端和客户端是同一个入口,只不过参数不一样,其实你执行ClickHouse你会发现它的参数非常多,其中有一个就是install
那我们就执行一下
sudo ./clickhouse install
Copying ClickHouse binary to /usr/bin/clickhouse.new
Code: 76. DB::ErrnoException: Cannot open file /usr/bin/clickhouse.new, errno: 1, strerror: Operation not permitted. (CANNOT_OPEN_FILE) (version 22.9.1.2255 (official build))
发现有报错,即使我们已经使用的是
sudo
命令了,也就是我们在创建
/usr/bin/clickhouse.new
这一个环节失败了
通过查阅资料发现,我们可以在安装的时候添加一个参数
--prefix local
local 是一个目录,执行一下试试看
./clickhouse install --prefix local
在这个过程中要求你输入密码,以及是否允许远程连接,而且你可以看到我们的ClickHouse 已经安装成功了
Creating binary directory local/usr/bin.
Copying ClickHouse binary to local/usr/bin/clickhouse.new
Renaming local/usr/bin/clickhouse.new to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-server to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-client to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-local to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-benchmark to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-copier to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-obfuscator to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-git-import to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-compressor to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-format to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-extract-from-config to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-keeper to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-keeper-converter to local/usr/bin/clickhouse.
Creating symlink local/usr/bin/clickhouse-disks to local/usr/bin/clickhouse.
Will not create a dedicated clickhouse group.
Will not create a dedicated clickhouse user.
Creating config directory local/etc/clickhouse-server.
Creating config directory local/etc/clickhouse-server/config.d that is used for tweaks of main server configuration.
Creating config directory local/etc/clickhouse-server/users.d that is used for tweaks of users configuration.
Data path configuration override is saved to file local/etc/clickhouse-server/config.d/data-paths.xml.
Log path configuration override is saved to file local/etc/clickhouse-server/config.d/logger.xml.
User directory path configuration override is saved to file local/etc/clickhouse-server/config.d/user-directories.xml.
OpenSSL path configuration override is saved to file local/etc/clickhouse-server/config.d/openssl.xml.
Creating log directory local/var/log/clickhouse-server.
Creating data directory local/var/lib/clickhouse.
Creating pid directory local/var/run/clickhouse-server.
Enter password for default user:
Password for default user is saved in file local/etc/clickhouse-server/users.d/default-password.xml.
Allow server to accept connections from the network (default is localhost only), [y/N]: y
The choice is saved in file local/etc/clickhouse-server/config.d/listen.xml.
ClickHouse has been successfully installed.
Start clickhouse-server with:
sudo clickhouse start
Start clickhouse-client with:
clickhouse-client --password
其实我们分析日志发现了几个问题,事情的真相
- 在当前文件夹下创建了可执行文件的目录
local/usr/bin
- 复制了我们下载的可执行文件到
并且命名为local/usr/bin/
然后重命名clickhouse.new
clickhouse.new
- 接下来创建了大量的符号连接,就是快捷方式,例如
和clickhouse-server
clickhouse-client
- 创建了配置文件夹和配置文件
- 创建了数据目录,日志目录、进程目录
这说明了一个问题就是我们可以手动创建这些目录,然后进行设置,还有我们上面报错的
clickhouse.new
就是
clickhouse
最终部署
这里我就直接新建一个文件夹,然后在这个文件夹下部署,后面把文件夹的路径配置到环境变量中去,这里的ck就是下载的可执行文件
执行
./ck install --prefix clickhouse
,具体目录如下
‘
下面我们配置环境变量配置好后就可以直接使用clickhouse 相关的命令了
这下我们启动试试看
clickhouse-server start
,发现命令找不到
zsh: command not found: clickhouse-server
为什么回找不到呢,回过头来再看,发现这里自动创建的连接使用的是相对路径,这个路径是我们安装的时候指定的
既然找到了问题,那我们就重新执行一边install
./ck install --prefix /Users/kingcall/workspace/soft/clickhouse
这次就ok 了
clickhouse-server start
但是你会发现数据文件还是在当前目录下,我们知道数据文件的目录是在配置文件中的,所以我们需要指定配置文件,这里我们提前修改了数据目录所在的文件夹
clickhouse-server start --config-file=/Users/kingcall/workspace/soft/clickhouse/etc/clickhouse-server/config.xml
这下我们看到数据目录的文件夹有正确了
这里ClickHouse 默认去读取
./config.xml
,所以我们可以创建一个软连接过去
sudo mkdir /etc/clickhouse-server/
sudo ln -s /Users/kingcall/workspace/soft/clickhouse/etc/clickhouse-server/config.xml /etc/clickhouse-server/config.xml
这样下次再启动的时候
clickhouse-server start --config-file=/etc/clickhouse-server/config.xml --daemon
--daemon
是为了后台运行。
clickhouse-client
部署完成后我们可以使用一下clickhouse-client进行查询