书签 分享 收藏 举报 版权申诉 / 23

读写分离的方法、系统和数据库代理服务器.pdf

  • 上传人:Y94****206
  • 文档编号:6198511
  • 上传时间:2019-05-20
  • 格式:PDF
  • 页数:23
  • 大小:1.29MB
  • 摘要
    申请专利号:

    CN201510062422.6

    申请日:

    2015.02.05

    公开号:

    CN105991565A

    公开日:

    2016.10.05

    当前法律状态:

    授权

    有效性:

    有权

    法律详情:

    授权|||实质审查的生效IPC(主分类):H04L 29/06申请日:20150205|||公开

    IPC分类号:

    H04L29/06; G06F17/30

    主分类号:

    H04L29/06

    申请人:

    阿里巴巴集团控股有限公司

    发明人:

    林晓斌

    地址:

    英属开曼群岛大开曼资本大厦一座四层847号邮箱

    优先权:

    专利代理机构:

    北京国昊天诚知识产权代理有限公司 11315

    代理人:

    许志勇;刘戈

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开了一种读写分离的方法、系统和数据库代理服务器,属于通信技术领域。所述方法包括:数据库代理服务器在与客户端对应的备数据库建立备库连接后,获取并保存客户端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
    和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端
    进行验证,当验证通过后,与所述数据库代理服务器建立备库连接;
    保存单元,用于从所述备库连接请求中获取所述客户端ID,并保存所
    述客户端ID。
    8.如权利要求6所述的数据库代理服务器,其特征在于,所述数据库
    代理服务器还包括:
    读操作模块,用于当所述操作请求为读请求时,将所述读请求通过所述
    备库连接转发至与所述客户端对应的备数据库,对所述备数据库进行与所述
    读请求对应的读操作。
    9.如权利要求6所述的数据库代理服务器,其特征在于,所述建立模
    块包括:
    建立单元,用于将所述公用ID和所述公用密码发送至所述主数据库,
    从而使所述主数据库接收并根据所述公用ID和所述公用密码对所述数据库
    代理服务器进行验证,当验证通过后,与所述数据库代理服务器建立主库连
    接。
    10.如权利要求6-9任一权利要求所述的数据库代理服务器,其特征在
    于,所述数据库代理服务器还包括:
    缓存模块,用于当通过公用ID和公用密码与主数据库建立主库连接后,
    缓存所述主库连接。
    11.一种读写分离的系统,其特征在于,所述系统包括:数据库代理服
    务器和主数据库;
    其中,所述数据库代理服务器包括:
    获取模块,用于在所述数据库代理服务器与客户端对应的备数据库建立
    备库连接后,获取并保存客户端ID;
    接收模块,用于接收所述客户端的操作请求;
    建立模块,用于当所述操作请求为写请求时,通过公用ID和公用密码
    与所述主数据库建立主库连接,将所述客户端ID发送至所述主数据库;
    其中,所述主数据库包括:
    更改模块,用于接收所述客户端ID,将所述主数据库的当前用户由所
    述公用ID更改为所述客户端ID,将所述主数据库的当前用户的权限由所述
    公用ID对应的权限更改为所述客户端ID对应的权限;
    相应地,所述数据库代理服务器还包括:
    写操作模块,用于在所述更改模块将所述主数据库的当前用户的权限由
    所述公用ID对应的权限更改为所述客户端ID对应的权限后,将所述写请求
    通过所述主库连接转发至所述主数据库,对所述主数据库进行与所述写请求
    对应且符合所述客户端ID对应的权限的写操作。
    12.如权利要求11所述的系统,其特征在于,所述获取模块包括:
    接收单元,用于接收所述客户端发送的备库连接请求,其中,所述备库
    连接请求中携带所述客户端ID和客户端密码;
    转发单元,用于将所述备库连接请求转发至与所述客户端对应的备数据
    库;
    相应地,所述系统还包括:备数据库;所述备数据库包括:
    第一验证模块,用于接收并从所述备库连接请求中获取所述客户端ID
    和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端
    进行验证,当验证通过后,与所述数据库代理服务器建立备库连接;
    相应地,所述获取模块还包括:
    保存单元,用于在所述第一验证模块与所述数据库代理服务器建立备库
    连接后,从所述备库连接请求中获取所述客户端ID,并保存所述客户端ID。
    13.如权利要求11所述的系统,其特征在于,所述数据库代理服务器
    还包括:
    读操作模块,用于当所述操作请求为读请求时,将所述读请求通过所述
    备库连接转发至与所述客户端对应的备数据库,对所述备数据库进行与所述
    读请求对应的读操作。
    14.如权利要求11所述的系统,其特征在于,所述建立模块包括:
    建立单元,用于将所述公用ID和所述公用密码发送至所述主数据库;
    相应地,所述主数据库还包括:
    第二验证模块,用于接收并根据所述公用ID和所述公用密码对所述数
    据库代理服务器进行验证,当验证通过后,与所述数据库代理服务器建立主
    库连接。
    15.如权利要求11-14任一权利要求所述的系统,其特征在于,所述数
    据库代理服务器还包括:
    缓存模块,用于当通过公用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和客户端密码;

    转发单元,用于将所述备库连接请求转发至与所述客户端对应的备数据
    库;

    相应地,所述系统还包括:备数据库;所述备数据库包括:

    第一验证模块,用于接收并从所述备库连接请求中获取所述客户端ID
    和所述客户端密码,根据所述客户端ID和所述客户端密码,对所述客户端
    进行验证,当验证通过后,与所述数据库代理服务器建立备库连接;

    相应地,所述获取模块还包括:

    保存单元,用于在所述第一验证模块与所述数据库代理服务器建立备库
    连接后,从所述备库连接请求中获取所述客户端ID,并保存所述客户端ID。

    进一步地,所述数据库代理服务器还包括:

    读操作模块,用于当所述操作请求为读请求时,将所述读请求通过所述
    备库连接转发至与所述客户端对应的备数据库,对所述备数据库进行与所述
    读请求对应的读操作。

    进一步地,所述建立模块包括:

    建立单元,用于将所述公用ID和所述公用密码发送至所述主数据库;

    相应地,所述主数据库还包括:

    第二验证模块,用于接收并根据所述公用ID和所述公用密码对所述数
    据库代理服务器进行验证,当验证通过后,与所述数据库代理服务器建立主
    库连接。

    进一步地,所述数据库代理服务器还包括:

    缓存模块,用于当通过公用ID和公用密码与主数据库建立主库连接后,
    缓存所述主库连接。

    与现有技术相比,本发明可以获得包括以下技术效果:

    1)数据库代理服务器在与客户端对应的备数据库建立备库连接后,当
    接收到写请求时,数据库代理服务器通过公用ID和公用密码与主数据库建
    立主库连接,将客户端ID发送至主数据库,从而使主数据库接收客户端ID,
    将主数据库的当前用户由公用ID更改为客户端ID,将主数据库的当前用户
    的权限由公用ID对应的权限更改为客户端ID对应的权限,使得客户端不能
    拥有本来不属于他的权限,对主数据库进行超越权限的操作,提高安全性。

    2)数据库代理服务器通过公用ID和公用密码与主数据库建立主库连接
    之后,缓存主库连接,当数据库代理服务器在与其他客户端对应的备数据库
    建立备库连接后,接收到其他客户端的写请求时,可以通过缓存的主库连接
    直接与主数据库建立主库连接,不需要再执行通过公用ID和公用密码进行
    验证再与主数据库建立主库连接的步骤,可以节约时间,加快写请求完成的
    时间。

    当然,实施本发明的任一产品必不一定需要同时达到以上所述的所有技
    术效果。

    附图说明

    此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部
    分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的
    不当限定。在附图中:

    图1是本发明实施例的第一种读写分离的方法流程图;

    图2是本发明实施例的一种读写分离的示意图;

    图3是本发明实施例的第二种读写分离的方法流程图;

    图4是本发明实施例的第三种读写分离的方法流程图;

    图5是本发明实施例的第一种数据库代理服务器的结构示意图;

    图6是本发明实施例的第二种数据库代理服务器的结构示意图;

    图7是本发明实施例的第三种数据库代理服务器的结构示意图;

    图8是本发明实施例的第一种读写分离的系统结构示意图;

    图9是本发明实施例的第二种读写分离的系统结构示意图;

    图10是本发明实施例的第三种读写分离的系统结构示意图;

    图11是本发明实施例的第四种读写分离的系统结构示意图;

    图12是本发明实施例的第五种读写分离的系统结构示意图。

    具体实施方式

    以下将配合附图及实施例来详细说明本发明的实施方式,藉此对本发明
    如何应用技术手段来解决技术问题并达成技术功效的实现过程能充分理解
    并据以实施。

    如在说明书及权利要求当中使用了某些词汇来指称特定组件。本领域技
    术人员应可理解,硬件制造商可能会用不同名词来称呼同一个组件。本说明
    书及权利要求并不以名称的差异来作为区分组件的方式,而是以组件在功能
    上的差异来作为区分的准则。如在通篇说明书及权利要求当中所提及的“包
    含”为一开放式用语,故应解释成“包含但不限定于”。“大致”是指在可接收
    的误差范围内,本领域技术人员能够在一定误差范围内解决所述技术问题,
    基本达到所述技术效果。此外,“耦接”一词在此包含任何直接及间接的电性
    耦接手段。因此,若文中描述一第一数据库代理服务器耦接于一第二数据库
    代理服务器,则代表所述第一数据库代理服务器可直接电性耦接于所述第二
    数据库代理服务器,或通过其他数据库代理服务器或耦接手段间接地电性耦
    接至所述第二数据库代理服务器。说明书后续描述为实施本发明的较佳实施
    方式,然所述描述乃以说明本发明的一般原则为目的,并非用以限定本发明
    的范围。本发明的保护范围当视所附权利要求所界定者为准。

    还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非
    排他性的包含,从而使得包括一系列要素的商品或者系统不仅包括那些要
    素,而且还包括没有明确列出的其他要素,或者是还包括为这种商品或者系
    统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的
    要素,并不排除在包括所述要素的商品或者系统中还存在另外的相同要素。

    实施例描述

    下面以一实施例对本发明方法的实现作进一步说明。如图1所示,为本
    发明实施例的一种读写分离的方法流程图,该方法包括:

    S101:数据库代理服务器在与客户端对应的备数据库建立备库连接后,
    获取并保存客户端ID。

    具体地,参见图2,数据库代理服务器(Proxy)是客户端(client)和数据
    库(包括主数据库(Master)和备数据库(Slave))中间的一个连接层,负责
    接收客户端的请求,直接与数据库交互。数据库代理服务器维护数据库的元
    信息(包括数据库中的数据(如实例等)的物理地址和状态等),能够使数
    据库的数据的分布对客户端透明。

    其中,客户端ID是客户端的唯一标识,客户端ID可以通过客户端的名
    称和客户端的来源ip(如为username@userhost)等表示。

    S102:数据库代理服务器接收客户端的操作请求。

    其中,操作请求包括读请求和写请求。客户端在执行查询语句时,会发
    送读请求,客户端在执行更新语句,会发送写请求。

    S103:当操作请求为写请求时,数据库代理服务器通过公用ID和公用
    密码与主数据库建立主库连接,将客户端ID发送至主数据库,从而使主数
    据库接收客户端ID,将主数据库的当前用户由公用ID更改为客户端ID,将
    主数据库的当前用户的权限由公用ID对应的权限更改为客户端ID对应的权
    限。

    具体地,公用ID是为数据库代理服务器分配的一个公用账户。

    具体地,数据库代理服务器通过公用ID和公用密码与主数据库建立主
    库连接,包括:

    数据库代理服务器将公用ID和公用密码发送至主数据库,从而使主数
    据库接收并根据公用ID和公用密码对数据库代理服务器进行验证,当验证
    通过后,与数据库代理服务器建立主库连接。

    具体地,数据库代理服务器通过公用ID和公用密码与主数据库建立主
    库连接之后,还包括:

    数据库代理服务器缓存主库连接。

    具体地,数据库代理服务器缓存主库连接,当数据库代理服务器接收到
    其他客户端发送的备库连接请求,在与其他客户端对应的备数据库建立备库
    连接后,接收到其他客户端的写请求时,可以通过缓存的主库连接直接与主
    数据库建立主库连接,不需要再执行通过公用ID和公用密码进行验证再与
    主数据库建立主库连接的步骤,可以节约时间,加快写请求完成的时间。

    具体地,将主数据库的当前用户由公用ID更改为客户端ID,将主数据
    库的当前用户的权限由公用ID对应的权限更改为客户端ID对应的权限,即
    将公用账户切换为客户端账户,如切换指令为:change user to
    ‘username@userhost’。

    S104:数据库代理服务器将写请求通过主库连接转发至主数据库,对主
    数据库进行与写请求对应且符合客户端ID对应的权限的写操作。

    具体地,写操作包括增(INSERT)、改(UPDATE)、删(DELETE)
    等操作。

    由于连接主数据库,以及将公用ID更改为客户端、将公用ID对应的权
    限更改为客户端ID对应的权限,都是由数据库代理服务器发起,在将公用
    ID对应的权限更改为客户端ID对应的权限(即还原成客户端原来的权限)
    后,数据库代理服务器才将写请求通过主库连接转发至主数据库,因此对主
    数据库进行的写操作不会超过客户端应有的权限。

    具体地,在一个优先的实施例中,参见图3,S101数据库代理服务器在
    与客户端对应的备数据库建立备库连接后,获取并保存客户端ID,包括:

    S101a:数据库代理服务器接收客户端发送的备库连接请求。

    其中,备库连接请求中携带客户端ID和客户端密码。客户端ID是通过
    明文传输,客户端密码是通过密文传输,数据库代理服务器可以从备库连接
    请求中获取到通过明文传输的客户端ID。

    S101b:数据库代理服务器将备库连接请求转发至与客户端对应的备数
    据库,从而使备数据库接收并从备库连接请求中获取客户端ID和客户端密
    码,根据客户端ID和客户端密码,对客户端进行验证,当验证通过后,与
    数据库代理服务器建立备库连接。

    具体地,备数据库一般有多个,可以根据客户端和备数据库的个数、位
    置等,预先设置客户端和备数据库的对应关系,当数据库代理服务器接收到
    备库连接请求后,可以将备库连接请求转发至与客户端对应的备数据库。

    具体地,客户端密码是通过密文传输的,备数据库和客户端之间预先设
    定客户端密码的加密方法,当备数据库接受到备库连接请求后,根据加密方
    法对应的解密方法,解密得到备库连接请求中的客户端密码。并且,备数据
    库中预先保存有客户端ID和客户端密码对应关系表,备数据库可以通过查
    询客户端ID和客户端密码对应关系表,对获取的客户端ID和客户端密码验
    证。

    S101c:数据库代理服务器从备库连接请求中获取客户端ID,并保存客
    户端ID。

    具体地,客户端ID是通过明文传输的,数据库代理服务器可以从备库
    连接请求中直接获取到通过明文传输的客户端ID。

    具体地,在一个优先的实施例中,参见图4,S102数据库代理服务器接
    收客户端的操作请求之后,还包括:

    S105:当操作请求为读请求时,数据库代理服务器将读请求通过备库连
    接转发至与客户端对应的备数据库,对备数据库进行与读请求对应的读操
    作。

    具体地,当操作请求为读请求时,直接通过已经建立的备库连接,对备
    数据库进行与读请求对应的读操作。其中,读操作包括读取、查询等操作。

    本发明实施例所述的读写分离的方法,数据库代理服务器在与客户端对
    应的备数据库建立备库连接后,当接收到写请求时,数据库代理服务器通过
    公用ID和公用密码与主数据库建立主库连接,将客户端ID发送至主数据库,
    从而使主数据库接收客户端ID,将主数据库的当前用户由公用ID更改为客
    户端ID,将主数据库的当前用户的权限由公用ID对应的权限更改为客户端
    ID对应的权限,使得客户端不能拥有本来不属于他的权限,对主数据库进
    行超越权限的操作,提高安全性。数据库代理服务器通过公用ID和公用密
    码与主数据库建立主库连接之后,缓存主库连接,当数据库代理服务器在与
    其他客户端对应的备数据库建立备库连接后,接收到其他客户端的写请求
    时,可以通过缓存的主库连接直接与主数据库建立主库连接,不需要再执行
    通过公用ID和公用密码进行验证再与主数据库建立主库连接的步骤,可以
    节约时间,加快写请求完成的时间。

    如图5所示,是本发明实施例的一种数据库代理服务器的结构示意图,
    该数据库代理服务器包括:

    获取模块201,用于在数据库代理服务器与客户端对应的备数据库建立
    备库连接后,获取并保存客户端ID;

    接收模块202,用于接收客户端的操作请求;

    建立模块203,用于当操作请求为写请求时,通过公用ID和公用密码
    与主数据库建立主库连接,将客户端ID发送至主数据库,从而使主数据库
    接收客户端ID,将主数据库的当前用户由公用ID更改为客户端ID,将主数
    据库的当前用户的权限由公用ID对应的权限更改为客户端ID对应的权限;

    写操作模块204,用于将写请求通过主库连接转发至主数据库,对主数
    据库进行与写请求对应且符合客户端ID对应的权限的写操作。

    进一步地,获取模块201包括:

    接收单元,用于接收客户端发送的备库连接请求,其中,备库连接请求
    中携带客户端ID和客户端密码;

    转发单元,用于将备库连接请求转发至与客户端对应的备数据库,从而
    使备数据库接收并从备库连接请求中获取客户端ID和客户端密码,根据客
    户端ID和客户端密码,对客户端进行验证,当验证通过后,与数据库代理
    服务器建立备库连接;

    保存单元,用于从备库连接请求中获取客户端ID,并保存客户端ID。

    进一步地,参见图6,数据库代理服务器还包括:

    读操作模块205,用于当操作请求为读请求时,将读请求通过备库连接
    转发至与客户端对应的备数据库,对备数据库进行与读请求对应的读操作。

    进一步地,建立模块203包括:

    建立单元,用于将公用ID和公用密码发送至主数据库,从而使主数据
    库接收并根据公用ID和公用密码对数据库代理服务器进行验证,当验证通
    过后,与数据库代理服务器建立主库连接。

    进一步地,参见图7,该数据库代理服务器还包括:

    缓存模块206,用于当通过公用ID和公用密码与主数据库建立主库连
    接后,缓存主库连接。

    本实施例所述的数据库代理服务器,数据库代理服务器在与客户端对应
    的备数据库建立备库连接后,当接收到写请求时,数据库代理服务器通过公
    用ID和公用密码与主数据库建立主库连接,将客户端ID发送至主数据库,
    从而使主数据库接收客户端ID,将主数据库的当前用户由公用ID更改为客
    户端ID,将主数据库的当前用户的权限由公用ID对应的权限更改为客户端
    ID对应的权限,使得客户端不能拥有本来不属于他的权限,对主数据库进
    行超越权限的操作,提高安全性。数据库代理服务器通过公用ID和公用密
    码与主数据库建立主库连接之后,缓存主库连接,当数据库代理服务器在与
    其他客户端对应的备数据库建立备库连接后,接收到其他客户端的写请求
    时,可以通过缓存的主库连接直接与主数据库建立主库连接,不需要再执行
    通过公用ID和公用密码进行验证再与主数据库建立主库连接的步骤,可以
    节约时间,加快写请求完成的时间。

    如图8所示,是本发明实施例的一种读写分离的系统的结构示意图,该
    读写分离的系统包括:数据库代理服务器30和主数据库40;

    其中,数据库代理服务器包括30:

    获取模块301,用于在数据库代理服务器30与客户端对应的备数据库
    50建立备库连接后,获取并保存客户端ID;

    接收模块302,用于接收客户端的操作请求;

    建立模块303,用于当操作请求为写请求时,通过公用ID和公用密码
    与主数据库40建立主库连接,将客户端ID发送至主数据库40;

    其中,主数据库40包括:

    更改模块401,用于接收客户端ID,将主数据库40的当前用户由公用
    ID更改为客户端ID,将主数据库40的当前用户的权限由公用ID对应的权
    限更改为客户端ID对应的权限;

    相应地,数据库代理服务器30还包括:

    写操作模块304,用于在更改模块401将主数据库40的当前用户的权
    限由公用ID对应的权限更改为客户端ID对应的权限后,将写请求通过主库
    连接转发至主数据库40,对主数据库40进行与写请求对应且符合客户端ID
    对应的权限的写操作。

    进一步地,获取模块301包括:

    接收单元,用于接收客户端发送的备库连接请求,其中,备库连接请求
    中携带客户端ID和客户端密码;

    转发单元,用于将备库连接请求转发至与客户端对应的备数据库50;

    相应地,参见图9,系统还包括:备数据库50;备数据库50包括:

    第一验证模块501,用于接收并从备库连接请求中获取客户端ID和客
    户端密码,根据客户端ID和客户端密码,对客户端进行验证,当验证通过
    后,与数据库代理服务器30建立备库连接;

    相应地,获取模块301还包括:

    保存单元,用于在第一验证模块501与数据库代理服务器30建立备库
    连接后,从备库连接请求中获取客户端ID,并保存客户端ID。

    进一步地,参见图10,数据库代理服务器30还包括:

    读操作模块305,用于当操作请求为读请求时,将读请求通过备库连接
    转发至与客户端对应的备数据库50,对备数据库50进行与读请求对应的读
    操作。

    进一步地,建立模块303包括:

    建立单元,用于将公用ID和公用密码发送至主数据库40;

    相应地,参见图11,主数据库40还包括:

    第二验证模块402,用于接收并根据公用ID和公用密码对数据库代理
    服务器30进行验证,当验证通过后,与数据库代理服务器30建立主库连接。

    进一步地,参见图12,数据库代理服务器30还包括:

    缓存模块306,用于当通过公用ID和公用密码与主数据库40建立主库
    连接后,缓存主库连接。

    本实施例所述的读写分离的系统,数据库代理服务器在与客户端对应的
    备数据库建立备库连接后,当接收到写请求时,数据库代理服务器通过公用
    ID和公用密码与主数据库建立主库连接,将客户端ID发送至主数据库,从
    而使主数据库接收客户端ID,将主数据库的当前用户由公用ID更改为客户
    端ID,将主数据库的当前用户的权限由公用ID对应的权限更改为客户端ID
    对应的权限,使得客户端不能拥有本来不属于他的权限,对主数据库进行超
    越权限的操作,提高安全性。数据库代理服务器通过公用ID和公用密码与
    主数据库建立主库连接之后,缓存主库连接,当数据库代理服务器在与其他
    客户端对应的备数据库建立备库连接后,接收到其他客户端的写请求时,可
    以通过缓存的主库连接直接与主数据库建立主库连接,不需要再执行通过公
    用ID和公用密码进行验证再与主数据库建立主库连接的步骤,可以节约时
    间,加快写请求完成的时间。

    需要说明的是,数据库代理服务器、读写分离的系统与前述的方法流程
    描述对应,不足之处参考上述方法流程的叙述,不再一一赘述。

    需要说明的是,本发明实施例所述的读写分离的方法,可以应用于多个
    客户端的权限不一样的场景下,如可以应用于包括多个客户端的云服务场景
    下。

    上述说明示出并描述了本发明的若干优选实施例,但如前所述,应当理
    解本发明并非局限于本文所披露的形式,不应看作是对其他实施例的排除,
    而可用于各种其他组合、修改和环境,并能够在本文所述发明构想范围内,
    通过上述教导或相关领域的技术或知识进行改动。而本领域人员所进行的改
    动和变化不脱离本发明的精神和范围,则都应在本发明所附权利要求的保护
    范围内。

    关 键  词:
    读写 分离 方法 系统 数据库 代理服务器
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:读写分离的方法、系统和数据库代理服务器.pdf
    链接地址:https://www.zhuanlichaxun.net/p-6198511.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1