CN104219085A - 一种数据库的数据处理方法、代理服务器及系统 - Google Patents
一种数据库的数据处理方法、代理服务器及系统 Download PDFInfo
- Publication number
- CN104219085A CN104219085A CN201410387992.8A CN201410387992A CN104219085A CN 104219085 A CN104219085 A CN 104219085A CN 201410387992 A CN201410387992 A CN 201410387992A CN 104219085 A CN104219085 A CN 104219085A
- Authority
- CN
- China
- Prior art keywords
- database
- server
- data base
- master data
- information
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种数据库的数据处理方法,包括:当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息;根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器;当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息;根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器。采用本发明,有效提高备份数据库的数据的安全性。
Description
技术领域
本发明涉及通信领域,尤其涉及一种数据库的数据处理方法、代理服务器及系统。
背景技术
目前,服务器的数据一般存储在服务器的数据库中,当客户端在对服务器上的数据进行读写操作时,一般是通过访问服务器的数据库来对数据进行读写操作。但是,若是过多客户端对服务器的数据库进行读写操作时,可能导致数据库所在的磁盘IO端口的拥塞甚至瘫痪,导致客户端读写数据库的速度过慢,从而数据库无法提供高效的服务。
故为了提高客户端读写数据库的读写速度,目前,大多采用的方式是将数据库缓存在内存中,以便客户端可以直接从服务器的内存中访问数据库。我们可以将缓存在内存中的数据库称之为内存数据库。
在内存数据库中,为了达到分布式缓存,以减少数据库的负载,提升访问数据的目的,目前采用了主从复制机制,即设置了主数据库和从数据库,从数据库是对主数据库的内容数据进行复制拷贝。当主数据库发生异常时,从数据库将替代主数据库来提供数据给客户端进行访问。但是,在主数据库发生异常启用从数据库时,客户端需要进行重启,获取从数据库的地址,从而对从数据库进行操作,这将导致数据库中断服务,给用户带来不便,并且,当从数据库损坏重新恢复主数据库的数据时,将花费大量时间进行复制拷贝,并且影响了服务器的正常运行。
发明内容
本发明实施例所要解决的技术问题在于,提供一种数据库的数据处理方法、代理服务器及系统。可使得客户端可分别对主数据库和备数据库进行写操作,使得主数据库和备数据库之间相互独立,有效提高备份数据库的数据的安全性,
本发明实施例第一方面提供一种数据库的数据处理方法,所述方法包括:
当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息;
根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,以使所述第一服务器根据所述写操作请求对所述第一主数据库信息所对应的第一主数据库进行写入数据;
当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息;
根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。
其中,所述方法还包括:
当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息;
根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,以使所述第三服务器根据所述读操作请求对所述第二主数据库信息所对应的第二主数据库进行读取数据;
接收所述第三服务器返回的所读取的数据。
其中,所述接收所述第三服务器返回的所读取的数据之后包括:
根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功;
当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息;
根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据;
接收所述第四服务器返回的所读取的数据。
其中,在当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息之前包括:
预置所述主集群列表和所述备集群列表。
其中,所述方法还包括:
当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息;
获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上;
向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库。
其中,所述方法还包括:
当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息;
获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上;
向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库。
本发明实施例第二方面提供一种代理服务器,所述服务器包括:
第一查找单元,用于当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息;
第一发送单元,用于根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,以使所述第一服务器根据所述写操作请求对所述第一主数据库信息所对应的第一主数据库进行写入数据;
第二查找单元,用于当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息;
第二发送单元,用于根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。
其中,所述服务器还包括:
第三查找单元,用于当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息;
第三发送单元,用于根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,以使所述第三服务器根据所述读操作请求对所述第二主数据库信息所对应的第二主数据库进行读取数据;
第一接收单元,用于接收所述第三服务器返回的所读取的数据。
其中,所述服务器包括:
判断单元,用于根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功;
第四查找单元,用于当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息;
第四发送单元,用于根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据;
第二接收单元,用于接收所述第四服务器返回的所读取的数据。
其中,所述服务器包括:
预置单元,用于预置所述主集群列表和所述备集群列表。
其中,所述服务器还包括:
第一获取单元,用于当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息;
第一复制单元,用于获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上;
第一删除单元,用于向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库。
其中,所述服务器还包括:
第二获取单元,用于当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息;
第二复制单元,用于获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上;
第二删除单元,用于向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库
本发明实施例第三方面还提供一种数据库的数据处理系统,包括客户端、至少一个服务器以及如上所述的代理服务器。
实施本发明实施例,具有如下有益效果:
本发明通过当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息,根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据,这使得客户端可分别对主数据库和备数据库进行写操作,使得主数据库和备数据库之间相互独立,有效提高备份数据库的数据的安全性,并且备数据库不是直接对主数据库进行复制,降低对主数据库所在服务器的运行负担。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明一种数据库的数据处理方法的第一实施例流程示意图;
图2是本发明一种数据库的数据处理方法的第二实施例流程示意图;
图3是本发明一种数据库的数据处理方法的第三实施例流程示意图;
图4是本发明一种数据库的数据处理方法的第四实施例流程示意图;
图5是本发明一种代理服务器的第一实施例结构图;
图6是本发明一种代理服务器的第二实施例结构图;
图7是本发明一种代理服务器的第三实施例结构图;
图8是本发明一种代理服务器的第四实施例结构图;
图9是本发明一种数据库的数据处理系统的第一实施例结构图;
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1所示的一种数据库的数据处理方法的流程示意图,如图1所述,本实施例的一种数据量的数据处理方法包括以下步骤:
S100,当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息。
在本发明实施例中,主集群列表可包括至少一个主数据库信息,主数据库信息可包括主数据库的编号、命名以及主数据库的IP地址等信息,其中,每个主数据库的命名可以是数据库名称+编号,例如:当数据库是Redis(remotedictonary server,远程字典服务器)数据库时,主数据库的命名可以是Redis+编号。可选的,主数据库可包括Redis数据库,其中,Redis数据库是基于key-value的内存数据库,支持主从复制,数据可以从主数据库向多个备数据库进行同步。可选的,主数据库也可以是mysql数据库、oracle数据库等,在此不对主数据库。类型其进行限制。
进一步的,代理服务器可以连接多个服务器,服务器可以存储至少一个主数据库,其中,服务器与代理服务器进行TCP(Transmission Control Protocol,传输控制协议)长连接,代理服务器通过接收客户端的指令并将指令路由到相应的服务器上的主数据库上,从而控制对主数据库的读取或存储。
在本发明实施例中,写操作请求可以携带系统分配的键值KEY1,代理服务器可采用一致性哈希算法对主集群列表中的主数据库信息进行哈希计算,获得与KEY1相匹配的第一主数据库信息。具体的:采用一致性哈希算法可以是,首先,对主集群列表中每个主数据库信息进行哈希计算,其中,可根据主数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个主数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,根据写操作请求所携带的KEY1,将KEY1映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的主数据库信息则为写操作请求匹配的第一主数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值所对应的主数据库信息为写操作请求匹配的第一主数据库信息。
S101,根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,以使所述第一服务器根据所述写操作请求对所述第一主数据库信息所对应的第一主数据库进行写入数据。
在本发明实施例中,当代理服务器查找到写操作请求匹配的第一主数据库信息后,代理服务器可根据第一主数据库信息所包括的第一主数据库的IP地址,将写操作请求通过TCP长连接,路由到第一主数据库的IP地址所在的第一服务器上,第一服务器响应所述写操作请求对第一主数据库进行写入数据,将所需写入的数据写入第一主数据库。其中,当服务器将所需写入的数据成功写入第一主数据库时,第一服务器可通过TCP长连接向代理服务器返回写入数据成功信号,当第一服务器将所需写入的数据写入第一主数据库失败时,第一服务器可通过TCP长连接向代理服务器返回写入失败信号。
S102,当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息。
在本发明实施例中,备集群列表可包括至少一个备数据库信息,备数据库信息可包括备数据库的编号、命名以及备数据库的IP地址等信息,其中,每个备数据库的命名可以是数据库名称+编号,例如:当数据库是Redis(remotedictonary server,远程字典服务器)数据库时,备数据库的命名可以是Redis+编号。可选的,备数据库可包括Redis数据库,其中,Redis数据库是基于key-value的内存数据库,支持主从复制,数据可以从主数据库向多个备数据库进行同步。可选的,备数据库也可以是mysql数据库、oracle数据库等,在此不对备数据库类型其进行限制。
进一步的,代理服务器可以连接多个服务器,服务器可以存储至少一个备数据库,其中,服务器与代理服务器进行TCP(Transmission Control Protocol,传输控制协议)长连接,代理服务器通过接收客户端的指令并将指令路由到相应的服务器上的备数据库上,从而控制对备数据库的读取或存储。其中,备数据库与主数据库不存储在同个服务器上。
在本发明实施例中,当代理服务器接收到第一主数据库所在的第一服务器返回的写入数据成功信号后,代理服务器可获得第一服务器已对第一主数据库成功写入数据。当第一服务器已对第一主数据库成功写入数据时,代理服务器将在包括至少一个备数据库信息的备集群数据库中查找与所述写操作请求匹配的第一备数据库信息,以对第一备数据库信息所对应的第一备数据库进行写入数据。
在本发明实施例中,代理服务器可采用一致性哈希算法对备集群列表中的备数据库信息进行哈希计算,获得与写操作请求所携带的KEY1相匹配的第一备数据库信息。具体的:采用一致性哈希算法可以是,首先,对备集群列表中每个备数据库信息进行哈希计算,其中,可根据备数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个备数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,根据写操作请求所携带的KEY1,将KEY1映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的备数据库信息则为写操作请求匹配的第一备数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值为写操作请求匹配的第一备数据库的哈希值。采用一致性哈希算法管理数据库,可以使得数据库有很好的可扩展性和可用性。
S103,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。
在本发明实施例中,当代理服务器查找到写操作请求匹配的第一备数据库信息后,代理服务器可根据第一备数据库信息所包括的第一备数据库的IP地址,将写操作请求通过TCP长连接,路由到第一备数据库的IP地址所在的第二服务器上,第二服务器响应所述写操作请求对第一备数据库进行写入数据,将所需写入的数据写入第一备数据库。其中,当服务器将所需写入的数据成功写入第一备数据库时,第二服务器可通过TCP长连接向代理服务器返回写入数据成功信号,当第二服务器将所需写入的数据写入第一备数据库失败时,第二服务器可通过TCP长连接向代理服务器返回写入失败信号。故我们可以理解的是,备数据库在进行备份时,采用对备数据库进行写入数据的方式,而不是利用现有的主从复制进行备份的方式,这可更有效提高备份数据库的数据的安全性以及解决当主数据库故障时,而使得备数据库无法备份的问题。
在本发明实施例中,本发明通过当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,并当接收到所述第二服务器返回的对所述第一备数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。这使得客户端可分别对主数据库和备数据库进行写操作,使得主数据库和备数据库之间相互独立,有效提高备份数据库的数据的安全性,并且备数据库不是直接对主数据库进行复制,降低对主数据库所在服务器的运行负担。
请参见图2所示的一种数据库的数据处理方法的流程示意图,如图2所述,本实施例的一种数据量的数据处理方法包括以下步骤:
S201,预置所述主集群列表和所述备集群列表。
在本发明实施例中,用户可首先在与代理服务TCP长连接的服务器中进行预置主集群数据库和备集群数据库。其中,用户可首先根据客户端所需数据量的大小,提前估算出需要的数据库的个数。例如:与代理服务器连接的服务器共有N台,在每台服务器上布置M个主数据库和M个备数据库,则总共需布置的数据库T有N*M*2个。当用户在服务器中预置好主集群数据库和备数据库,可获取主集群数据库的信息和备集群数据库的信息,并将主集群数据库的信息预置在主集群列表中,备集群数据库的信息预置在备集群列表中。其中,主集群数据库的信息可包括主集群数据库的命名、编号以及IP地址,备集群数据库的信息可包括备集群数据库的命名、编号以及IP地址。
S201,当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息。
在本发明实施例中,读操作请求可以携带系统分配的键值KEY2,代理服务器可采用一致性哈希算法对主集群列表所包括的主数据库信息进行哈希计算,获得与KEY2相匹配的第二主数据库信息。具体的:采用一致性哈希算法可以是,首先,对主集群列表中每个主数据库信息进行哈希计算,其中,可根据主数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个主数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,根据读操作请求所携带的KEY2,将KEY2映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的主数据库信息则为读操作请求匹配的第二主数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值所对应的主数据库信息为读操作请求匹配的第二主数据库信息。
S202,根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,以使所述第三服务器根据所述读操作请求对所述第二主数据库信息所对应的第二主数据库进行读取数据。
在本发明实施例中,当代理服务器查找到读操作请求匹配的第二主数据库信息后,代理服务器可根据第二主数据库信息所包括的第二主数据库的IP地址,将读操作请求通过TCP长连接,路由到第二主数据库的IP地址所在的第三服务器上,第三服务器响应所述读操作请求对第二主数据库进行读取数据,获取所读取的数据,并返回给代理服务器。
S203,接收所述第三服务器返回的所读取的数据。
S204,根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功。
在本发明实施例中,代理服务器可以根据服务器返回的所读取的数据判断第三服务器对第二主数据库进行读取数据是否读取成功。其中,可通过判断所读取的数据的内容来判断服务器对第二主数据库是否读取成功。例如:当所需读取的数据为空、乱码和无意义的字符等,可判断服务器对第二主数据库读取失败。
S204,当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息。
在本发明实施例中,代理服务器可采用一致性哈希算法对备集群列表中的各个备数据库信息进行哈希计算,获得与KEY2相匹配的第二备数据库信息。具体的:采用一致性哈希算法可以是,首先,对备集群列表中每个备数据库信息进行哈希计算,其中,可根据备数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个备数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,根据读操作请求所携带的KEY2,将KEY2映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的备数据库信息则为读操作请求匹配的第二备数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值所对应的主数据库信息为读操作请求匹配的第二备数据库信息。
S205,根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据。
在本发明实施例中,当代理服务器查找到读操作请求匹配的第二备数据库信息后,代理服务器可根据第二备数据库信息所包括的第二备数据库的IP地址,将读操作请求通过TCP长连接,路由到第二备数据库的IP地址所在的第四服务器上,第四服务器响应所述读操作请求对第二主数据库进行读取数据,获取所读取的数据,并返回给代理服务器。
S206,接收所述第四服务器返回的所读取的数据。
在本发明实施例中,当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息,
根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,接收所述第三服务器返回的所读取的数据,根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功,当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息,根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据,接收所述第四服务器返回的所读取的数据。这使得当主数据库发生故障时,客户端无障碍地可通过访问备数据库来获取数据,提高了访问数据的安全性,以及主集群和备集群的可用性。
请参见图3所示的一种数据库的数据处理方法的流程示意图,如图3所述,本实施例的一种数据库的数据处理方法包括以下步骤:
S300,当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息。
在本发明实施例中,当与代理服务器连接的服务器出现内存瓶颈时,用户可通过新增服务器来对内存进行扩容,解决内存紧张的问题。其中,用户可先在新增的服务器上存储新的数据库,进而再将服务器与代理服务器进行TCP连接。
进一步的,当存储有新的数据库的服务器与代理服务器建立连接后,代理服务器可检测到有新增的第一数据库。当代理服务器检测到有新增的第一数据库后,代理服务器可获取新增的第一数据库信息,其中,新增的第一数据库信息包括新增的第一数据库的IP地址。代理服务器可在主集群列表中获取任意一个第三主数据库信息。
S301,获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上。
在本发明实施例中,当代理服务器获取到第三主数据库信息后,代理服务器可根据第三主数据库信息向第三主数据库信息所对应的服务器发送获取第三主数据库所存储的数据请求,并接受第三主数据库信息所对应的服务器响应所述请求返回的第三主数据库所存储的数据。
当代理服务器接收到第三主数据库所存储的数据后,可根据新增的第一数据库信息将第三主数据库所存储的数据发送至新增的第一数据库信息所对应的服务器,以使服务器将第三主数据库所存储的数据复制至第一数据库上,同时,更新主集群列表,将所述第一数据库信息存储进主集群列表。
在具体应用中,可例如:执行命令[slave of host port],host为第三主数据库的IP地址,port为第一数据库的监听端口,通过这个命令可以将第一数据库指定为第三主数据库的副本,当命令开始执行时,代理服务器控制第一数据库复制第三主数据库数据。当复制完成后,代理服务器将第一数据库信息设置为主数据库信息,从而更新进主集群列表中。
S302,向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库。
在本发明实施例中,当代理服务器将所述第三主数据库所存储的数据复制至所述第一数据库上后,代理服务器可向第三主数据库信息所对应的服务器发送第一删除指令,以使第三主数据库信息所对应的服务器删除第三主数据库信息所对应的第三主数据库,从而释放第三主数据库所占用的空间,降低第三主数据库信息所在的服务器的内存压力,提高服务器的读取数据的效率。
进一步的,在本发明实施例中,当新增有多个数据库时,当删除第三主数据库后,可执行S300在所述主集群列表中获取任意一个第三主数据库信息步骤,直至服务器中的主数据库可对客户端提供服务。
在本发明实施例中,本发明通过当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息,获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上,向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库,从而对主数据库进行扩容,降低了服务器的内存负担,提高服务器的读取数据的效率。
请参见图4所示的一种数据库的数据处理方法的流程示意图,如图4所述,本实施例的一种数据库的数据处理方法包括以下步骤:
S400,当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息
当主集群数据库可对客户端提供服务,并且仍有剩余的新增数据库时,或者是检测到用户指定的新增的第二数据库时,代理服务器可获取新增的第二数据库信息,其中,新增的第二数据库信息包括新增的第而数据库的IP地址。代理服务器可在备集群列表中获取任意一个第三备数据库信息。
S401,获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上。
在本发明实施例中,当代理服务器获取到第三备数据库信息后,代理服务器可根据第三备数据库信息向第三备数据库信息所对应的服务器发送获取第三备数据库所存储的数据请求,并接受第三备数据库信息所对应的服务器响应所述请求返回的第三备数据库所存储的数据。
当代理服务器接收到第三备数据库所存储的数据后,可根据新增的第二数据库信息将第三备数据库所存储的数据发送至新增的第二数据库信息所对应的服务器,以使服务器将第三备数据库所存储的数据复制至第二数据库上,同时,更新备集群列表,将所述第二数据库信息存储进备集群列表。
在具体应用中,可例如:执行命令[slave of host port],host为第三备数据库的IP地址,port为第二数据库的监听端口,通过这个命令可以将第二数据库指定为第三备数据库的副本,当命令开始执行时,代理服务器控制第二数据库复制第三备数据库数据。当复制完成后,代理服务器将第二数据库信息设置为备数据库信息,从而更新进备集群列表中。
S402,向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库。
在本发明实施例中,当代理服务器将所述第三备数据库所存储的数据复制至所述第二数据库上后,代理服务器可向第三备数据库信息所对应的服务器发送第二删除指令,以使第三备数据库信息所对应的服务器删除第三备数据库信息所对应的第三备数据库,从而释放第三备数据库所占用的空间,降低第三备数据库信息所在的服务器的内存压力,提高服务器的读取数据的效率。
进一步的,在本发明实施例中,当新增有多个数据库时,当删除第三备数据库后,可执行S400所述备集群列表中任意获取第三备数据库信息步骤。
在本发明实施例中,本发明通过当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息,获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上,向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库,从而对备数据库进行扩容,降低了服务器的内存负担,提高服务器的读取数据的效率。
请参见图5所示的一种代理服务器结构图,如图5所示,本实施例的一种代理服务器包括:
第一查找单元100,用于当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息。
在本发明实施例中,主集群列表可包括至少一个主数据库信息,主数据库信息可包括主数据库的编号、命名以及主数据库的IP地址等信息,其中,每个主数据库的命名可以是数据库名称+编号,例如:当数据库是Redis(remotedictonary server,远程字典服务器)数据库时,主数据库的命名可以是Redis+编号。可选的,主数据库可包括Redis数据库,其中,Redis数据库是基于key-value的内存数据库,支持主从复制,数据可以从主数据库向多个备数据库进行同步。可选的,主数据库也可以是mysql数据库、oracle数据库等,在此不对主数据库。类型其进行限制。
进一步的,代理服务器可以连接多个服务器,服务器可以存储至少一个主数据库,其中,服务器与代理服务器进行TCP(Transmission Control Protocol,传输控制协议)长连接,代理服务器通过接收客户端的指令并将指令路由到相应的服务器上的主数据库上,从而控制对主数据库的读取或存储。
在本发明实施例中,写操作请求可以携带系统分配的键值KEY1,代理服务器的第一查找单元100可采用一致性哈希算法对主数据库信息进行哈希计算,获得与KEY1相匹配的第一主数据库信息。具体的:第一查找单元100采用一致性哈希算法可以是,首先,第一查找单元100对主集群列表中每个主数据库信息进行哈希计算,其中,可根据主数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个主数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,第一查找单元100根据写操作请求所携带的KEY1,将KEY1映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的主数据库信息则为写操作请求匹配的第一主数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值所对应的主数据库信息为写操作请求匹配的第一主数据库信息。
第一发送单元200,用于根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,以使所述第一服务器根据所述写操作请求对所述第一主数据库信息所对应的第一主数据库进行写入数据。
在本发明实施例中,当代理服务器的第一查找单元100查找到写操作请求匹配的第一主数据库信息后,代理服务器的第一发送单元200可根据第一主数据库信息所包括的第一主数据库的IP地址,将写操作请求通过TCP长连接,路由到第一主数据库的IP地址所在的第一服务器上,第一服务器响应所述写操作请求对第一主数据库进行写入数据,将所需写入的数据写入第一主数据库。其中,当服务器将所需写入的数据成功写入第一主数据库时,第一服务器可通过TCP长连接向代理服务器返回写入数据成功信号,当第一服务器将所需写入的数据写入第一主数据库失败时,第一服务器可通过TCP长连接向代理服务器返回写入失败信号。
第二查找单元300,用于当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息。
在本发明实施例中,备集群列表可包括至少一个备数据库信息,备数据库信息可包括备数据库的编号、命名以及备数据库的IP地址等信息,其中,每个备数据库的命名可以是数据库名称+编号,例如:当数据库是Redis(remotedictonary server,远程字典服务器)数据库时,备数据库的命名可以是Redis+编号。可选的,备数据库可包括Redis数据库,其中,Redis数据库是基于key-value的内存数据库,支持主从复制,数据可以从主数据库向多个备数据库进行同步。可选的,备数据库也可以是mysql数据库、oracle数据库等,在此不对备数据库类型其进行限制。
进一步的,代理服务器可以连接多个服务器,服务器可以存储至少一个备数据库,其中,服务器与代理服务器进行TCP(Transmission Control Protocol,传输控制协议)长连接,代理服务器通过接收客户端的指令并将指令路由到相应的服务器上的备数据库上,从而控制对备数据库的读取或存储。其中,备数据库与主数据库不存储在同个服务器上。
在本发明实施例中,当代理服务器接收到第一主数据库所在的第一服务器返回的写入数据成功信号后,代理服务器可获得第一服务器已对第一主数据库成功写入数据。当第一服务器已对第一主数据库成功写入数据时,代理服务器的第二查找单元300将在包括至少一个备数据库信息的备集群数据库中查找与所述写操作请求匹配的第一备数据库信息,以对第一备数据库信息所对应的第一备数据库进行写入数据。
在本发明实施例中,代理服务器的第二查找单元300可采用一致性哈希算法对备数据库信息进行哈希计算,获得与写操作请求所携带的KEY1相匹配的第一备数据库信息。具体的:第二查找单元300采用一致性哈希算法可以是,首先,第二查找单元300对备集群列表中每个备数据库信息进行哈希计算,其中,可根据备数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个备数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,第二查找单元300根据写操作请求所携带的KEY1,将KEY1映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的备数据库信息则为写操作请求匹配的第一备数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值为写操作请求匹配的第一备数据库的哈希值。采用一致性哈希算法管理数据库,可以使得数据库有很好的可扩展性和可用性。
第二发送单元400,用于根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。
在本发明实施例中,当代理服务器查找到写操作请求匹配的第一备数据库信息后,代理服务器的第二发送单元400可根据第一备数据库信息所包括的第一备数据库的IP地址,将写操作请求通过TCP长连接,路由到第一备数据库的IP地址所在的第二服务器上,第二服务器响应所述写操作请求对第一备数据库进行写入数据,将所需写入的数据写入第一备数据库。其中,当服务器将所需写入的数据成功写入第一备数据库时,第二服务器可通过TCP长连接向代理服务器返回写入数据成功信号,当第二服务器将所需写入的数据写入第一备数据库失败时,第二服务器可通过TCP长连接向代理服务器返回写入失败信号。故我们可以理解的是,备数据库在进行备份时,采用对备数据库进行写入数据的方式,而不是利用现有的主从复制进行备份的方式,这可更有效提高备份数据库的数据的安全性以及解决当主数据库故障时,而使得备数据库无法备份的问题。
在本发明实施例中,本发明通过当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,并当接收到所述第二服务器返回的对所述第一备数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。这使得客户端可分别对主数据库和备数据库进行写操作,使得主数据库和备数据库之间相互独立,有效提高备份数据库的数据的安全性,并且备数据库不是直接对主数据库进行复制,降低对主数据库所在服务器的运行负担。
请参见图6所示的一种代理服务器结构图,如图6所示,本实施例的一种代理服务器包括:
预置单元500,用于预置所述主集群列表和所述备集群列表。
在本发明实施例中,用户可首先在与代理服务TCP长连接的服务器中进行预置主集群数据库和备集群数据库。其中,用户可首先根据客户端所需数据量的大小,提前估算出需要的数据库的个数。例如:与代理服务器连接的服务器共有N台,在每台服务器上布置M个主数据库和M个备数据库,则总共需布置的数据库T有N*M*2个。当用户在服务器中预置好主集群数据库和备数据库,预置单元500获取主集群数据库的信息和备集群数据库的信息,并将主集群数据库的信息预置在主集群列表中,备集群数据库的信息预置在备集群列表中。其中,主集群数据库的信息可包括主集群数据库的命名、编号以及IP地址,备集群数据库的信息可包括备集群数据库的命名、编号以及IP地址。
第三查找单元600,用于当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息。
在本发明实施例中,读操作请求可以携带系统分配的键值KEY2,代理服务器的第三查找单元600可采用一致性哈希算法对主集群列表所包括的主数据库信息进行哈希计算,获得与KEY2相匹配的第二主数据库信息。具体的:第三查找单元600采用一致性哈希算法可以是,首先,第三查找单元600对主集群列表中每个主数据库信息进行哈希计算,其中,可根据主数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个主数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,第三查找单元600根据读操作请求所携带的KEY2,将KEY2映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的主数据库信息则为读操作请求匹配的第二主数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值所对应的主数据库信息为读操作请求匹配的第二主数据库信息。
第三发送单元700,用于根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,以使所述第三服务器根据所述读操作请求对所述第二主数据库信息所对应的第二主数据库进行读取数据。
在本发明实施例中,当代理服务器查找到读操作请求匹配的第二主数据库信息后,代理服务器的第三发送单元700可根据第二主数据库信息所包括的第二主数据库的IP地址,将读操作请求通过TCP长连接,路由到第二主数据库的IP地址所在的第三服务器上,第三服务器响应所述读操作请求对第二主数据库进行读取数据,获取所读取的数据,并返回给代理服务器。
第一接收单元800,用于接收所述第三服务器返回的所读取的数据。
判断单元900,用于根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功。
在本发明实施例中,代理服务器的判断单元900可以根据服务器返回的所读取的数据判断第三服务器对第二主数据库进行读取数据是否读取成功。其中,判断单元900可通过判断所读取的数据的内容来判断服务器对第二主数据库是否读取成功。例如:当所需读取的数据为空、乱码和无意义的字符等,可判断服务器对第二主数据库读取失败。当判断单元900判断所述第三服务器对所述第二主数据库读取数据失败时,通知第四查找单元901在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息。
第四查找单元901,用于当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息。
在本发明实施例中,代理服务器的第四查找单元901可采用一致性哈希算法对备集群列表中的各个备数据库信息进行哈希计算,获得与KEY2相匹配的第二备数据库信息。具体的:第四查找单元901采用一致性哈希算法可以是,首先,对备集群列表中每个备数据库信息进行哈希计算,其中,第四查找单元901可根据备数据库信息所包括的IP地址,或者编号进行哈希计算,并将其每个备数据库信息所对应的哈希值映射到0~2的32次方的圆上。其次,第四查找单元901根据读操作请求所携带的KEY2,将KEY2映射到圆上。最后从映射到的位置开始顺时针查找,获得的第一个哈希值所对应的备数据库信息则为读操作请求匹配的第二备数据库信息,如果超过2的32次方仍然找不到哈希值,则圆环上第一个哈希值所对应的主数据库信息为读操作请求匹配的第二备数据库信息。
第四发送单元902,用于根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据。
在本发明实施例中,当代理服务器查找到读操作请求匹配的第二备数据库信息后,代理服务器的第四发送单元902可根据第二备数据库信息所包括的第二备数据库的IP地址,将读操作请求通过TCP长连接,路由到第二备数据库的IP地址所在的第四服务器上,第四服务器响应所述读操作请求对第二主数据库进行读取数据,获取所读取的数据,并返回给代理服务器。
第二接收单元903,用于接收所述第四服务器返回的所读取的数据。
在本发明实施例中,当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息,
根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,接收所述第三服务器返回的所读取的数据,根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功,当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息,根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据,接收所述第四服务器返回的所读取的数据。这使得当主数据库发生故障时,客户端无障碍地可通过访问备数据库来获取数据,提高了访问数据的安全性,以及主集群和备集群的可用性。
请参见图7所示的一种代理服务器结构图,如图7所示,本实施例的一种代理服务器包括:
第一获取单元801,用于当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息。
在本发明实施例中,当与代理服务器连接的服务器出现内存瓶颈时,用户可通过新增服务器来对内存进行扩容,解决内存紧张的问题。其中,用户可先在新增的服务器上存储新的数据库,进而再将服务器与代理服务器进行TCP连接。
进一步的,当存储有新的数据库的服务器与代理服务器建立连接后,代理服务器的第一获取单元801可检测到有新增的第一数据库。当代理服务器的第一获取单元801检测到有新增的第一数据库后,第一获取单元801可获取新增的第一数据库信息,其中,新增的第一数据库信息包括新增的第一数据库的IP地址。代理服务器可在主集群列表中获取任意一个第三主数据库信息。
第一复制单元802,用于获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上。
在本发明实施例中,当代理服务器获取到第三主数据库信息后,代理服务器的第一复制单元802可根据第三主数据库信息向第三主数据库信息所对应的服务器发送获取第三主数据库所存储的数据请求,并接受第三主数据库信息所对应的服务器响应所述请求返回的第三主数据库所存储的数据。
当代理服务器的第一复制单元802接收到第三主数据库所存储的数据后,可根据新增的第一数据库信息将第三主数据库所存储的数据发送至新增的第一数据库信息所对应的服务器,以使服务器将第三主数据库所存储的数据复制至第一数据库上,同时,第一复制单元802更新主集群列表,将所述第一数据库信息存储进主集群列表。
在具体应用中,可例如:执行命令[slave of host port],host为第三主数据库的IP地址,port为第一数据库的监听端口,通过这个命令可以将第一数据库指定为第三主数据库的副本,当命令开始执行时,代理服务器控制第一数据库复制第三主数据库数据。当复制完成后,代理服务器将第一数据库信息设置为主数据库信息,从而更新进主集群列表中。
第一删除单元803,用于向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库。
在本发明实施例中,当代理服务器将所述第三主数据库所存储的数据复制至所述第一数据库上后,代理服务器的第一删除单元803可向第三主数据库信息所对应的服务器发送第一删除指令,以使第三主数据库信息所对应的服务器删除第三主数据库信息所对应的第三主数据库,从而释放第三主数据库所占用的空间,降低第三主数据库信息所在的服务器的内存压力,提高服务器的读取数据的效率。
进一步的,在本发明实施例中,当新增有多个数据库时,当删除第三主数据库后,可通知第一获取单元801在所述主集群列表中获取任意一个第三主数据库信息,直至服务器中的主数据库可对客户端提供服务。
在本发明实施例中,本发明通过当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息,获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上,向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库,从而对主数据库进行扩容,降低了服务器的内存负担,提高服务器的读取数据的效率。
请参见图8所示的一种代理服务器结构图,如图8所示,本实施例的一种代理服务器包括:
第二获取单元701,用于当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息。
当主集群数据库可对客户端提供服务,并且仍有剩余的新增数据库时,或者是检测到用户指定的新增的第二数据库时,代理服务器的第二获取单元701可获取新增的第二数据库信息,其中,新增的第二数据库信息包括新增的第而数据库的IP地址。代理服务器可在备集群列表中获取任意一个第三备数据库信息。
第二复制单元702,用于获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上。
在本发明实施例中,当代理服务器获取到第三备数据库信息后,代理服务器的第二复制单元702可根据第三备数据库信息向第三备数据库信息所对应的服务器发送获取第三备数据库所存储的数据请求,并接受第三备数据库信息所对应的服务器响应所述请求返回的第三备数据库所存储的数据。
当代理服务器的第二复制单元702接收到第三备数据库所存储的数据后,第二复制单元702可根据新增的第二数据库信息将第三备数据库所存储的数据发送至新增的第二数据库信息所对应的服务器,以使服务器将第三备数据库所存储的数据复制至第二数据库上,同时,第二复制单元702更新备集群列表,将所述第二数据库信息存储进备集群列表。
在具体应用中,可例如:执行命令[slave of host port],host为第三备数据库的IP地址,port为第二数据库的监听端口,通过这个命令可以将第二数据库指定为第三备数据库的副本,当命令开始执行时,代理服务器控制第二数据库复制第三备数据库数据。当复制完成后,代理服务器将第二数据库信息设置为备数据库信息,从而更新进备集群列表中。
第二删除单元703,用于向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库。
在本发明实施例中,当代理服务器将所述第三备数据库所存储的数据复制至所述第二数据库上后,代理服务器的第二删除单元703可向第三备数据库信息所对应的服务器发送第二删除指令,以使第三备数据库信息所对应的服务器删除第三备数据库信息所对应的第三备数据库,从而释放第三备数据库所占用的空间,降低第三备数据库信息所在的服务器的内存压力,提高服务器的读取数据的效率。
进一步的,在本发明实施例中,当新增有多个数据库时,当第二删除单元703删除第三备数据库后,可通知第二获取单元701在所述备集群列表中任意获取第三备数据库信息。
在本发明实施例中,本发明通过当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息,获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上,向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库,从而对备数据库进行扩容,降低了服务器的内存负担,提高服务器的读取数据的效率。
请参见图9所示的一种数据库的数据处理系统结构图,如图9所示,本实施例的一种数据库的数据处理系统包括:
客户端10、至少一个服务器20和代理服务器30。
其中,客户端10与服务器20分别与代理服务器30连接。服务器20可存储至少主数据库和/至少一个备数据库。
优选的,客户端10向代理服务器30发送读写指令,代理服务器30根据读写指令将读写指令路由到相应的服务器进行响应。其中,代理服务器30的具体实现方式可参见以上实施例所述的代理服务器,在此不再进行赘述。
通过上述实施例的描述,本发明具有以下优点:
本发明通过当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息,根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息,根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据,这使得客户端可分别对主数据库和备数据库进行写操作,使得主数据库和备数据库之间相互独立,有效提高备份数据库的数据的安全性,并且备数据库不是直接对主数据库进行复制,降低对主数据库所在服务器的运行负担。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
Claims (13)
1.一种数据库的数据处理方法,其特征在于,所述方法包括:
当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息;
根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,以使所述第一服务器根据所述写操作请求对所述第一主数据库信息所对应的第一主数据库进行写入数据;
当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息;
根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。
2.如权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息;
根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,以使所述第三服务器根据所述读操作请求对所述第二主数据库信息所对应的第二主数据库进行读取数据;
接收所述第三服务器返回的所读取的数据。
3.如权利要求2所述的方法,其特征在于,所述接收所述第三服务器返回的所读取的数据之后包括:
根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功;
当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息;
根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据;
接收所述第四服务器返回的所读取的数据。
4.如权利要求3所述的方法,其特征在于,在当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息之前包括:
预置所述主集群列表和所述备集群列表。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息;
获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上;
向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库。
6.如权利要求5所述的方法,其特征在于,所述方法还包括:
当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息;
获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上;
向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库。
7.一种代理服务器,其特征在于,所述服务器包括:
第一查找单元,用于当接收到客户端发送的写操作请求时,根据所述写操作请求在预置的包括至少一个主数据库信息的主集群列表中查找与所述写操作请求匹配的第一主数据库信息;
第一发送单元,用于根据所述第一主数据库信息将所述写操作请求发送至所述第一主数据库信息所对应的第一服务器,以使所述第一服务器根据所述写操作请求对所述第一主数据库信息所对应的第一主数据库进行写入数据;
第二查找单元,用于当接收到所述第一服务器返回的对所述第一主数据库写入数据成功信号时,在预置的包括至少一个备数据库信息的备集群列表中查找与所述写操作请求匹配的第一备数据库信息;
第二发送单元,用于根据所述第一备数据库信息将所述写操作请求发送至所述第一备数据库信息所对应的第二服务器,以使所述第二服务器根据所述写操作请求对所述第一备数据库信息所对应的第一备数据库进行写入数据。
8.如权利要求7所述服务器,其特征在于,所述服务器还包括:
第三查找单元,用于当接收到客户端发送的读操作请求时,根据所述读操作请求在所述主集群列表中查找与所述读操作指令匹配的第二主数据库信息;
第三发送单元,用于根据所述第二主数据库信息将所述读操作请求发送至所述第二主数据库信息所对应的第三服务器,以使所述第三服务器根据所述读操作请求对所述第二主数据库信息所对应的第二主数据库进行读取数据;
第一接收单元,用于接收所述第三服务器返回的所读取的数据。
9.如权利要求8所述的服务器,其特征在于,所述服务器包括:
判断单元,用于根据所述所读取的数据判断所述第三服务器对所述第二主数据库读取数据是否成功;
第四查找单元,用于当所述第三服务器对所述第二主数据库读取数据失败时,在所述备集群列表中查找与所述读操作指令匹配的第二备数据库信息;
第四发送单元,用于根据所述第二备数据库信息将所述读操作指令发送至所述第二备数据库信息所对应的第四服务器,以使所述第四服务器根据所述读操作请求对所述第二备数据库信息所对应的第二备数据库进行读取数据;
第二接收单元,用于接收所述第四服务器返回的所读取的数据。
10.如权利要求9所述的服务器,其特征在于,所述服务器包括:
预置单元,用于预置所述主集群列表和所述备集群列表。
11.如权利要求4所述的服务器,其特征在于,所述服务器还包括:
第一获取单元,用于当检测到新增第一数据库时,在所述主集群列表中获取任意一个第三主数据库信息;
第一复制单元,用于获取所述第三主数据库信息所对应的第三主数据库所存储的数据,将所述第三主数据库所存储的数据复制至所述第一数据库上;
第一删除单元,用于向所述第三主数据库信息所对应的服务器发送第一删除指令,以删除所述第三主数据库。
12.如权利要求11所述的服务器,其特征在于,所述服务器还包括:
第二获取单元,用于当检测到新增的第二数据库时,在所述备集群列表中任意获取第三备数据库信息;
第二复制单元,用于获取所述第三备数据库信息所对应的第三备数据库所存储的数据,将所述第三备数据库所存储的数据复制至所述第二数据库上;
第二删除单元,用于向所述第三备数据库信息所对应的服务器发送第第二删除指令,以删除所述第三备数据库。
13.一种数据库的数据处理系统,所述系统包括客户端、至少一个服务器以及如权利要求7~12所述的代理服务器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410387992.8A CN104219085A (zh) | 2014-08-07 | 2014-08-07 | 一种数据库的数据处理方法、代理服务器及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410387992.8A CN104219085A (zh) | 2014-08-07 | 2014-08-07 | 一种数据库的数据处理方法、代理服务器及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104219085A true CN104219085A (zh) | 2014-12-17 |
Family
ID=52100243
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410387992.8A Pending CN104219085A (zh) | 2014-08-07 | 2014-08-07 | 一种数据库的数据处理方法、代理服务器及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104219085A (zh) |
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834724A (zh) * | 2015-05-12 | 2015-08-12 | 广东睿江科技有限公司 | 一种数据库同步方法和装置 |
CN105354046A (zh) * | 2015-09-15 | 2016-02-24 | 深圳市深信服电子科技有限公司 | 基于共享磁盘的数据库更新处理方法及系统 |
CN105574127A (zh) * | 2015-12-12 | 2016-05-11 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统准实时的双活方法 |
CN106126600A (zh) * | 2016-06-21 | 2016-11-16 | 浪潮电子信息产业股份有限公司 | 一种执行读写分离的方法、装置及系统 |
CN107153644A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
CN107220375A (zh) * | 2017-06-20 | 2017-09-29 | 北京小度信息科技有限公司 | 数据读写方法和服务器 |
WO2018050102A1 (zh) * | 2016-09-18 | 2018-03-22 | 华为技术有限公司 | 数据访问方法、路由装置和存储系统 |
CN108241641A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种分布式数据库的操作方法 |
CN108304406A (zh) * | 2017-01-12 | 2018-07-20 | 阿里巴巴集团控股有限公司 | 一种数据库读写方法、装置及电子设备 |
CN108418859A (zh) * | 2018-01-24 | 2018-08-17 | 华为技术有限公司 | 写数据的方法和装置 |
WO2018176864A1 (zh) * | 2017-03-31 | 2018-10-04 | 平安科技(深圳)有限公司 | 数据库权限管理方法、系统、设备和计算机可读存储介质 |
CN109313644A (zh) * | 2016-04-06 | 2019-02-05 | 里尼阿克股份有限公司 | 数据库代理所用的系统和方法 |
CN109408280A (zh) * | 2017-08-17 | 2019-03-01 | 北京金山云网络技术有限公司 | 数据备份方法、装置及系统 |
WO2019095577A1 (zh) * | 2017-11-14 | 2019-05-23 | 平安科技(深圳)有限公司 | 数据请求处理方法、装置、计算机设备和存储介质 |
CN109840166A (zh) * | 2019-01-14 | 2019-06-04 | 京东数字科技控股有限公司 | 一种跨集群对象存储异步备份方法、装置和系统 |
CN110297898A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 异步编译方法及装置 |
CN111339180A (zh) * | 2019-12-24 | 2020-06-26 | 沈阳通用软件有限公司 | 一种通用的数据库同步方法 |
CN112965937A (zh) * | 2021-03-11 | 2021-06-15 | 北京华恒盛世科技有限公司 | 一种基于一致性哈希的高可用运维系统 |
CN113590595A (zh) * | 2021-09-30 | 2021-11-02 | 苏州浪潮智能科技有限公司 | 一种数据库多写方法、装置及相关设备 |
US11349922B2 (en) | 2016-04-06 | 2022-05-31 | Marvell Asia Pte Ltd. | System and method for a database proxy |
CN114840558A (zh) * | 2022-03-28 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 数据生成方法、装置、电子设备及计算机程序产品 |
US11429595B2 (en) | 2020-04-01 | 2022-08-30 | Marvell Asia Pte Ltd. | Persistence of write requests in a database proxy |
-
2014
- 2014-08-07 CN CN201410387992.8A patent/CN104219085A/zh active Pending
Cited By (31)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104834724B (zh) * | 2015-05-12 | 2018-12-18 | 广东睿江云计算股份有限公司 | 一种数据库同步方法和装置 |
CN104834724A (zh) * | 2015-05-12 | 2015-08-12 | 广东睿江科技有限公司 | 一种数据库同步方法和装置 |
CN105354046A (zh) * | 2015-09-15 | 2016-02-24 | 深圳市深信服电子科技有限公司 | 基于共享磁盘的数据库更新处理方法及系统 |
CN105354046B (zh) * | 2015-09-15 | 2019-03-26 | 深信服科技股份有限公司 | 基于共享磁盘的数据库更新处理方法及系统 |
CN105574127A (zh) * | 2015-12-12 | 2016-05-11 | 天津南大通用数据技术股份有限公司 | 分布式数据库系统准实时的双活方法 |
CN107153644A (zh) * | 2016-03-02 | 2017-09-12 | 阿里巴巴集团控股有限公司 | 一种数据同步方法及装置 |
US11349922B2 (en) | 2016-04-06 | 2022-05-31 | Marvell Asia Pte Ltd. | System and method for a database proxy |
CN109313644B (zh) * | 2016-04-06 | 2022-03-08 | 马维尔亚洲私人有限公司 | 数据库代理所用的系统和方法 |
CN109313644A (zh) * | 2016-04-06 | 2019-02-05 | 里尼阿克股份有限公司 | 数据库代理所用的系统和方法 |
CN106126600A (zh) * | 2016-06-21 | 2016-11-16 | 浪潮电子信息产业股份有限公司 | 一种执行读写分离的方法、装置及系统 |
US10956077B2 (en) | 2016-09-18 | 2021-03-23 | Huawei Technologies Co., Ltd. | Data access method, routing apparatus, and storage system |
WO2018050102A1 (zh) * | 2016-09-18 | 2018-03-22 | 华为技术有限公司 | 数据访问方法、路由装置和存储系统 |
CN108241641A (zh) * | 2016-12-23 | 2018-07-03 | 航天星图科技(北京)有限公司 | 一种分布式数据库的操作方法 |
CN108304406A (zh) * | 2017-01-12 | 2018-07-20 | 阿里巴巴集团控股有限公司 | 一种数据库读写方法、装置及电子设备 |
WO2018176864A1 (zh) * | 2017-03-31 | 2018-10-04 | 平安科技(深圳)有限公司 | 数据库权限管理方法、系统、设备和计算机可读存储介质 |
US11455415B2 (en) | 2017-03-31 | 2022-09-27 | Ping An Technology (Shenzhen) Co., Ltd. | Method, system, and device for managing database permissions, and computer-readable storage medium |
CN107220375B (zh) * | 2017-06-20 | 2020-02-11 | 北京星选科技有限公司 | 数据读写方法和服务器 |
CN107220375A (zh) * | 2017-06-20 | 2017-09-29 | 北京小度信息科技有限公司 | 数据读写方法和服务器 |
CN109408280A (zh) * | 2017-08-17 | 2019-03-01 | 北京金山云网络技术有限公司 | 数据备份方法、装置及系统 |
WO2019095577A1 (zh) * | 2017-11-14 | 2019-05-23 | 平安科技(深圳)有限公司 | 数据请求处理方法、装置、计算机设备和存储介质 |
CN108418859A (zh) * | 2018-01-24 | 2018-08-17 | 华为技术有限公司 | 写数据的方法和装置 |
CN108418859B (zh) * | 2018-01-24 | 2020-11-06 | 华为技术有限公司 | 写数据的方法和装置 |
CN109840166A (zh) * | 2019-01-14 | 2019-06-04 | 京东数字科技控股有限公司 | 一种跨集群对象存储异步备份方法、装置和系统 |
CN110297898A (zh) * | 2019-06-28 | 2019-10-01 | 百度在线网络技术(北京)有限公司 | 异步编译方法及装置 |
CN111339180A (zh) * | 2019-12-24 | 2020-06-26 | 沈阳通用软件有限公司 | 一种通用的数据库同步方法 |
CN111339180B (zh) * | 2019-12-24 | 2024-03-29 | 三六零数字安全科技集团有限公司 | 一种通用的数据库同步方法 |
US11429595B2 (en) | 2020-04-01 | 2022-08-30 | Marvell Asia Pte Ltd. | Persistence of write requests in a database proxy |
CN112965937A (zh) * | 2021-03-11 | 2021-06-15 | 北京华恒盛世科技有限公司 | 一种基于一致性哈希的高可用运维系统 |
CN113590595A (zh) * | 2021-09-30 | 2021-11-02 | 苏州浪潮智能科技有限公司 | 一种数据库多写方法、装置及相关设备 |
WO2023050706A1 (zh) * | 2021-09-30 | 2023-04-06 | 苏州浪潮智能科技有限公司 | 一种数据库多写方法、装置及相关设备 |
CN114840558A (zh) * | 2022-03-28 | 2022-08-02 | 阿里巴巴(中国)有限公司 | 数据生成方法、装置、电子设备及计算机程序产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN104219085A (zh) | 一种数据库的数据处理方法、代理服务器及系统 | |
CN101334797B (zh) | 一种分布式文件系统及其数据块一致性管理的方法 | |
US8543609B1 (en) | Snapshots in deduplication | |
US7200726B1 (en) | Method and apparatus for reducing network traffic during mass storage synchronization phase of synchronous data mirroring | |
US8712962B1 (en) | Snapshots in de-duplication | |
US8914595B1 (en) | Snapshots in deduplication | |
US6850955B2 (en) | Storage system and control method | |
US7539703B2 (en) | Setup method for disaster recovery system | |
US7921179B1 (en) | Reducing latency of access requests in distributed storage systems having a shared data set | |
US8538924B2 (en) | Computer system and data access control method for recalling the stubbed file on snapshot | |
US20110238625A1 (en) | Information processing system and method of acquiring backup in an information processing system | |
CN108363641B (zh) | 一种主备机数据传递方法、控制节点以及数据库系统 | |
US20120042130A1 (en) | Data Storage System | |
US20090240880A1 (en) | High availability and low capacity thin provisioning | |
US11093446B2 (en) | Duplicate request checking for file system interfaces | |
JP4290975B2 (ja) | データベース処理方法及び装置並びにその処理プログラム及びディザスタリカバリ方法及びシステム | |
JP2006277208A (ja) | バックアップシステム、プログラム及びバックアップ方法 | |
CN115858236A (zh) | 一种数据备份方法和数据库集群 | |
JP4201447B2 (ja) | 分散処理システム | |
US20130297969A1 (en) | File management method and apparatus for hybrid storage system | |
US11556400B2 (en) | Handling large messages via pointer and log | |
CN111225003B (zh) | 一种nfs节点配置方法和装置 | |
CN111399760B (zh) | Nas集群元数据处理方法、装置、nas网关及介质 | |
CN103197987A (zh) | 一种数据备份的方法、数据恢复的方法及系统 | |
CN116048874A (zh) | 基于云环境的数据备份方法和系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
WD01 | Invention patent application deemed withdrawn after publication | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20141217 |