数据库之扑朔迷离 2019-07-01
本文由云+社区发表作者:腾讯云数据库
随着云计算和数据库技术的发展,数据库正在变得越来越强大。数据库的性能如处理速度、对高并发的支持在节节攀升,同时分布式、实时的数据分析、兼容主流数据库等强大的性能正在越来越多的新型数据库上实现。
然而另一方面,数据库需要承担的业务越来越重,面临的场景也越来越复杂,开发者和运维人员不但日常需要管理超级复杂的数据,也会频繁面推的业务告警和突发状况。
那么如何解决这个令人头痛的问题呢?这时候如果有一个安全高效的远程数据库管理工具,不但能搞定数据库性能的实时监控和诊断,也能做到方便高效数据的可视化管理,你用不用?哪怕你是高冷如只用记事本编程的大神,或者强大的十年经验DBA,恐怕也只能在心里说一句:真香!
正式基于上述背景,这些年来,不少数据库管理工具不断被人开发出来。其中有SQLyog、Adminer等开源工具,也有腾讯云DMC、阿里云DMS等云厂商开发的工具,更有Navicat等第三方工具受人青睐。
笔者总结了三款具有代表性的开源数据库管理工具,功能上大多类似。他们的异同如下所示:
工具名称 | 使用平台 | 交互方式 | 优缺点 |
---|---|---|---|
SQLyog | Windows | 软件 | 免费版本不够强大 |
phpMyAdmin | - | Web | 功能较全,公网部署,不安全、权限不足 |
Adminer | - | Web | 比phpMyAdmin更安全一点,轻量级,除了MySQL还支持 SQLite, PostgreSQL, MS SQL, Oracle |
具体其他差异还包括功能的细节支持,性能表现,安全性上,在此不做深入的探讨研究。
通过对开源数据库管理工具的功能进行分析统计,我找到了关系型数据库管理工具的基本功能需求,至少具备下述功能:
因为安全性、功能限制、稳定性等种种原因,开源的数据库管理工具基本不可能在企业在开发和运维数据库时考虑之列,更强大更稳定的付费版或者企业版才是主流。随着云数据库的应用越来越广,各大云厂商也在为中小企业客户提供更方面的数据库管理工具,他们的产品迭代方向代表着广大用户的需求。在次,笔者总结了5个数据库管理工具的发展方向,以供参考。
可视化:实时性能监控、流量监控、SQL图表展示、ER图,一个直观友好的可视化界面远胜复杂详细的表格和数据。
跨平台:为了能够在不同桌面操作系统使用同一个工具,数据库管理工具逐渐从桌面工具向Web端演化。但是web端还不够,有些实时监控和简易操作,需要放在手机端完成,真正做到随时随地管理数据库。实现无缝跨平台管理。
兼容性:一个项目中包含多种数据库是非常常见的情况,那么能不能兼容MySQL之外还兼容其他主流关系型数据库呢,甚至兼容主流nosql数据库?这样大大简化了项目管理成本,也提高了效率。
智能化:数据审计、告警预警、智能诊断,这些代表着DevOps前沿的能力,能不能被整合到管理工具中,减少项目运维开发的成本。
安全性:远程访问是否会导致数据泄漏?用户权限如何分级?多用户协作如何管理?这些问题对企业用户来说非常重要。
综上,一个好的数据库管理工具,既需要有完备的基础功能,也要符合上述这5大特性的要求,这样才能成为企业青睐的好工具。带着以上观点,我们再去看看主流云厂商提供的数据库管理工具能不能符合要求。
DMC是腾讯云提供的关系型数据库管理工具,目前支持MySQL和MariaDB,腾讯云的数据库管理功能由控制台、DMC和小程序提供。
我们先看控制台,控制台可以完成数据库详情查看、数据库实例监控等操作,还可以完成数据备份管理、数据回档、连接检查等实例级别的操作。
实例监控涉及了24个参数,可以设置不同的时间范围,支持缩放,同时也可以合并监控,需要注意的是,控制台的监控数据较实际查看时间有所滞后,实时数据需要去DMC中查看。
控制台中还实现了数据导入功能,可以设置参数,也可以为数据库添加账号并设置权限。
接下来是DMC,在控制台中点击登录即进入DMC,需要使用数据库的账号密码。DMC中包含了库表级操作,实时性能监控、会话管理,InnoDB锁等待管理几个功能。
实时监控中包含了MySQL状态、InnoDB操作、线程数和网络读写等信息,每4秒钟更新一次。
使用的是表格形式来展示,不够用户友好,且MySQL状态中有很多缩写没有说明含义,对于小白用户来说可能比较迷惑。
在DMC中有一个进入PMA入口,这是腾讯云为了补充DMC功能,为用户提供的内嵌phpMyAdmin管理工具。
phpMyAdmin中提供的SQL操作、批量SQL、导入导出等功能,是对DMC和控制台功能的一个补充,也可能是考虑到部分用户对phpMyAdmin比较熟悉,照顾到了该部分用户的使用习惯。
但是phpMyAdmin也有一些迷惑用户的地方,比如变量设置这一功能其实跟控制台的参数设置重合了,但具体查看又发现两个功能的参数并不完全一样,各自只能覆盖MySQL的一部分参数,这里还需要给用户更详细的说明。
最后重点来说一说小程序。小程序是腾讯云将数据库管理功能应用到移动端的形式,小程序相比较App无需安装,比较轻量级,又依附了强大的微信生态。对于非工作时间的运维人员来说,使用小程序监控数据库状态是最合适不过的。(小程序搜索腾讯云助手即可使用)
腾讯云助手集合了很多腾讯云产品,目前数据库产品支持MySQL和Redis。关注“腾讯云数据库TencentDB”微信公众号,底部“一键管理”可直接进入腾讯云小程序,在移动端即可一键管理数据库。
我们进入MySQL,根据所在地和项目选择所需要管理的数据库,可以对数据库执行重启操作。
可以看到有实例详情和监控列表两大块。
实例详情中介绍了数据库版本、计费模式等产品配置信息,还有数据库的运行状态和字符集等基本信息。监控列表中则给出了很多详细的性能监控,如慢查询、连接数等,如下图所示:
笔者统计了一下监控列表中的参数,分别是每秒执行操作数、最大连接数、慢查询数、全表扫描数、查询数、写操作、总请求数、查询使用率、临时表数量、等待表锁次数、缓存命中率、缓存使用率、读磁盘数量、写磁盘数量、fsync(同步内核缓冲区)数、缓存命中率、缓存使用率,一共17个参数。
从UI设计上来说,考虑到手机的长条形屏幕跟PC端区别较大, 所以选择将性能参数走势图竖着放置,便于观看和操作。浏览的时候还可以选中坐标查看具体值:
另外由于手机端难以缩放,所以提供了数据走势实时(1小时内)、昨天、7天等三个选项,方便用户切换浏览。
但是设计上同时也有一些缺点,参数列表过长使得用户如果要浏览某个比较靠后的性能参数需要下滑很久,可以考虑将这些参数分成大类提供标签切换。
功能上来说,腾讯云助手提供了大多数性能参数的可视化浏览,以及数据库实例的重启操作,尽管提供的操作比较少,但是基本满足了运维人员临时快速诊断的场景需求。
综上,腾讯云通过控制台、dmc、内置的phpMyAdmin包括小程序提供了数据管理的功能,满足了基本功能需求。但对于兼容性和智能化等产品特性还不充分,腾讯云需要继续扩充对其他类型数据库的支持。同时腾讯云数据库管理存在功能过于分散的缺点,控制台、dmc和phpMyAdmin功能互相重复冲突,容易让用户感到困惑,于此同时也不方便合理的权限控制管理(比如控制台的文件导入功能却不需要数据库账号密码)。为了解决这个问题,可以考虑将内置phpmyadmin和控制台的功能尽可能整合到dmc内,这样方便用户寻找入口,也可以提供统一的用户体验。
此文已由腾讯云+社区在各渠道发布
获取更多新鲜技术干货,可以关注我们腾讯云技术社区-云加社区官方号及知乎机构号