本文作为《数据库工具选型指南》系列的一部分,通过对话一线技术专家,旨在帮助用户了解选型的重要性和方法,提供关键因素和考虑要点。通过比较和评估不同工具,读者可以深入了解每种工具的性能和成本差异。
数据库工具能够显著提高数据库管理的人效,通过自动化和标准化来减少DBA重复执行固定操作的时间成本,还可以帮助DBA避免人为误操作及其带来的潜在风险,通过确保操作的一致性,让任务和流程按照统一、标准的方式执行,从而防止了因不同DBA执行差异而产生的潜在问题。
近日,我们有幸采访到了狮桥集团DBA总监张文精,就数据库工具的选型问题进行了深入探讨。
数据库工具选型六步法:从需求到整合
谈及在进行数据库工具选型时,有哪些可以采取的方法和策略。张文精指出了以下六个关键步骤:
第一步:明确需求与目标
明确我们究竟需要借助工具来解决何种问题,其基本需求具体为何,以及最好能够达成怎样的效果。
第二步:评估现有资源
评估是否可以从现有的平台或工具上进行扩展或衍生,以满足我们的需求。如果可以,我们需要进一步估算改造和研发的成本,并与直接购买或开发新工具的成本进行比较。
第三步:同行交流与内部沟通
积极开展同行交流以及加强内部沟通,通过了解其他公司是如何解决类似问题,我们可以获得宝贵的见解,并寻找是否有现成的或类似的解决方案可以借鉴。
第四步:筛选数据库工具
在收集到一些数据库工具之后,我们需要进行细致的筛选。首先,需要确认这些工具的功能是否满足我们的需求;其次,还应关注它们是否开源、开发语言是否适合我们的团队、是否具备二次开发的潜力,以及稳定性如何。
在选型数据库工具的过程中,我们应综合考虑多个关键因素以确保选定的工具能够满足业务需求。首先,功能性至关重要,它决定了工具能否有效地解决我们面临的问题。其次,可靠性是我们必须考虑的,特别是关于安全性的方面,我们需要确保工具的使用不会引入新的风险或问题。
行业认可度也是一个不可忽视的因素,我们应避免选择过于小众的解决方案和工具,以免在未来面临支持不足或维护困难的问题。最后,可扩展性同样重要,包括工具是否开源以及它的开发语言是否与团队习惯相匹配,这些都将影响我们未来的发展和维护工作。
张文精倾向于选择免费的开源软件,这主要是基于两个方面的考虑。首先,付费工具通常价格较高,增加了使用成本,而开源工具则提供了更为经济的选择。
其次,当需要将数据库工具集成到现有的DBA平台中时,开源工具的改造和调试难度相对较低。特别是当面对一些需要二次开发的自定义需求时,开源工具的优势尤为明显,因为它们允许我们根据实际需求进行灵活定制。
至于国内和国外软件的倾向性,张文精并没有固定的偏好。他表示,“在处理复杂工具时,我们可能会稍微偏向国内软件,因为中文文档的阅读性往往优于翻译过来的文档,这对于我们理解工具的使用和功能具有积极的影响。”
第五步:实验与验证
在筛选出合适的数据库工具后,我们需要在测试环境中进行试用。对于需要改造的工具,我们应投入少量资源进行初步验证,以确认改造的可行性和效果。
第六步:整合与平台化
将选定的数据库工具整合到现有的DBA平台之中,确保所有的工具都能在同一个平台下使用。这样不仅可以提高使用效率,还能确保数据的一致性和安全性。
总的来看,通过明确需求与目标、评估现有资源、同行交流与内部沟通、筛选数据库工具、实验与验证以及整合与平台化这六个步骤,我们建立了一套全面且系统的数据库工具选型与整合流程。
优秀的数据库工具:goinception、gh-ost、Archery
作为用户,张文精认为,“目前主流的数据库工具在多个方面已经做得相当出色,但仍有几个关键的领域需要进一步的改进和优化,特别是在数据库安全领域。”通过增强的数据防火墙功能、统一的数据库安全标准和框架、增强的数据访问控制和审计功能、自动化的安全漏洞检测和修复、提高用户的安全意识和培训,进而提高数据库工具的安全性和可靠性。
在张文精看来,“优秀的数据库工具应当具备稳定可靠、高效解决问题、方便集成、支持二次开发的能力。”基于此,他推荐了goinception、gh-ost以及Archery这几款上手快、安装简单、方便易用的数据库工具。
1、GoInception
GoInception是一个基于Go语言的MySQL自动化运维工具,具有审核、执行、备份及生成回滚语句等功能。它通过对执行SQL的语法解析,返回基于自定义规则的审核结果,并提供执行、备份以及生成回滚语句的功能。
核心功能包括:
审计功能:GoInception规则可以对数据库的操作进行审计,记录每一条SQL语句的执行情况和结果。通过审计功能,可以追踪数据库的变更情况,及时发现潜在的问题和安全隐患。
回滚功能:GoInception规则可以对数据库的操作进行回滚,即撤销已执行的SQL语句。通过回滚功能,可以快速修复错误操作或恢复到之前的数据库状态,避免数据丢失和业务中断。
模板引擎:GoInception还提供了强大的模板引擎,允许开发者定义模板,根据输入的数据结构,自动生成对应的Go代码,如模型文件、API接口、数据库迁移等。
数据绑定:GoInception能够将JSON或YAML配置文件中的数据映射到模板中,实现动态代码生成。
插件系统:通过插件机制,GoInception可以扩展新的代码生成功能,满足不同场景的需求。
友好的命令行界面:GoInception提供了友好的CLI,方便开发者快速调用和集成到现有的开发流程中。
张文精如此评价到,“GoInception数据库审核工具,适用于SQL审核上线,几乎完美的解决了SQL上线审核的难点和痛点问题,非常方便集成到现有系统中。”
2、gh-ost
gh-ost是GitHub发布的一款针对MySQL的无触发器在线模式迁移解决方案。它主要使用binlog(二进制日志)流来捕获表数据的变化,并将这些变化异步地应用到“幽灵表”上,而不是像其他工具那样使用触发器。这种设计使得gh-ost在迁移过程中对主服务器产生的工作量很少,与已迁移表上的现有工作负载分离。
核心功能包括:
无触发器在线DDL迁移:gh-ost使用binlog(二进制日志)流来捕获表数据的变化,而不是像其他工具那样使用触发器。这种方式使得gh-ost在迁移过程中对主服务器产生的工作量很少,与已迁移表上的现有工作负载分离,从而降低了生产环境中数据库DDL操作的风险。
可测试性:gh-ost支持对迁移过程进行测试,以确保数据的一致性和迁移的顺利进行。
可暂停性:gh-ost允许在迁移过程中暂停操作,以便在需要时进行调整或处理其他问题。
动态控制/重新配置:gh-ost提供了动态控制和重新配置的功能,可以根据需要调整迁移的参数和设置。
审计功能:gh-ost支持审计功能,可以记录迁移过程中的所有操作和数据变化,以便进行后续分析和审查。
许多操作特权:gh-ost提供了许多可操作的特权,使其更安全、可信赖且易于使用。例如,它可以更好地控制迁移过程,真正暂停迁移,并将迁移的写入负载与主服务器的工作负载分离。
张文精如此评价到,“gh-ost数据库上线工具,一般联合上面的inception工具一起使用完成SQL上线,需要注意的是在一些特定情况下有数据丢失的风险。”
3、Archery
Archery是一个开源的SQL审核查询平台,其核心功能主要围绕SQL语句的审核、管理和执行。该平台基于Docker进行安装,旨在帮助技术团队内部实现有效的SQL管理,包括数据库的统一管理和线上SQL操作的统一审核。
核心功能包括:
SQL审核:Archery提供了一站式的SQL审核能力,允许用户提交SQL任务,并对其进行审核。这有助于确保SQL语句的质量和合规性,防止有问题的SQL语句对数据库造成损害。
SQL执行:经过审核的SQL语句可以在Archery平台上执行,平台会提供必要的执行环境和资源。这确保了SQL语句的正确执行,并提高了工作效率。
变更数据备份:在执行SQL语句之前,Archery会自动对数据库进行备份,以防万一出现数据丢失或损坏的情况。这种备份机制保证了数据的安全性,并为用户提供了恢复数据的可能性。
|嘉宾介绍|
张文精
狮桥集团DBA总监
张文精曾在中青旅、艺龙网、途家网和去哪儿网等公司从事DBA工作。擅长数据库的自动化运维,带领团队成功开发了多个数据库运维管理平台,包括上线平台、查询和数据脱敏、流程模块化、报表平台和异构数据迁移工具等。目前狮桥集团负责DBA团队,致力于提升数据库管理效率,推动团队的发展和创新。