当前位置: 首页 > 科技观察

MySQL数据克隆的用户权限设计

时间:2023-03-12 04:18:45 科技观察

最近完成了第一版的数据逻辑备份恢复功能,和业务方做了一些交流和论证,发现他们对备份和备份上的一些东西不够敏感recovery这边,因为一些术语他们不太明白所谓的备份和恢复能干什么,所以我们讨论了一番,最后决定改成“数据克隆”。1、产品定位:数据克隆是一种高效、安全的方式,通过在线克隆指定数据库/表的数据,快速搭建虚拟环境,提供更高效的数据交付服务。效率方面,可支持业务自助数据抽取,分钟级快速搭建环境,通过workbench等工具接入数据。整个过程基本不需要DBA手动操作。安全方面,支持数据操作日志审计,提供库/表访问过滤、随机虚拟环境和临时密码传递,限制虚拟环境的使用时间,尽可能保证数据安全。2、适用场景:目前数据克隆功能支持以下场景:1)快速查看在线配置数据2)提取在线表结构3)日志数据查询,在线大表4)在线SQL异常,快速搭建虚拟环境SQL优化、压力测试等5)指定大表变更和数据操作影响评估6)数据补丁合并,基于业务逻辑的数据操作和数据补丁整理整个实现过程有很多细节需要考虑,但是还在设计是我和同事在实现中解决的。到了交付的时候,我们觉得还有一个关键点需要补充,就是数据库和用户权限的关联,也就是说每个人能看到和使用的数据库应该是不一样的,因为有些权限隔离,所以接下来我会讲一下数据克隆方向的用户权限设计。数据克隆的用户权限设计是业务使用的一项基本功能。目前,用户权限的设计可以基于数据库层面。权限的实现可以分两个阶段完成:1)在数据初始化阶段,可以批量初始化用户组,可以从工单历史中获取一些数据。2)在定制化配置阶段,根据业务需求和组织架构调整数据库与用户的映射关系。其中,实例信息和库信息可以基于数据库基线表mysql_db_baseline用户组信息和用户信息可以基于用户表user_info需要建立数据库-用户关系表,表名为:mysql_db_user_rel(id,ip_addr,db_port,db_name,user_id)需要实现四个子函数:1)数据库-用户关系映射,实现单个数据库和单个用户的关系,是关系表中的一条记录2)数据库-用户关系列表,通过数据库维度(IP+端口+数据库名)查看相关用户列表信息3)数据库-用户组关系映射,实现单个数据库与单个用户组的关系,具体逻辑为:a)输入数据库信息(IP+端口+数据库名),UserIDb)根据UserID关联用户组信息c)根据用户组获取组内的UserID列表p信息d)循环用户列表,根据数据库-用户关系建立映射,需要考虑过滤重复记录4)实例列表信息,根据用户UserID获取所属实例列表,具体逻辑为:a)输入UserIDb)根据UserID在数据库-用户关系表中获取相关数据库列表,进一步过滤得到实例IP+端口信息码关注。转载本文请联系杨建荣学习笔记公众号。