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

ClickHouse和它的小伙伴们-客户端篇_第1张图片

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

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

 

ClickHouse提供了两个种接口:

  • HTTP 易于直接使用。

  • 本机TCP 开销较小。

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

  • 命令行客户端

  • JDBC驱动程序

  • ODBC驱动程序

  • C ++客户端库

非官方的第三方库工具:

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

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


# 0 三个默认的端口:

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

    8123
    9000
    9004

HTTP方式:

ClickHouse和它的小伙伴们-客户端篇_第2张图片

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

ClickHouse和它的小伙伴们-客户端篇_第3张图片

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无法进入交互方式:

ClickHouse和它的小伙伴们-客户端篇_第4张图片

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

ClickHouse和它的小伙伴们-客户端篇_第5张图片

用MariaDB就完全没这种问题

ClickHouse和它的小伙伴们-客户端篇_第6张图片

# 2 MySQL Workbench

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

ClickHouse和它的小伙伴们-客户端篇_第7张图片

# 3 Navicat 

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

ClickHouse和它的小伙伴们-客户端篇_第8张图片

用HTTP方式同样不行:

ClickHouse和它的小伙伴们-客户端篇_第9张图片

# 4 DBeaver

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

ClickHouse和它的小伙伴们-客户端篇_第10张图片

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

ClickHouse和它的小伙伴们-客户端篇_第11张图片

配置好JCDB方式的连接

ClickHouse和它的小伙伴们-客户端篇_第12张图片

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

ClickHouse和它的小伙伴们-客户端篇_第13张图片

# 5 Tabix

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

ClickHouse和它的小伙伴们-客户端篇_第14张图片

安装很简单:

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

ClickHouse和它的小伙伴们-客户端篇_第15张图片

这种性冷淡风格,很好。

ClickHouse和它的小伙伴们-客户端篇_第16张图片

# 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) 2000, 2018, 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.


[[email protected]][(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)


[[email protected]][(none)]> 

看下clickhouse专属用户表:

[[email protected]][(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的用户。

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

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

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

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

--5. 测试下连接:

ClickHouse和它的小伙伴们-客户端篇_第17张图片

执行各种SQL都很6

ClickHouse和它的小伙伴们-客户端篇_第18张图片

ClickHouse和它的小伙伴们-客户端篇_第19张图片

通过Navicat试试,也没问题。

ClickHouse和它的小伙伴们-客户端篇_第20张图片

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

ClickHouse和它的小伙伴们-客户端篇_第21张图片


# 最后总结下这些工具:

  • ClickHouse Client  官方出品,没毛病。

  • DBeaver  支持最好的第三方客户端

  • Tabix  有点简陋,但浏览器访问很方便

  • MySQL Client   <---- 还可以

    • 部分版本不支持官方MySQL接口

    • 加上ProxySQL好很多

  • Navicat    <---- 对付用

    • 不支持MySQL接口

    • 加上ProxySQL支持

  • MySQL Workbench   <---- 离开亲爹啥都不是

    • 不支持MySQL接口

    • 加上ProxySQL也不行

    最近总有人问,图呢? 再次重申,我们是正规实验室,从不开车,建议大家乘坐公共交通工具。


    # 历史文章

    • 2020年开源数据库行业状态报告

    • GitHub都在用的高可用工具Orch:

        Orchestrator:01 基础篇

        Orchestrator:02 高可用方案VIP篇

        Orchestrator:03 高可用方案ProxySQL篇

        Orchestrator:04 高可用方式部署

    • Percona 全力打造的监控平台 PMM:

        监控利器 PMM2.0X GA 版本发布!

        PMM监控的告警配置

        PMM的Ansible部署与重点指标

        在PMM中添加Redis和ES

你可能感兴趣的:(ClickHouse和它的小伙伴们-客户端篇)