【问题标题】:How to deploy and configure a remote clickhouse db instance with docker如何使用 docker 部署和配置远程 clickhouse db 实例
【发布时间】:2021-03-01 11:10:43
【问题描述】:

我最近不得不将 clickhouse 添加到我们的技术堆栈中,但不幸的是,我没有找到任何好的、简单和快速的教程来满足我的需求,经过反复试验,我可以自己完成。为了帮助其他人,我决定分享我的经验。

那么如何使用 docker 部署和配置远程 ClickHouse DB 实例?

【问题讨论】:

    标签: database clickhouse


    【解决方案1】:

    请克隆此项目并按照 README.md 文件中的说明进行操作。运行 docker compose 后,您将拥有 2 个分片和 2 个 clickhouse 副本设置。

    https://github.com/vinitk95/clickhouse-cluster.git

    【讨论】:

      【解决方案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
      

      1。为 default 用户启用 SQL 驱动的访问控制和帐户管理。

      在 clickhouse 服务器 docker 容器中:

      $ cd etc/clickhouse-server

      注释掉 user.xml 文件中的以下行以启用访问控制:

      <access_management>1</access_management>
      

      注意此操作是不安全的,完成工作后,您应该将访问控制更改为:

      <access_management>0</access_management>
      

      2。收听其他网络:

      etc/clickhouse-server/config.xml 中注释掉&lt;listen_host&gt;::&lt;/listen_host&gt; 以允许远程连接。 您应该会看到系统网络中的端口已打开:

      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)
      

      创建包含用户的数据库

      在这部分我们创建一个简单的数据库和一个用户。然后我们授予该用户数据库的权限

      有两种类型的同步,它们可以相互补充:

      1。 Creating一个用户

      CREATE USER IF NOT EXISTS user1 IDENTIFIED WITH PLAINTEXT_PASSWORD BY 'pass1'
      

      您可以使用SHOW USERS 命令查看用户。

      2。 Creating一个数据库

      CREATE DATABASE IF NOT EXISTS db1
      

      您可以使用SHOW DATABASES 命令检查数据库。

      3。 Grant用户的数据库权限

      您可以授予用户有限的权限或所有权限。

      GRANT ALL PRIVILEGES ON db1.* TO user1
      

      4。将新用户连接到数据库

      现在我们可以使用创建的帐户连接到服务器了。

      $ 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 和您的用户/密码从其他网络连接到数据库。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-15
        • 2016-12-30
        • 1970-01-01
        • 1970-01-01
        • 2019-03-10
        • 1970-01-01
        • 2020-09-08
        相关资源
        最近更新 更多