暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

ClickHouse和它的小伙伴们-客户端篇

万能修实验室 2021-07-14
3842


今天的封面很六一,不知道儿童节会收到啥礼物。这段时间断断续续的折腾CH,简单总结起来就是:资料少,文档坑,更新频率蹭蹭蹭。

日常管理来说一般命令行方式就足够了,但是给研发同学使用,没个客户端工具还真不好意思说这是个数据库。

 

ClickHouse提供了两个种接口:

  • HTTP 易于直接使用。

  • 本机TCP 开销较小。


建议使用适当的工具或库来连接,Yandex官方支持以下方式:

  • 命令行客户端

  • JDBC驱动程序

  • ODBC驱动程序

  • C ++客户端库


非官方的第三方库工具:

这个就太多了,支持Java、Python、PHP、Go、C等各种语言的客户端库


下面就一起测试下平时常用的客户端工具,看看这挖掘技术到底哪家强。




# 0 三个默认的端口:


首先看下ClickHouse配置文件,默认对外开放以下端口:

        <http_port>8123</http_port>
    <tcp_port>9000</tcp_port>
    <mysql_port>9004</mysql_port>
    复制


    HTTP方式:

    clickhouse-client 方式,需要安装官方对应的client才能使用


    MySQL 方式,目前对很多客户端兼容性都不太好,这里测试一些主流的客户端。先建立一个用于测试的用户:

    CREATE USER caihao HOST ANY IDENTIFIED WITH double_sha1_password BY 'caihao';
    GRANT ALL ON *.* TO caihao;

    复制

    !注意:

    为了与所有MySQL客户端兼容,建议在配置文件中使用双SHA1密码。

    如果使用SHA256密码,某些客户端可能无法进行身份验证。


    # 1 MySQL Client:

    对版本很挑剔,这里我用的5.7.24版本的MySQL无法进入交互方式:


    但是后面-e 直接执行查询是可以的。


    用MariaDB就完全没这种问题


    # 2 MySQL Workbench

    Workbench是Oracle官方开发,本身对于社区版和企业版MySQL支持很好,但对其他非官方版本的就不要指望了。


    # 3 Navicat 

    Navicat 作为开发人员使用最广泛的客户端软件, 对ch也是不支持,迷之报错。


    用HTTP方式同样不行:



    # 4 DBeaver

    免费和开源的 DBeaver ,支持几乎所有的数据库,这当然也包括ch,而且是Yandex官方推荐哦。


    创建连接,可以在分析数据库中找到ch


    配置好JCDB方式的连接


    查看数据库对象和数据没有任何问题。


    # 5 Tabix

    Tabix 也是ch官方推荐的数据库管理工具,他的好处是单独部署一套web服务,用户通过浏览器就可以连接ch数据库,无需额外安装任何客户端,支持SQL语法。


    安装很简单:

    https://tabix.io/doc/Install/


    docker部署,3步完成

    # 建立镜像:
    docker build -t tabix .

    # 运行容器:
    docker run -d -p 8080:80 spoonest/clickhouse-tabix-web-client

    # 或者,加上密码验证更安全:
    docker run -d -p 8080:80 -e USER='myuser' -e PASSWORD='mypass' spoonest/clickhouse-tabix-web-client

    # 通过浏览器访问:
    http://10.0.0.97:8080/#!/login

    复制


    连接CH,注意用http端口 8123


    这种性冷淡风格,很好。


    # 6 ProxySQL

    既然CH自带的MySQL这也不支持,那也报错,不如干脆不用了。proxysql恰好有支持ch的版本,而且支持SQL,搞一个放前面岂不美哉。 


    https://github.com/sysown/proxysql/wiki/ClickHouse-Support


    --1. 安装 proxysql

    从 https://github.com/sysown/proxysql/releases 下载相应的版本:

    wget https://github.com/sysown/proxysql/releases/download/v2.0.10/proxysql-2.0.10-1-clickhouse-centos7.x86_64.rpm

    yum localinstall proxysql-2.0.10-1-clickhouse-centos7.x86_64.rpm -y

    复制


    --2. 启动 proxysql:

    proxysql --clickhouse-server

    复制


    --3. 管理端口连接proxy:(默认管理端口是6032,客户端服务端口是6090。默认的用户名密码都是 admin。)

    [root@VM_0_97_centos caihao]# mysql -uadmin -padmin -h127.0.0.1 -P6032


    mysql: [Warning] Using a password on the command line interface can be insecure.
    Welcome to the MySQL monitor.  Commands end with ; or \g.
    Your MySQL connection id is 1
    Server version: 5.5.30 (ProxySQL Admin Module)


    Copyright (c) 20002018, Oracle and/or its affiliates. All rights reserved.


    Oracle is a registered trademark of Oracle Corporation and/or its
    affiliates. Other names may be trademarks of their respective
    owners.


    Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.


    [admin@127.0.0.1][(none)]> show databases;
    +-----+---------------+-------------------------------------+
    | seq | name          | file                                |
    +-----+---------------+-------------------------------------+
    | 0   | main          |                                     |
    | 2   | disk          | /var/lib/proxysql/proxysql.db       |
    | 3   | stats         |                                     |
    | 4   | monitor       |                                     |
    | 5   | stats_history | /var/lib/proxysql/proxysql_stats.db |
    +-----+---------------+-------------------------------------+
    5 rows in set (0.00 sec)


    [admin@127.0.0.1][(none)]> 

    复制

    看下clickhouse专属用户表:

    [admin@127.0.0.1][(none)]> SHOW CREATE TABLE clickhouse_users\G
    *************************** 1. row ***************************
           table: clickhouse_users
    Create Table: CREATE TABLE clickhouse_users (
        username VARCHAR NOT NULL,
        password VARCHAR,
        active INT CHECK (active IN (0,1)) NOT NULL DEFAULT 1,
        max_connections INT CHECK (max_connections >=0) NOT NULL DEFAULT 10000,
        PRIMARY KEY (username))
    1 row in set (0.00 sec)

    复制


    --4. 配置新用户:

    注意:ProxySQL将使用Default用户名和空密码连接到ClickHouse,这里配置的是ProxySQL的用户。

    [admin@127.0.0.1][(none)]> INSERT INTO clickhouse_users VALUES ('chproxy','chproxy_Pass123',1,200);
    Query OK, 1 row affected (0.00 sec)

    复制

    将配置加载到运行时和磁盘:

    [admin@127.0.0.1][(none)]> LOAD CLICKHOUSE USERS TO RUNTIME;
    Query OK, 0 rows affected (0.00 sec)

    [admin@127.0.0.1][(none)]> SAVE CLICKHOUSE USERS TO DISK;
    Query OK, 0 rows affected (0.04 sec)

    复制


    --5. 测试下连接:

    执行各种SQL都很6


    通过Navicat试试,也没问题。


    Workbench 还是不行,设定字符集失败就直接报错。




    # 最后总结下这些工具:

    文章转载自万能修实验室,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

    评论