【发布时间】:2021-03-01 11:10:43
【问题描述】:
我最近不得不将 clickhouse 添加到我们的技术堆栈中,但不幸的是,我没有找到任何好的、简单和快速的教程来满足我的需求,经过反复试验,我可以自己完成。为了帮助其他人,我决定分享我的经验。
那么如何使用 docker 部署和配置远程 ClickHouse DB 实例?
【问题讨论】:
标签: database clickhouse
我最近不得不将 clickhouse 添加到我们的技术堆栈中,但不幸的是,我没有找到任何好的、简单和快速的教程来满足我的需求,经过反复试验,我可以自己完成。为了帮助其他人,我决定分享我的经验。
那么如何使用 docker 部署和配置远程 ClickHouse DB 实例?
【问题讨论】:
标签: database clickhouse
请克隆此项目并按照 README.md 文件中的说明进行操作。运行 docker compose 后,您将拥有 2 个分片和 2 个 clickhouse 副本设置。
【讨论】:
这是在远程服务器上使用 docker 部署 ClickHouse 的设置指南。
您必须在远程系统上预先安装 docker。
运行以下命令:
$ docker run -d --name some-clickhouse-server -p 8123:8123 --ulimit nofile=262144:262144 --volume=$HOME/some_clickhouse_database:/var/lib/clickhouse yandex/clickhouse-server
ClickHouse 服务器使用端口 8123 作为默认端口,但您可以使用任何其他开放端口,但请记住将该端口公开给外部网络。服务器自带默认用户,无密码。
在服务器中运行以下命令以默认用户连接到clickhouse服务器。
$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server
打开clickhouse服务器docker容器
$ docker exec -it some-clickhouse-server bash
default 用户启用 SQL 驱动的访问控制和帐户管理。在 clickhouse 服务器 docker 容器中:
$ cd etc/clickhouse-server
注释掉 user.xml 文件中的以下行以启用访问控制:
<access_management>1</access_management>
注意此操作是不安全的,完成工作后,您应该将访问控制更改为:
<access_management>0</access_management>
在etc/clickhouse-server/config.xml 中注释掉<listen_host>::</listen_host> 以允许远程连接。
您应该会看到系统网络中的端口已打开:
root@myvm:~# lsof -i :8123
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 1141768 root 4u IPv6 53989091 0t0 TCP *:8123 (LISTEN)
在这部分我们创建一个简单的数据库和一个用户。然后我们授予该用户数据库的权限。
有两种类型的同步,它们可以相互补充:
CREATE USER IF NOT EXISTS user1 IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'pass1'
您可以使用SHOW USERS 命令查看用户。
CREATE DATABASE IF NOT EXISTS db1
您可以使用SHOW DATABASES 命令检查数据库。
您可以授予用户有限的权限或所有权限。
GRANT ALL PRIVILEGES ON db1.* TO user1
现在我们可以使用创建的帐户连接到服务器了。
$ docker run -it --rm --link some-clickhouse-server:clickhouse-server yandex/clickhouse-client --host clickhouse-server -u user1 --password pass1
确保用户拥有所有权限并且可以访问数据库:
:) SHOW GRANTS
:) SHOW DATABASES
Clickhouse 支持 SQL .
创建表:
:) USE db1
:) CREATE TABLE names (
id UInt64,
name String,
created DateTime
) ENGINE = MergeTree()
PRIMARY KEY id
ORDER BY id;
:) SHOW TABLES
你有它。您可以使用 clickhouse-client 和您的用户/密码从其他网络连接到数据库。
【讨论】: