读写分离的方法、系统和数据库代理服务器技术方案

技术编号:13798736 阅读:119 留言:0更新日期:2016-10-06 23:41
本发明专利技术公开了一种读写分离的方法、系统和数据库代理服务器,属于通信技术领域。所述方法包括:数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;所述数据库代理服务器接收所述客户端的写请求时,通过公用ID和公用密码与主数据库建立主库连接,将所述客户端ID发送至所述主数据库,使所述主数据库将所述主数据库的当前用户由所述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述公用ID对应的权限更改为所述客户端ID对应的权限;所述数据库代理服务器将所述写请求通过所述主库连接转发至所述主数据库,对所述主数据库进行写操作。本发明专利技术可以提高安全性。

【技术实现步骤摘要】

本专利技术涉及通信
,具体涉及一种读写分离的方法、系统和数据库代理服务器
技术介绍
数据库(Database)是按照数据结构来组织、存储和管理数据的仓库。数据库中的数据以一定方式储存在一起,可以供多个客户端共享使用。为了方便多个客户端共享使用数据库,缓解只有一个数据库的压力,目前常常会设置一个主数据库,对主数据库进行主备复制得到多个备数据库(备数据库中的数据与主数据库中的数据相同),然后应用读写分离技术,即客户端的读请求(客户端在执行查询语句时)访问备数据库,客户端的写请求(客户端在执行更新语句时)访问主数据库。现有读写分离的具体过程如下:数据库代理服务器接收客户端的备库连接请求,其中,备库连接请求中携带客户端ID(标识)和客户端密码。数据库代理服务器根据客户端ID,将备库连接请求发送到对应的备数据库。备数据库接收备库连接请求,获取客户端ID和客户端密码,对客户端进行验证,如果验证通过,则与数据库代理服务器建立连接。数据库代理服务器接收客户端的操作请求,如果是读请求,则数据库代理服务器直接对备数据库进行与读请求对应的读操作;如果是写请求,则数据库代理服务器通过公用ID和公用密码,与主数据库建立连接,对主数据库进行与读请求对应的写操作。然而,现有读写分离的方法,多个客户端均通过同一公用ID与主数据库建立连接,公用ID的权限设置为多个客户端的权限的并集,从而使某些客户端拥有本来不属于他的权限,对主数据库进行超越权限的操作,安全性差。例如:客户端A原来的权限是只可以对主数据库中的A部分数据进行
写操作,客户端B原来的权限是可以对主数据库中的A部分数据和B部分数据进行写操作,客户端A和客户端B通过同一公用ID与主数据库建立连接,公用ID的权限设置为可以对主数据库中的A部分数据和B部分数据进行写操作,从而客户端A也可以对主数据库中的B部分数据进行写操作。
技术实现思路
为了解决现有技术的问题,本专利技术提供了一种读写分离的方法、系统和数据库代理服务器,数据库代理服务器在与客户端对应的备数据库建立备库连接后,当接收到写请求时,数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接,将客户端ID发送至主数据库,从而使主数据库接收客户端ID,将主数据库的当前用户由公用ID更改为客户端ID,将主数据库的当前用户的权限由公用ID对应的权限更改为客户端ID对应的权限,使得客户端不能拥有本来不属于他的权限,对主数据库进行超越权限的操作,提高安全性。为了解决上述问题,本专利技术公开了一种读写分离的方法,所述方法包括:数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;所述数据库代理服务器接收所述客户端的操作请求;当所述操作请求为写请求时,所述数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接,将所述客户端ID发送至所述主数据库,从而使所述主数据库接收所述客户端ID,将所述主数据库的当前用户由所述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述公用ID对应的权限更改为所述客户端ID对应的权限;所述数据库代理服务器将所述写请求通过所述主库连接转发至所述主数据库,对所述主数据库进行与所述写请求对应且符合所述客户端ID对应的权限的写操作。进一步地,数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端ID,包括:所述数据库代理服务器接收所述客户端发送的备库连接请求,其中,所述备库连接请求中携带所述客户端ID和客户端密码;所述数据库代理服务器将所述备库连接请求转发至与所述客户端对应的备数据库,从而使所述备数据库接收并从所述备库连接请求中获取所述客户端ID和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端进行验证,当验证通过后,与所述数据库代理服务器建立备库连接;所述数据库代理服务器从所述备库连接请求中获取所述客户端ID,并保存所述客户端ID。进一步地,所述数据库代理服务器接收客户端的操作请求之后,还包括:当所述操作请求为读请求时,所述数据库代理服务器将所述读请求通过所述备库连接转发至与所述客户端对应的备数据库,对所述备数据库进行与所述读请求对应的读操作。进一步地,所述数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接,包括:所述数据库代理服务器将所述公用ID和所述公用密码发送至所述主数据库,从而使所述主数据库接收并根据所述公用ID和所述公用密码对所述数据库代理服务器进行验证,当验证通过后,与所述数据库代理服务器建立主库连接。进一步地,数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接之后,还包括:所述数据库代理服务器缓存所述主库连接。为了解决上述问题,本专利技术还公开了一种数据库代理服务器,所述数据库代理服务器包括:获取模块,用于在所述数据库代理服务器与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;接收模块,用于接收所述客户端的操作请求;建立模块,用于当所述操作请求为写请求时,通过公用ID和公用密码与主数据库建立主库连接,将所述客户端ID发送至所述主数据库,从而使
所述主数据库接收所述客户端ID,将所述主数据库的当前用户由所述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述公用ID对应的权限更改为所述客户端ID对应的权限;写操作模块,用于将所述写请求通过所述主库连接转发至所述主数据库,对所述主数据库进行与所述写请求对应且符合所述客户端ID对应的权限的写操作。进一步地,所述获取模块包括:接收单元,用于接收所述客户端发送的备库连接请求,其中,所述备库连接请求中携带所述客户端ID和客户端密码;转发单元,用于将所述备库连接请求转发至与所述客户端对应的备数据库,从而使所述备数据库接收并从所述备库连接请求中获取所述客户端ID和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端进行验证,当验证通过后,与所述数据库代理服务器建立备库连接;保存单元,用于从所述备库连接请求中获取所述客户端ID,并保存所述客户端ID。进一步地,所述数据库代理服务器还包括:读操作模块,用于当所述操作请求为读请求时,将所述读请求通过所述备库连接转发至与所述客户端对应的备数据库,对所述备数据库进行与所述读请求对应的读操作。进一步地,所述建立模块包括:建立单元,用于将所述公用ID和所述公用密码发送至所述主数据库,从而使所述主数据库接收并根据所述公用ID和所述公用密码对所述数据库代理服务器进行验证,当验证通过后,与所述数据库代理服务器建立主库连接。进一步地,所述数据库代理服务器还包括:缓存模块,用于当通过公用ID和公用密码与主数据库建立主库连接后,缓存所述主库连接。为了解决上述问题,本专利技术还公开了一种读写分离的系统,所述系统包
括:数据库代理服务器和主数据库;其中,所述数据库代理服务器包括:获取模块,用于在所述数据库代理服务器与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;接收模块,用于接收所述客户端的操作请求;建立模块,用于当所述操作请求为写请求时,通过公用ID和公用密码与所述主数据库建立主库连接,将所述客户端ID发送至所述主数据库;其中,所述主数据库包括:更改模块,用于接收所述客本文档来自技高网
...

【技术保护点】
一种读写分离的方法,其特征在于,所述方法包括:数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;所述数据库代理服务器接收所述客户端的操作请求;当所述操作请求为写请求时,所述数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接,将所述客户端ID发送至所述主数据库,从而使所述主数据库接收所述客户端ID,将所述主数据库的当前用户由所述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述公用ID对应的权限更改为所述客户端ID对应的权限;所述数据库代理服务器将所述写请求通过所述主库连接转发至所述主数据库,对所述主数据库进行与所述写请求对应且符合所述客户端ID对应的权限的写操作。

【技术特征摘要】
1.一种读写分离的方法,其特征在于,所述方法包括:数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;所述数据库代理服务器接收所述客户端的操作请求;当所述操作请求为写请求时,所述数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接,将所述客户端ID发送至所述主数据库,从而使所述主数据库接收所述客户端ID,将所述主数据库的当前用户由所述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述公用ID对应的权限更改为所述客户端ID对应的权限;所述数据库代理服务器将所述写请求通过所述主库连接转发至所述主数据库,对所述主数据库进行与所述写请求对应且符合所述客户端ID对应的权限的写操作。2.如权利要求1所述的方法,其特征在于,数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端ID,包括:所述数据库代理服务器接收所述客户端发送的备库连接请求,其中,所述备库连接请求中携带所述客户端ID和客户端密码;所述数据库代理服务器将所述备库连接请求转发至与所述客户端对应的备数据库,从而使所述备数据库接收并从所述备库连接请求中获取所述客户端ID和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端进行验证,当验证通过后,与所述数据库代理服务器建立备库连接;所述数据库代理服务器从所述备库连接请求中获取所述客户端ID,并保存所述客户端ID。3.如权利要求1所述的方法,其特征在于,所述数据库代理服务器接收客户端的操作请求之后,还包括:当所述操作请求为读请求时,所述数据库代理服务器将所述读请求通过所述备库连接转发至与所述客户端对应的备数据库,对所述备数据库进行与所述读请求对应的读操作。4.如权利要求1所述的方法,其特征在于,所述数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接,包括:所述数据库代理服务器将所述公用ID和所述公用密码发送至所述主数据库,从而使所述主数据库接收并根据所述公用ID和所述公用密码对所述数据库代理服务器进行验证,当验证通过后,与所述数据库代理服务器建立主库连接。5.如权利要求1-4任一权利要求所述的方法,其特征在于,所述数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接之后,还包括:所述数据库代理服务器缓存所述主库连接。6.一种数据库代理服务器,其特征在于,所述数据库代理服务器包括:获取模块,用于在所述数据库代理服务器与客户端对应的备数据库建立备库连接后,获取并保存客户端ID;接收模块,用于接收所述客户端的操作请求;建立模块,用于当所述操作请求为写请求时,通过公用ID和公用密码与主数据库建立主库连接,将所述客户端ID发送至所述主数据库,从而使所述主数据库接收所述客户端ID,将所述主数据库的当前用户由所述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述公用ID对应的权限更改为所述客户端ID对应的权限;写操作模块,用于将所述写请求通过所述主库连接转发至所述主数据库,对所述主数据库进行与所述写请求对应且符合所述客户端ID对应的权限的写操作。7.如权利要求6所述的数据库代理服务器,其特征在于,所述获取模块包括:接收单元,用于接收所述客户端发送的备库连接请求,其中,所述备库连接请求中携带所述客户端ID和客户端密码;转发单元,用于将所述备库连接请求转发至与所述客户端对应的备数据库,从而使所述备数据库接收并从所述备库连接请求中获取所述客户端ID
\t和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端进行验证...

【专利技术属性】
技术研发人员:林晓斌
申请(专利权)人:阿里巴巴集团控股有限公司
类型:发明
国别省市:开曼群岛;KY

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1