clickhouse官方文档_ClickHouse和它的小伙伴们客户端篇

2a48552dd80669e47108ad8783c3c75e.png

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

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

ClickHouse提供了两个种接口:

  • HTTP 易于直接使用。

  • 本机TCP 开销较小。

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

  • 命令行客户端

  • JDBC驱动程序

  • ODBC驱动程序

  • C ++客户端库

非官方的第三方库工具:

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

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


# 0 三个默认的端口:

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

    <http_port>8123http_port>    <tcp_port>9000tcp_port>    <mysql_port>9004mysql_port>

HTTP方式:

d3a21e9d11eb234ab16b63f91f09d04c.png

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

1f36f2a5aa584b0082e17ef345e6c876.png

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

3041b078200386c47fd6ee3aa9251113.png

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

89b86937da903ba36fd823e2433a898c.png

用MariaDB就完全没这种问题

109be7fe8aaf34697af68fafb71ce064.png

# 2 MySQL Workbench

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

40af6e91c9744f17ae2245f0ae791e47.png

# 3 Navicat 

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

9fee5c1cfab8e469f23b6e3aa9e73054.png

用HTTP方式同样不行:

1169eb9578aa911b09666aeae62966f3.png

# 4 DBeaver

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

10ec03e4a4410ee901517a99f922ed78.png

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

2ac095df6b65abb844841746773dfb0e.png

配置好JCDB方式的连接

3e9b243e0fa5cb6084ed55c0d8f9db30.png

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

d2681dda660b9155b4904c2add04ab2d.png

# 5 Tabix

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

acf6caee35860958a74d6dd856b84f32.png

安装很简单:

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

01ba5c47d8d5134332ee942ac82b7510.png

这种性冷淡风格,很好。

f3208831ea77820356cdf3bdab7aa433.png

# 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.


[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. 测试下连接:

100164a57a894d09a46aaeb85571203c.png

执行各种SQL都很6

b916a55a9bc8b7cb725d5673813361ce.png

1940cb97714dc163ffef3eb7d2e377e3.png

通过Navicat试试,也没问题。

4591bde0192917ae61009ef495447af8.png

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

9847656d4955b3e292bee7531e6b0b19.png


# 最后总结下这些工具:

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

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

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

  • MySQL Client   

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

    • 加上ProxySQL好很多

  • Navicat   

    • 不支持MySQL接口

    • 加上ProxySQL支持

  • MySQL Workbench   

    • 不支持MySQL接口

    • 加上ProxySQL也不行

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

bd229b4f2abf171bef44f091828faf49.png


# 历史文章

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

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

    Orchestrator:01 基础篇

    Orchestrator:02 高可用方案VIP篇

    Orchestrator:03 高可用方案ProxySQL篇

    Orchestrator:04 高可用方式部署

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

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

    PMM监控的告警配置

    PMM的Ansible部署与重点指标

    在PMM中添加Redis和ES

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值