你的数据库真的规范吗?小心这些“潜在风险”!

这个简单的小功能,解决了无数企业最头疼的问题。

 

分享个比较常见的案例。某个客户,在全国范围有近千万的注册用户,日均交易量数十万笔。企业使用 MySQL 数据库存储核心业务数据,包括用户信息、订单信息、商品信息等。某天,企业运营团队接到用户反馈订单无法查询,部分页面显示错误,技术团队立马着手恢复数据,并展开调查,通过分析应用日志发现大量关于“订单数据不存在”的错误信息,然而应用程序未存在异常,转到 DBA 团队进行处理,DBA 通过查询订单数据表,发现大量订单数据缺失,分析 Binlog 日志,发现某个时间点存在大量的 DELETE 操作。

 

由于 Binlog 无法定位操作实体的原因,找到执行 DELETE 操作的研发人员又费了一番工夫,最终发现是该员工在进行测试时,误将生产环境当成了测试环境,执行了清除测试数据的脚本,导致接近 30% 的订单数据被删除,涉及近百万条记录,引发大量用户投诉。

由于此次事件对企业影响颇大,为防止类似事件再次发生,企业决定通过 NineData 的数据库 DevOps,规范化企业内部的数据变更流程,彻底杜绝误删问题。

 

目前互联网企业中,真正能够规范使用数据库的并不多,有很大一部分企业并未意识到这个问题,有些研发人员甚至直接进行生产环境的变更,这样会引发一系列的问题,例如无法追踪操作、变更未经审核、数据安全问题等。

 

 

为什么不做数据库规范化管理?

 

有小伙伴要说了,谁都知道要规范化管理数据库,但是做起来真没那么简单!最主要一个问题,趁手的数据库管理工具不好找,现在的开源工具弊端非常明显,例如:不支持商业数据库、不支持最新版本的数据库、出问题没人支持....等等。

 

确实,上述问题真实存在,如果需要进行数据库规范化管理,首当其冲就是找一个好工具。数据库管理不规范所带来的风险和潜在损失,不是所有企业都能承受的。

 

在这里,我推荐一款工具,NineData 数据库 DevOps,套用本文的案例,NineData 可以在最初就识别并阻止故障发生:
 
  • SQL 规范:自动拦截所有对生产环境发起的任何更改,防范风险于未然。
  • 审计日志:即使发生了故障,企业所有人对数据库所执行的所有操作,均可以通过审计日志功能进行快捷回溯,几秒就可以定位到责任人。

更重要的是,对于中小企业而言,如果企业的数据源数量不超过 10 个,则可以永久免费使用 NineData,投入成本基本为 0。

 

下面我们来了解下如何使用 NineData 规范企业数据库管理。
NineData 能做什么?

 

NineData 能做的太多了,可视化 IDE、可视化表结构设计、数据导入导出、数据追踪与回滚、数据归档与清理、SQL 代码审核、慢查询分析、批量数据库变更等等,这里我们只聊如何以最低的成本解决企业的数据库规范化管理问题。

 

1. 研发人员一站式的数据库 DevOps 平台

 

首先,你可以把企业的数据源都录入到 NineData 平台,一站式管理您的所有数据源,再也无需杂七杂八的数据库管理工具了,比如客户端、命令行工具等。NineData 提供统一的界面和操作方式,让你能够轻松管理不同类型的数据源,无论是关系型数据库、NoSQL 数据库还是数据仓库。

 

 

2. 自动化变更管理

 

然后,你可以在平台制定你的变更规则了,哪些操作可以直接执行,哪些操作需要审批后执行,哪些操作不允许执行...

 

 

制定完规则后,邀请你的所有开发人员登录 NineData,并为他们每个人配置权限,权限的粒度可以精细到列级别。

 

 

做完这些,你就可以收回所有直连数据库的账号,要求所有开发人员通过平台访问数据源了。

 

3. 操作审计

 

最后,对于哪个员工在什么时候对哪个数据库对象进行了什么操作,作为系统管理员的你可以通过平台的审计日志页面,一目了然地进行管理。在永久免费的 10 数据源专业版下,可以至多追溯到 3 个月之前的操作记录,例如本文案例中发生的故障,就可以通过 NineData 的审计日志功能轻松排查到操作人。

 

总结

 

经过上述一番简单的操作,如果你惊喜地发现,针对数据库的变更变得更加有序了,不规范的操作都自动被 NineData 拦截了,发布到数据库中的操作都是经过自己审批的,整个数据库管理过程变得更加透明和可控了。然后你更惊喜地发现,自己一分钱都没花,恭喜你,你已经实现了零成本的企业数据库规范化管理。