CloudQuery 一款基于 Web 的数据库客户端测试(转自杨建荣的学习笔记)

(转自《MySQL / Oracle DBA 工作笔记》作者,DBAplus 联合创始人、Oracle AEC 杨建荣的博客)

对于数据库客户端的使用,一直以来都有一些困扰,我想对很多人来说都或多或少会有:

1)多种数据库的客户端软件使用方式是独立的,几乎不存在交集

2)客户端软件的安装对于多数据库版本的兼容能力不同,比如Navicat低版本软件对于JSON类型的支持就很有限,比如Workbench的高版本对于MySQL协议服务不兼容(如MyCAT中间件,TiDB服务等)

3)对于客户端的使用难以审计,权限过大难以追溯,权限过小对业务不可用

4)客户端的权限数量众多,难以管理

5)客户端软件大多数是付费软件

6)对于DBA和很多后端开发同学来说,要做这样一款软件其实有些超纲,对于前端服务和用户体验的优化是比较困难的。

在找到CloudQuery这个项目的时候,是比较好奇的,不知道它能够解决我们工作中的哪些痛点,对于我来说,有两个硬性需求:

1)能够实现基于MySQL侧的WEB端管理

2)能够实现审计功能,

这两个需求能够满足,就算是前进了一大步。所以我找了个时间做了下测试,仅供参考。


1.软件安装

CloudQuery 的官网是:http://cloudquery.club/

这个产品是免费使用的,目前来看还在不断的迭代中,软件的安装模式有如下的几类,我个人比较倾向于离线版本的安装,因为实际的线上环境网络是受限制的,至少从安全性上考虑能够做到一定的隔离。

推荐使用完整版,因为完整版已经包含了审计插件,如果下载标准版后要补充审计功能还需要再次安装审计插件,下载的模式目前支持迅雷,百度网盘,腾讯微云和天翼云,是把安装文件托管在这些下载通道下。

对于很多同学来说,可能会有几个难点:

1)环境的配置是基于Linux环境,CentOS 7.5以上版本,所以不是基于Windows的exe安装

2)Linux环境中需要安装基础的docker环境,否则环境构建会失败

3)安装文件在2~3G左右,会比预想的大,下载的速度会比预期的慢一些

4)如果服务器配置比较低,安装中可能会有一些意料之外的问题,推荐按照官方要求的配置来部署

下载安装文件的过程基于网盘的流量情况,下载可能会花费一些时间,下载后解压的一些镜像文件如下,也可以整体看到一些技术栈的使用情况,比如整体服务是基于微服务架构的,数据库技术栈应该是使用了PostgreSQL+Redis,其中占用空间最大的terminal,是我个人比较喜欢的一个终端管理功能。

安装的过程比较简单,如下的3个命令即可安装:

  • unzip CloudQuery-[对应的安装版本].zip

  • chmod +x cloudquery-community.sh

  • ./cloudquery-standard.sh install

默认会自动启动服务,也可以使用cloudquery-stop.sh,cloudquery-start.sh手工启停。

  • ./cloudquery-stop.sh

  • ./cloudquery-start.sh

在安装前还是需要确认下内核版本和docker版本,可以使用如下的命令:

1)uname -r 确保是在3.10.0以上

2)docker version

如果docker兼容性不足,可以考虑合适的镜像,使用命令:

# yum list docker-ce --showduplicates | sort -r

在这里我使用的是 docker-ce-18.06.3.ce-3.el7 版本。


2.客户端功能体验

安装后,可以使用http://[IP]:9898来访问

第一次使用建议用超级管理员 admin001,避免一些权限上的差异导致的使用问题对于体验来说会比较全面。

总体来看,这个WEB端工具软件支持的数据库还是比较多的,目前支持8款数据库,我以MySQL侧的使用为主。

首先要配置数据库连接,这个过程属于常规操作,配置完毕后可以测试连接。

在数据查询区域可以选择对应的连接别名和对应的数据库,这样就可以根据使用场景灵活的切换数据库了,这个设计点还是不错的,在这个设计点上,比workbench要快捷一些。

对于查询结果集的导出,支持Excel,CSV,txt和PDF,值得一提的是,文件的导出都是可追溯的,有个小功能是“下载中心”,在里面可以随时提取。

导出的Excel格式文件如下:

个人最喜欢的功能是基于终端模式的,在连接配置处点开“打开终端”,整个操作和自己的客户端使用没有区别,对于后端管理来说很便捷清晰。

查询执行计划和SQL文本格式化功能也是齐全的,这些算是一些使用中的加分项。

对于SQL的语法提示还是比较实用的,这里可以看到也会做出提示。

对于数据库变更操作来说,这里的操作是可以随时编辑,确认之后就立即生效。

关于执行历史,这些是持久化存储的,可以随时查看,能够满足基本的审计需求,如果需要定位到使用人的基本信息是在审计模块中。


3.平台化管理

权限管理应该是CloudQuery的一大亮点了,是基于RBAC的权限模型设计,如果对于权限的管理无法实现细粒度多维度的管理,等推广到业务侧再进行管理是比较困难的。这里可以根据组织架构进行管理,可以分配不同的部门和小组进行管理,在其中配置相应的用户。

对于权限体系,主要实现了角色和权限两大层面,可以根据不同的角色类型进行不同的权限配置管理。

对于连接的管理也可以进行细粒度的管理,可以根据某一些权限明细项,对应指定很细粒度的权限配置。

还有一个亮点的部分就是连接的共享,默认我们创建的连接是可以共享的,比如我把一个数据库连接配置共享给某个同事,他不需要做额外的配置刷新数据查询区就可以直接复用,对于类似租户管理的模式是比较适用的,比如一个开发组我们给予开发组长一定的权限,那么他可以把某个数据库的连接配置在内部进行共享,避免重复配置和管理,后续管理信息变化也可以联动变更。

此外有一些比较个性化的服务,比如个人文件夹等,可以把导出的文件存储下来,通过Web端进行管理。

最后是审计的部分,是整个产品的重心和亮点,也是业务侧使用WEB端比较关心的,对于审计侧的基础功能来说都能够支持,比如审计分析看板和审计日志查询。

对于审计日志的查询,这是区别于客户端使用之外的体验,毕竟在平台化管理中可以方便审计管理和分析,对于管理员和安全审计来说,可以直接通过这个看板和明细列表看到整体的使用情况。

小结

CloudQuery 是一种全新的数据库客户端使用模式,能够让客户端的使用从本地单一模式变为WEB统一管控模式,适合从 0–1 的构建整个基础服务体系,在整体的使用上能够满足一些基础使用需求(数据查询,数据导出,数据格式化)和管理需求(执行历史,下载文件管理,审计看板等),此外,产品是完全免费使用的,并且支持离线安装。

当日在使用中也会有一些疑问和问题,比如在安装部署方面需要投入较多的精力且安装文件较大,会有一些额外的资源成本和学习成本,同时产品文档中对于一些技术细节的内容比较少,对于服务的监控,高可用管理和平滑升级应该会随着业务需求的接入成为一个新的关注目标。官方在使用的过程中也给予了大力支持,整体上对于使用者来说,是相对便捷轻量的。

最后提一下,v1.3.4 在今天发布了,感兴趣的可以试一下最新的改进功能。