小言_互联网的博客

私有云MySQL多租户权限的初版设计

314人阅读  评论(0)

这是学习笔记的第 2184 篇文章

读完需要

9

分钟

速读仅需5分钟

关于MySQL私有云平台的方案设计,最从开始要基于RDS的设计方式到现在的迭代,其实还是走过了一段旅程,也算是比较坎坷,我来总结一些思路。

1.首先是实例的概念解释:

通常和业务所说的实例和数据库的实例有一些差别,虽然粒度都是IP和端口。

从业务角度来说:

1)对于单实例环境,实例为单实例本身(IP/域名和端口)

2)对于主从环境,实例为相应的主库环境(IP/域名和端口,暂不可考虑读写分离);

3)对于集群环境,实例为相应的代理服务入口

如果仅存在一个代理,实例为代理IP/域名和端口

如果代理层实现负载均衡,则为相应的service_name和端口

从DBA的角度来说:

实例,主机,集群都是相对独立但又密切关联的模块。 

1)对于单实例环境,实例为单实例本身(IP/域名和端口)

2)对于主从环境,实例为相应的主库和从库环境(IP/域名和端口);

3)对于集群环境,实例为相应的分片节点,包括分片节点主库和从库

2.然后是租户的概念:

租户这个概念该怎么理解,其实可以分很多维度,但是不过怎么来说,他需要有一个统一的业务属性,可以是项目经理,或者是业务部门管理者。

在数据库层面,理论上一个实例,多个实例都可以归属于一个租户,但是从数据库层面来说,建议租户的粒度可以细化到一个实例,一个实例下面有多个DB实现租户成员多元化管理。

租户管理在实例层面的管理都是基于实例这一个基础的维度。

有的同学可能会说租户是不是会很多,其实从使用来说,不会感觉到很多。

因为在一个用户登录之后,他能够看到的实例其实就已经做好了第一层的过滤,他看到的实例列表是有限的。而实例在业务层面的粒度其实和数据库层面的实例概念存在一些偏差,对于业务来说会屏蔽一些不必要的信息。要做某个数据库的管理,是基于某个实例而言,所以一个开发人员可以归属于多个租户,而一个实例下的数据库只能归属于一个租户。

2.然后是租户权限的设计:

权限体系的基础设计,我们可以需要做到租户层级的管理,同时也需要做到租户间的隔离性。

比如一个用户A请了一个实例,他是某某业务的负责人,那么这个用户A就是一个租户管理员,他创建实例的时候就会生成一条租户注册信息,同时会生成相应的租户账号信息,在这个基础上租户管理员(用户A)可以给其他租户成员(如用户B,用户C)等赋予相应的实例管理权限。

稍后可以进行新建数据库等操作,创建数据库后可以把租户下的数据库(比如数据库A,数据库B,数据库C)的相关权限赋予相应的租户成员,这样虽然都是一个租户内,但是他们的权限可以存在差异化。

整体的设计如下图所示:

要进行基于数据库的一些常规操作(比如创建表,修改数据等)时,租户成员的差异化就会显现出来了。

 按照预设的场景,整个基础的管理部分,DBA可以提供后端的技术支撑,同时可以和业务操作紧密结合起来,这其中的一把尺子就是资源成本。

而DBA的服务就可以实现多样化。

基础服务有高可用,分布式,读写分离,备份恢复等,

业务服务有SQL审核,SQL慢日志优化,SQL自助优化,业务巡检和监控查询等。

 

订阅我的微信公众号“杨建荣的学习笔记”,第一时间免费收到文章更新。别忘了加星标,以免错过新推送提示。

7

   

近期热文

你可能也会对以下话题感兴趣。点击链接就可以查看。

8

   

转载热文

你可能也会对以下话题感兴趣,文章来源于转载,点击链接就可以查看。


转载:https://blog.csdn.net/yangjianrong1985/article/details/103917934
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场