天天看点

ClickHouse—物理机部署

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​

ClickHouse—物理机部署

直接启动ClickHouse

我们可以进入我们的下载目录执行,这里我的目录是​

​/Users/kingcall/workspace/soft/clickhouse​

./clickhouse server      

可以看到我们的服务端已经启动了

ClickHouse—物理机部署

下面我们启动客户端,开一个新的窗口

./clickhouse client      

可以看到客户端也启动了

ClickHouse—物理机部署

可以执行一个查询看看

ClickHouse—物理机部署

其实和我们在Docker 里面的部署没啥差别,我们也可以通过其它数据库管理工具进行连接查询。

部署ClickHouse遇到的问题

其实前面我们直接启动已经可以用了,但是我们的数据目录都是在当前目录,如下所示我们的可执行文件和我们的数据文件在同一个目录下

ClickHouse—物理机部署

而且我们的服务端和客户端是同一个入口,只不过参数不一样,其实你执行ClickHouse你会发现它的参数非常多,其中有一个就是install

ClickHouse—物理机部署

那我们就执行一下​

​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      

其实我们分析日志发现了几个问题,事情的真相

  1. 在当前文件夹下创建了可执行文件的目录​

    ​local/usr/bin​

  2. 复制了我们下载的可执行文件到​

    ​local/usr/bin/​

    ​​ 并且命名为​

    ​clickhouse.new​

    ​​ 然后重命名​

    ​clickhouse.new​

  3. 接下来创建了大量的符号连接,就是快捷方式,例如​

    ​clickhouse-server​

    ​​和​

    ​clickhouse-client​

  4. 创建了配置文件夹和配置文件
  5. 创建了数据目录,日志目录、进程目录

这说明了一个问题就是我们可以手动创建这些目录,然后进行设置,还有我们上面报错的​

​clickhouse.new​

​​就是​

​clickhouse​

最终部署

这里我就直接新建一个文件夹,然后在这个文件夹下部署,后面把文件夹的路径配置到环境变量中去,这里的ck就是下载的可执行文件

ClickHouse—物理机部署

执行 ​

​./ck install --prefix clickhouse​

​,具体目录如下

ClickHouse—物理机部署

下面我们配置环境变量配置好后就可以直接使用clickhouse 相关的命令了

ClickHouse—物理机部署

这下我们启动试试看​

​clickhouse-server start​

​ ,发现命令找不到

zsh: command not found: clickhouse-server      

为什么回找不到呢,回过头来再看,发现这里自动创建的连接使用的是相对路径,这个路径是我们安装的时候指定的

ClickHouse—物理机部署

既然找到了问题,那我们就重新执行一边install ​

​./ck install --prefix /Users/kingcall/workspace/soft/clickhouse​

这次就ok 了 ​

​clickhouse-server start​

ClickHouse—物理机部署

但是你会发现数据文件还是在当前目录下,我们知道数据文件的目录是在配置文件中的,所以我们需要指定配置文件,这里我们提前修改了数据目录所在的文件夹

clickhouse-server start --config-file=/Users/kingcall/workspace/soft/clickhouse/etc/clickhouse-server/config.xml      

这下我们看到数据目录的文件夹有正确了

ClickHouse—物理机部署

这里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进行查询

总结