一種數(shù)據(jù)庫的數(shù)據(jù)處理方法、代理服務(wù)器及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例公開了一種數(shù)據(jù)庫的數(shù)據(jù)處理方法,包括:當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫信息;根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主數(shù)據(jù)庫信息所對應(yīng)的第一服務(wù)器;當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成功信號時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹配的第一備數(shù)據(jù)庫信息;根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器。采用本發(fā)明,有效提高備份數(shù)據(jù)庫的數(shù)據(jù)的安全性。
【專利說明】一種數(shù)據(jù)庫的數(shù)據(jù)處理方法、代理服務(wù)器及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,尤其涉及一種數(shù)據(jù)庫的數(shù)據(jù)處理方法、代理服務(wù)器及系統(tǒng)。
【背景技術(shù)】
[0002] 目前,服務(wù)器的數(shù)據(jù)一般存儲在服務(wù)器的數(shù)據(jù)庫中,當(dāng)客戶端在對服務(wù)器上的數(shù) 據(jù)進行讀寫操作時,一般是通過訪問服務(wù)器的數(shù)據(jù)庫來對數(shù)據(jù)進行讀寫操作。但是,若是過 多客戶端對服務(wù)器的數(shù)據(jù)庫進行讀寫操作時,可能導(dǎo)致數(shù)據(jù)庫所在的磁盤1〇端口的擁塞 甚至癱瘓,導(dǎo)致客戶端讀寫數(shù)據(jù)庫的速度過慢,從而數(shù)據(jù)庫無法提供高效的服務(wù)。
[0003] 故為了提高客戶端讀寫數(shù)據(jù)庫的讀寫速度,目前,大多采用的方式是將數(shù)據(jù)庫緩 存在內(nèi)存中,以便客戶端可以直接從服務(wù)器的內(nèi)存中訪問數(shù)據(jù)庫。我們可以將緩存在內(nèi)存 中的數(shù)據(jù)庫稱之為內(nèi)存數(shù)據(jù)庫。
[0004] 在內(nèi)存數(shù)據(jù)庫中,為了達到分布式緩存,以減少數(shù)據(jù)庫的負載,提升訪問數(shù)據(jù)的目 的,目前采用了主從復(fù)制機制,即設(shè)置了主數(shù)據(jù)庫和從數(shù)據(jù)庫,從數(shù)據(jù)庫是對主數(shù)據(jù)庫的內(nèi) 容數(shù)據(jù)進行復(fù)制拷貝。當(dāng)主數(shù)據(jù)庫發(fā)生異常時,從數(shù)據(jù)庫將替代主數(shù)據(jù)庫來提供數(shù)據(jù)給客 戶端進行訪問。但是,在主數(shù)據(jù)庫發(fā)生異常啟用從數(shù)據(jù)庫時,客戶端需要進行重啟,獲取從 數(shù)據(jù)庫的地址,從而對從數(shù)據(jù)庫進行操作,這將導(dǎo)致數(shù)據(jù)庫中斷服務(wù),給用戶帶來不便,并 且,當(dāng)從數(shù)據(jù)庫損壞重新恢復(fù)主數(shù)據(jù)庫的數(shù)據(jù)時,將花費大量時間進行復(fù)制拷貝,并且影響 了服務(wù)器的正常運行。
【發(fā)明內(nèi)容】
[0005] 本發(fā)明實施例所要解決的技術(shù)問題在于,提供一種數(shù)據(jù)庫的數(shù)據(jù)處理方法、代理 服務(wù)器及系統(tǒng)??墒沟每蛻舳丝煞謩e對主數(shù)據(jù)庫和備數(shù)據(jù)庫進行寫操作,使得主數(shù)據(jù)庫和 備數(shù)據(jù)庫之間相互獨立,有效提高備份數(shù)據(jù)庫的數(shù)據(jù)的安全性,
[0006] 本發(fā)明實施例第一方面提供一種數(shù)據(jù)庫的數(shù)據(jù)處理方法,所述方法包括:
[0007] 當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的包括至少一 個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫信息;
[0008] 根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主數(shù)據(jù)庫信息所 對應(yīng)的第一服務(wù)器,以使所述第一服務(wù)器根據(jù)所述寫操作請求對所述第一主數(shù)據(jù)庫信息所 對應(yīng)的第一主數(shù)據(jù)庫進行寫入數(shù)據(jù);
[0009] 當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成功信號時,在預(yù) 置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹配的第一備數(shù) 據(jù)庫信息;
[0010] 根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備數(shù)據(jù)庫信息所 對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第一備數(shù)據(jù)庫信息所 對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0011] 其中,所述方法還包括:
[0012] 當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求在所述主集群列表中 查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息; ______ 占
[0013] 根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述主數(shù)據(jù)庫^息所 對應(yīng)的第三服務(wù)器,以使所述第三服務(wù)器根據(jù)所述讀操作請求對所述第二主數(shù)據(jù)庫佶息所 對應(yīng)的第二主數(shù)據(jù)庫進行讀取數(shù)據(jù);
[0014] 接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)。
[0015] 其中,所述接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)之后包括:
[0016] 根據(jù)所述所讀取的數(shù)據(jù)判斷所述第三服務(wù)器對所述第一主數(shù)據(jù)庫讀取數(shù)據(jù)疋否 成功; 、、、、
[0017] 當(dāng)所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在所述備集群列表中查 找與所述讀操作指令匹配的第二備數(shù)據(jù)庫信息; ^
[0018] 根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第二備數(shù)據(jù)庫信息所 對應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第二備數(shù)據(jù)庫信息所 對應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù);
[0019] 接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。
[0020] 其中,在當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的包 括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫信 息之前包括:
[0021] 預(yù)置所述主集群列表和所述備集群列表。
[0022] 其中,所述方法還包括:
[0023] 當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表中獲取任意一個第三主數(shù)據(jù)庫信 息;
[0024] 獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所存儲的數(shù)據(jù),將所述第三主 數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上;
[0025] 向所述第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令,以刪除所述第三主 數(shù)據(jù)庫。
[0026] 其中,所述方法還包括:
[0027] 當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列表中任意獲取第三備數(shù)據(jù)庫信 息;
[0028] 獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存儲的數(shù)據(jù),將所述第三備 數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上;
[0029]向所述第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指令,以刪除所述第三 備數(shù)據(jù)庫。
[0030] 本發(fā)明實施例第二方面提供一種代理服務(wù)器,所述服務(wù)器包括:
[0031] 第一查找單元,用于當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求 在預(yù)置的包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一 主數(shù)據(jù)庫信息;
[0032] 第一發(fā)送單元,用于根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第 一主數(shù)據(jù)庫信息所對應(yīng)的第一服務(wù)器,以使所述第一服務(wù)器根據(jù)所述寫操作請求對所述第 一主數(shù)據(jù)庫信息所對應(yīng)的第一主數(shù)據(jù)庫進行寫入數(shù)據(jù);
[0033] 第二查找單元,用于當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù) 據(jù)成功信號時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請 求匹配的第一備數(shù)據(jù)庫信息;
[0034] 第二發(fā)送單元,用于根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第 一備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第 一備數(shù)據(jù)庫信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0035] 其中,所述服務(wù)器還包括:
[0036]第三查找單元,用于當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求 在所述主集群列表中查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息;
[0037]第三發(fā)送單元,用于根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述第 二主數(shù)據(jù)庫信息所對應(yīng)的第三服務(wù)器,以使所述第三服務(wù)器根據(jù)所述讀操作請求對所述第 二主數(shù)據(jù)庫信息所對應(yīng)的第二主數(shù)據(jù)庫進行讀取數(shù)據(jù);
[0038] 第一接收單元,用于接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)。
[0039] 其中,所述服務(wù)器包括:
[0040] 判斷單元,用于根據(jù)所述所讀取的數(shù)據(jù)判斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫 讀取數(shù)據(jù)是否成功;
[0041] 第四查找單元,用于當(dāng)所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在 所述備集群列表中查找與所述讀操作指令匹配的第二備數(shù)據(jù)庫信息;
[0042] 第四發(fā)送單元,用于根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第 二備數(shù)據(jù)庫信息所對應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第 二備數(shù)據(jù)庫信息所對應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù);
[0043] 第二接收單元,用于接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。
[0044] 其中,所述服務(wù)器包括:
[0045] 預(yù)置單元,用于預(yù)置所述主集群列表和所述備集群列表。
[0046] 其中,所述服務(wù)器還包括:
[0047] 第一獲取單元,用于當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表中獲取任意 一個第三主數(shù)據(jù)庫信息;
[0048]第一復(fù)制單元,用于獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所存儲的 數(shù)據(jù),將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上;
[0049]第一刪除單元,用于向所述第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指 令,以刪除所述第三主數(shù)據(jù)庫。
[0050] 其中,所述服務(wù)器還包括:
[0051] 第二獲取單元,用于當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列表中任意獲 取第三備數(shù)據(jù)庫信息;
[0052] 第二復(fù)制單元,用于獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存儲的 數(shù)據(jù),將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上;
[0053] 第二刪除單元,用于向所述第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指 令,以刪除所述第三備數(shù)據(jù)庫
[0054] 本發(fā)明實施例第三方面還提供一種數(shù)據(jù)庫的數(shù)據(jù)處理系統(tǒng),包括客戶端、至少一 個服務(wù)器以及如上所述的代理服務(wù)器。
[0055] 實施本發(fā)明實施例,具有如下有益效果:
[0056] 本發(fā)明通過當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的 包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫 信息,根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主數(shù)據(jù)庫信息所對應(yīng) 的第一服務(wù)器,當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成功信號 時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹配的第 一備數(shù)據(jù)庫信息,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備數(shù)據(jù)庫 信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第一備數(shù)據(jù)庫 信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù),這使得客戶端可分別對主數(shù)據(jù)庫和備數(shù)據(jù)庫進 行寫操作,使得主數(shù)據(jù)庫和備數(shù)據(jù)庫之間相互獨立,有效提高備份數(shù)據(jù)庫的數(shù)據(jù)的安全性, 并且備數(shù)據(jù)庫不是直接對主數(shù)據(jù)庫進行復(fù)制,降低對主數(shù)據(jù)庫所在服務(wù)器的運行負擔(dān)。
【專利附圖】
【附圖說明】
[0057] 為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本 發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以 根據(jù)這些附圖獲得其他的附圖。
[0058] 圖1是本發(fā)明一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的第一實施例流程示意圖;
[0059] 圖2是本發(fā)明一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的第二實施例流程示意圖;
[0060] 圖3是本發(fā)明一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的第三實施例流程示意圖;
[0061] 圖4是本發(fā)明一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的第四實施例流程示意圖;
[0062] 圖5是本發(fā)明一種代理服務(wù)器的第一實施例結(jié)構(gòu)圖;
[0063] 圖6是本發(fā)明一種代理服務(wù)器的第二實施例結(jié)構(gòu)圖;
[0064] 圖7是本發(fā)明一種代理服務(wù)器的第三實施例結(jié)構(gòu)圖;
[0065] 圖8是本發(fā)明一種代理服務(wù)器的第四實施例結(jié)構(gòu)圖;
[0066] 圖9是本發(fā)明一種數(shù)據(jù)庫的數(shù)據(jù)處理系統(tǒng)的第一實施例結(jié)構(gòu)圖;
【具體實施方式】
[0067] 下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進行清楚、完 整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例。基于 本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他 實施例,都屬于本發(fā)明保護的范圍。
[0068] 請參見圖1所示的一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的流程示意圖,如圖1所述,本實施 例的一種數(shù)據(jù)量的數(shù)據(jù)處理方法包括以下步驟:
[0069] S100,當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的包括 至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫信息。
[0070] 在本發(fā)明實施例中,主集群列表可包括至少一個主數(shù)據(jù)庫信息,主數(shù)據(jù)庫信息可 包括主數(shù)據(jù)庫的編號、命名以及主數(shù)據(jù)庫的IP地址等信息,其中,每個主數(shù)據(jù)庫的命名可 以是數(shù)據(jù)庫名稱+編號,例如:當(dāng)數(shù)據(jù)庫是RedisCremote dictonary server,遠程字典服 務(wù)器)數(shù)據(jù)庫時,主數(shù)據(jù)庫的命名可以是Redis+編號。可選的,主數(shù)據(jù)庫可包括Redis數(shù) 據(jù)庫,其中,Redis數(shù)據(jù)庫是基于key-value的內(nèi)存數(shù)據(jù)庫,支持主從復(fù)制,數(shù)據(jù)可以從主數(shù) 據(jù)庫向多個備數(shù)據(jù)庫進行同步??蛇x的,主數(shù)據(jù)庫也可以是mysql數(shù)據(jù)庫、oracle數(shù)據(jù)庫 等,在此不對主數(shù)據(jù)庫。類型其進行限制。
[0071] 進一步的,代理服務(wù)器可以連接多個服務(wù)器,服務(wù)器可以存儲至少一個主數(shù)據(jù)庫, 其中,服務(wù)器與代理服務(wù)器進行TCP(Transmission Control Protocol,傳輸控制協(xié)議)長 連接,代理服務(wù)器通過接收客戶端的指令并將指令路由到相應(yīng)的服務(wù)器上的主數(shù)據(jù)庫上, 從而控制對主數(shù)據(jù)庫的讀取或存儲。
[0072] 在本發(fā)明實施例中,寫操作請求可以攜帶系統(tǒng)分配的鍵值KEY1,代理服務(wù)器可采 用一致性哈希算法對主集群列表中的主數(shù)據(jù)庫信息進行哈希計算,獲得與KEY1相匹配的 第一主數(shù)據(jù)庫信息。具體的:采用一致性哈希算法可以是,首先,對主集群列表中每個主數(shù) 據(jù)庫信息進行哈希計算,其中,可根據(jù)主數(shù)據(jù)庫信息所包括的IP地址,或者編號進行哈希 計算,并將其每個主數(shù)據(jù)庫信息所對應(yīng)的哈希值映射到〇?2的32次方的圓上。其次,根 據(jù)寫操作請求所攜帶的KEY1,將KEY1映射到圓上。最后從映射到的位置開始順時針查找, 獲得的第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息則為寫操作請求匹配的第一主數(shù)據(jù)庫信息,如 果超過2的32次方仍然找不到哈希值,則圓環(huán)上第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息為寫 操作請求匹配的第一主數(shù)據(jù)庫信息。
[0073] S101,根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主數(shù)據(jù)庫信 息所對應(yīng)的第一服務(wù)器,以使所述第一服務(wù)器根據(jù)所述寫操作請求對所述第一主數(shù)據(jù)庫信 息所對應(yīng)的第一主數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0074] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到寫操作請求匹配的第一主數(shù)據(jù)庫信息 后,代理服務(wù)器可根據(jù)第一主數(shù)據(jù)庫信息所包括的第一主數(shù)據(jù)庫的IP地址,將寫操作請求 通過TCP長連接,路由到第一主數(shù)據(jù)庫的IP地址所在的第一服務(wù)器上,第一服務(wù)器響應(yīng)所 述寫操作請求對第一主數(shù)據(jù)庫進行寫入數(shù)據(jù),將所需寫入的數(shù)據(jù)寫入第一主數(shù)據(jù)庫。其中, 當(dāng)服務(wù)器將所需寫入的數(shù)據(jù)成功寫入第一主數(shù)據(jù)庫時,第一服務(wù)器可通過TCP長連接向代 理服務(wù)器返回寫入數(shù)據(jù)成功信號,當(dāng)?shù)谝环?wù)器將所需寫入的數(shù)據(jù)寫入第一主數(shù)據(jù)庫失敗 時,第一服務(wù)器可通過TCP長連接向代理服務(wù)器返回寫入失敗信號。
[0075] S102,當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成功信號 時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹配的第 一備數(shù)據(jù)庫信息。
[0076] 在本發(fā)明實施例中,備集群列表可包括至少一個備數(shù)據(jù)庫信息,備數(shù)據(jù)庫信息可 包括備數(shù)據(jù)庫的編號、命名以及備數(shù)據(jù)庫的IP地址等信息,其中,每個備數(shù)據(jù)庫的命名可 以是數(shù)據(jù)庫名稱+編號,例如:當(dāng)數(shù)據(jù)庫是RedisCremote dictonary server,遠程字典服 務(wù)器)數(shù)據(jù)庫時,備數(shù)據(jù)庫的命名可以是Redis+編號??蛇x的,備數(shù)據(jù)庫可包括Redis數(shù) 據(jù)庫,其中,Redis數(shù)據(jù)庫是基于key-value的內(nèi)存數(shù)據(jù)庫,支持主從復(fù)制,數(shù)據(jù)可以從主數(shù) 據(jù)庫向多個備數(shù)據(jù)庫進行同步。可選的,備數(shù)據(jù)庫也可以是mysql數(shù)據(jù)庫、oracle數(shù)據(jù)庫 等,在此不對備數(shù)據(jù)庫類型其進行限制。
[0077] 進一步的,代理服務(wù)器可以連接多個服務(wù)器,服務(wù)器可以存儲至少一個備數(shù)據(jù)庫, 其中,服務(wù)器與代理服務(wù)器進行TCP (Transmission Control Protocol,傳輸控制協(xié)議)長 連接,代理服務(wù)器通過接收客戶端的指令并將指令路由到相應(yīng)的服務(wù)器上的備數(shù)據(jù)庫上, 從而控制對備數(shù)據(jù)庫的讀取或存儲。其中,備數(shù)據(jù)庫與主數(shù)據(jù)庫不存儲在同個服務(wù)器上。
[0078] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器接收到第一主數(shù)據(jù)庫所在的第一服務(wù)器返回的 寫入數(shù)據(jù)成功信號后,代理服務(wù)器可獲得第一服務(wù)器已對第一主數(shù)據(jù)庫成功寫入數(shù)據(jù)。當(dāng) 第一服務(wù)器己對第一主數(shù)據(jù)庫成功寫入數(shù)據(jù)時,代理服務(wù)器將在包括至少一個備數(shù)據(jù)庫信 息的備集群數(shù)據(jù)庫中查找與所述寫操作請求匹配的第一備數(shù)據(jù)庫信息,以對第一備數(shù)據(jù)庫 信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0079] 在本發(fā)明實施例中,代理服務(wù)器可采用一致性哈希算法對備集群列表中的備數(shù)據(jù) 庫信息進行哈希計算,獲得與寫操作請求所攜帶的KEY1相匹配的第一備數(shù)據(jù)庫信息。具體 的:采用一致性哈希算法可以是,首先,對備集群列表中每個備數(shù)據(jù)庫信息進行哈希計算, 其中,可根據(jù)備數(shù)據(jù)庫信息所包括的IP地址,或者編號進行哈希計算,并將其每個備數(shù)據(jù) 庫信息所對應(yīng)的哈希值映射到0?2的32次方的圓上。其次,根據(jù)寫操作請求所攜帶的 KEY1,將KEY1映射到圓上。最后從映射到的位置開始順時針查找,獲得的第一個哈希值所 對應(yīng)的備數(shù)據(jù)庫信息則為寫操作請求匹配的第一備數(shù)據(jù)庫信息,如果超過2的32次方仍然 找不到哈希值,則圓環(huán)上第一個哈希值為寫操作請求匹配的第一備數(shù)據(jù)庫的哈希值。采用 一致性哈希算法管理數(shù)據(jù)庫,可以使得數(shù)據(jù)庫有很好的可擴展性和可用性。
[0080] S103,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備數(shù)據(jù)庫信 息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第一備數(shù)據(jù)庫信 息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0081] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到寫操作請求匹配的第一備數(shù)據(jù)庫信息 后,代理服務(wù)器可根據(jù)第一備數(shù)據(jù)庫信息所包括的第一備數(shù)據(jù)庫的IP地址,將寫操作請求 通過TCP長連接,路由到第一備數(shù)據(jù)庫的IP地址所在的第二服務(wù)器上,第二服務(wù)器響應(yīng)所 述寫操作請求對第一備數(shù)據(jù)庫進行寫入數(shù)據(jù),將所需寫入的數(shù)據(jù)寫入第一備數(shù)據(jù)庫。其中, 當(dāng)服務(wù)器將所需寫入的數(shù)據(jù)成功寫入第一備數(shù)據(jù)庫時,第二服務(wù)器可通過TCP長連接向代 理服務(wù)器返回寫入數(shù)據(jù)成功信號,當(dāng)?shù)诙?wù)器將所需寫入的數(shù)據(jù)寫入第一備數(shù)據(jù)庫失敗 時,第二服務(wù)器可通過TCP長連接向代理服務(wù)器返回寫入失敗信號。故我們可以理解的是, 備數(shù)據(jù)庫在進行備份時,采用對備數(shù)據(jù)庫進行寫入數(shù)據(jù)的方式,而不是利用現(xiàn)有的主從復(fù) 制進行備份的方式,這可更有效提高備份數(shù)據(jù)庫的數(shù)據(jù)的安全性以及解決當(dāng)主數(shù)據(jù)庫故障 時,而使得備數(shù)據(jù)庫無法備份的問題。
[0082] 在本發(fā)明實施例中,本發(fā)明通過當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述 寫操作請求在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求 匹配的第一備數(shù)據(jù)庫信息,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一 備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,并當(dāng)接收到所述第二服務(wù)器返回的對所述第一備數(shù)據(jù) 庫寫入數(shù)據(jù)成功信號時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述 寫操作請求匹配的第一備數(shù)據(jù)庫信息,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送 至所述第一備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求 對所述第一備數(shù)據(jù)庫信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。這使得客戶端可分別對主 數(shù)據(jù)庫和備數(shù)據(jù)庫進行寫操作,使得主數(shù)據(jù)庫和備數(shù)據(jù)庫之間相互獨立,有效提高備份數(shù) 據(jù)庫的數(shù)據(jù)的安全性,并且備數(shù)據(jù)庫不是直接對主數(shù)據(jù)庫進行復(fù)制,降低對主數(shù)據(jù)庫所在 服務(wù)器的運行負擔(dān)。
[0083] 請參見圖2所示的一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的流程示意圖,如圖2所述,本實施 例的一種數(shù)據(jù)量的數(shù)據(jù)處理方法包括以下步驟:
[0084] S201,預(yù)置所述主集群列表和所述備集群列表。
[0085] 在本發(fā)明實施例中,用戶可首先在與代理服務(wù)TCP長連接的服務(wù)器中進行預(yù)置主 集群數(shù)據(jù)庫和備集群數(shù)據(jù)庫。其中,用戶可首先根據(jù)客戶端所需數(shù)據(jù)量的大小,提前估算出 需要的數(shù)據(jù)庫的個數(shù)。例如:與代理服務(wù)器連接的服務(wù)器共有N臺,在每臺服務(wù)器上布置Μ 個主數(shù)據(jù)庫和Μ個備數(shù)據(jù)庫,則總共需布置的數(shù)據(jù)庫Τ有Ν*Μ*2個。當(dāng)用戶在服務(wù)器中預(yù)置 好主集群數(shù)據(jù)庫和備數(shù)據(jù)庫,可獲取主集群數(shù)據(jù)庫的信息和備集群數(shù)據(jù)庫的信息,并將主 集群數(shù)據(jù)庫的信息預(yù)置在主集群列表中,備集群數(shù)據(jù)庫的信息預(yù)置在備集群列表中。其中, 主集群數(shù)據(jù)庫的信息可包括主集群數(shù)據(jù)庫的命名、編號以及ip地址,備集群數(shù)據(jù)庫的信息 可包括備集群數(shù)據(jù)庫的命名、編號以及IP地址。
[0086] S201,當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求在所述主集群 列表中查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息。
[0087] 在本發(fā)明實施例中,讀操作請求可以攜帶系統(tǒng)分配的鍵值KEY2,代理服務(wù)器可采 用一致性哈希算法對主集群列表所包括的主數(shù)據(jù)庫信息進行哈希計算,獲得與KEY2相匹 配的第二主數(shù)據(jù)庫信息。具體的:采用一致性哈希算法可以是,首先,對主集群列表中每個 主數(shù)據(jù)庫信息進行哈希計算,其中,可根據(jù)主數(shù)據(jù)庫信息所包括的IP地址,或者編號進行 哈希計算,并將其每個主數(shù)據(jù)庫信息所對應(yīng)的哈希值映射到0?2的32次方的圓上。其 次,根據(jù)讀操作請求所攜帶的KEY2,將KEY2映射到圓上。最后從映射到的位置開始順時針 查找,獲得的第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息則為讀操作請求匹配的第二主數(shù)據(jù)庫信 息,如果超過2的32次方仍然找不到哈希值,則圓環(huán)上第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信 息為讀操作請求匹配的第二主數(shù)據(jù)庫信息。
[0088] S202,根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述第二主數(shù)據(jù)庫信 息所對應(yīng)的第三服務(wù)器,以使所述第三服務(wù)器根據(jù)所述讀操作請求對所述第二主數(shù)據(jù)庫信 息所對應(yīng)的第二主數(shù)據(jù)庫進行讀取數(shù)據(jù)。
[0089] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到讀操作請求匹配的第二主數(shù)據(jù)庫信息 后,代理服務(wù)器可根據(jù)第二主數(shù)據(jù)庫信息所包括的第二主數(shù)據(jù)庫的ip地址,將讀操作請求 通過TCP長連接,路由到第二主數(shù)據(jù)庫的IP地址所在的第三服務(wù)器上,第三服務(wù)器響應(yīng)所 述讀操作請求對第二主數(shù)據(jù)庫進行讀取數(shù)據(jù),獲取所讀取的數(shù)據(jù),并返回給代理服務(wù)器。
[0090] S203,接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)。
[0091] S204,根據(jù)所述所讀取的數(shù)據(jù)判斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù) 是否成功。 _
[0092] 在本發(fā)明實施例中,代理服務(wù)器可以根據(jù)服務(wù)器返回的所讀取的數(shù)據(jù)判斷第三服 務(wù)器對第二主數(shù)據(jù)庫進行讀取數(shù)據(jù)是否讀取成功。其中,可通過判斷所讀取的數(shù)據(jù)的內(nèi)容 來判斷服務(wù)器對第二主數(shù)據(jù)庫是否讀取成功。例如:當(dāng)所需讀取的數(shù)據(jù)為空、亂碼和無意義 的字符等,可判斷服務(wù)器對第二主數(shù)據(jù)庫讀取失敗。
[0093] S204,當(dāng)所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在所述備集群列 表中查找與所述讀操作指令匹配的第二備數(shù)據(jù)庫信息。
[0094] 在本發(fā)明實施例中,代理服務(wù)器可采用一致性哈希算法對備集群列表中的各個備 數(shù)據(jù)庫信息進行哈希計算,獲得與KEY2相匹配的第二備數(shù)據(jù)庫信息。具體的:采用一致性 哈希算法可以是,首先,對備集群列表中每個備數(shù)據(jù)庫信息進行哈希計算,其中,可根據(jù)備 數(shù)據(jù)庫信息所包括的IP地址,或者編號進行哈希計算,并將其每個備數(shù)據(jù)庫信息所對應(yīng)的 哈希值映射到0?2的32次方的圓上。其次,根據(jù)讀操作請求所攜帶的KEY2,將KEY 2映射 到圓上。最后從映射到的位置開始順時針查找,獲得的第一個哈希值所對應(yīng)的備數(shù)據(jù)庫信 息則為讀操作請求匹配的第二備數(shù)據(jù)庫信息,如果超過2的32次方仍然找不到哈希值,則 圓環(huán)上第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息為讀操作請求匹配的第二備數(shù)據(jù)庫信息。
[0095] S205,根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第二備數(shù)據(jù)庫信 息所對應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第二備數(shù)據(jù)庫信 息所對應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù)。
[0096] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到讀操作請求匹配的第二備數(shù)據(jù)庫信息 后,代理服務(wù)器可根據(jù)第二備數(shù)據(jù)庫信息所包括的第二備數(shù)據(jù)庫的ip地址,將讀操作請求 通過TCP長連接,路由到第二備數(shù)據(jù)庫的IP地址所在的第四服務(wù)器上,第四服務(wù)器響應(yīng)所 述讀操作請求對第二主數(shù)據(jù)庫進行讀取數(shù)據(jù),獲取所讀取的數(shù)據(jù),并返回給代理服務(wù)器。
[0097] S206,接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。
[0098] 在本發(fā)明實施例中,當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求 在所述主集群列表中查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息,
[0099] 根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述第二主數(shù)據(jù)庫信息所 對應(yīng)的第三服務(wù)器,接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù),根據(jù)所述所讀取的數(shù)據(jù)判 斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)是否成功,當(dāng)所述第三服務(wù)器對所述第二 主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在所述備集群列表中查找與所述讀操作指令匹配的第二備數(shù)據(jù) 庫信息,根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第二備數(shù)據(jù)庫信息所對 應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第二備數(shù)據(jù)庫信息所對 應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù),接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。這使得當(dāng)主 數(shù)據(jù)庫發(fā)生故障時,客戶端無障礙地可通過訪問備數(shù)據(jù)庫來獲取數(shù)據(jù),提高了訪問數(shù)據(jù)的 安全性,以及主集群和備集群的可用性。
[0100] 請參見圖3所示的一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的流程示意圖,如圖3所述,本實施 例的一種數(shù)據(jù)庫的數(shù)據(jù)處理方法包括以下步驟:
[0101] S300,當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表中獲取任意一個第三主數(shù) 據(jù)庫信息。
[0102] 在本發(fā)明實施例中,當(dāng)與代理服務(wù)器連接的服務(wù)器出現(xiàn)內(nèi)存瓶頸時,用戶可通過 新增服務(wù)器來對內(nèi)存進行擴容,解決內(nèi)存緊張的問題。其中,用戶可先在新增的服務(wù)器上存 儲新的數(shù)據(jù)庫,進而再將服務(wù)器與代理服務(wù)器進行TCP連接。
[0103] 進一步的,當(dāng)存儲有新的數(shù)據(jù)庫的服務(wù)器與代理服務(wù)器建立連接后,代理服務(wù)器 可檢測到有新增的第一數(shù)據(jù)庫。當(dāng)代理服務(wù)器檢測到有新增的第一數(shù)據(jù)庫后,代理服務(wù)器 可獲取新增的第一數(shù)據(jù)庫信息,其中,新增的第一數(shù)據(jù)庫信息包括新增的第一數(shù)據(jù)庫的 1p 地址。代理服務(wù)器可在主集群列表中獲取任意一個第三主數(shù)據(jù)庫信息。
[0104] S301,獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所存儲的數(shù)據(jù),將所述 第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上。
[0105] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器獲取到第三主數(shù)據(jù)庫信息后,代理服務(wù)器可根 據(jù)第三主數(shù)據(jù)庫信息向第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送獲取第三主數(shù)據(jù)庫所存儲 的數(shù)據(jù)請求,并接受第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器響應(yīng)所述請求返回的第三主數(shù)據(jù)庫 所存儲的數(shù)據(jù)。
[0106] 當(dāng)代理服務(wù)器接收到第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)后,可根據(jù)新增的第一數(shù)據(jù)庫信 息將第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)發(fā)送至新增的第一數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器,以使服務(wù) 器將第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至第一數(shù)據(jù)庫上,同時,更新主集群列表,將所述第一 數(shù)據(jù)庫信息存儲進主集群列表。
[0107] 在具體應(yīng)用中,可例如:執(zhí)行命令[slave of host port],host為第三主數(shù)據(jù)庫的 IP地址,port為第一數(shù)據(jù)庫的監(jiān)聽端口,通過這個命令可以將第一數(shù)據(jù)庫指定為第三主數(shù) 據(jù)庫的副本,當(dāng)命令開始執(zhí)行時,代理服務(wù)器控制第一數(shù)據(jù)庫復(fù)制第三主數(shù)據(jù)庫數(shù)據(jù)。當(dāng)復(fù) 制完成后,代理服務(wù)器將第一數(shù)據(jù)庫信息設(shè)置為主數(shù)據(jù)庫信息,從而更新進主集群列表中。
[0108] S302,向所述第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令,以刪除所述 第三主數(shù)據(jù)庫。
[0109] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述 第一數(shù)據(jù)庫上后,代理服務(wù)器可向第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令, 以使第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器刪除第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫,從 而釋放第三主數(shù)據(jù)庫所占用的空間,降低第三主數(shù)據(jù)庫信息所在的服務(wù)器的內(nèi)存壓力,提 高服務(wù)器的讀取數(shù)據(jù)的效率。
[0110] 進一步的,在本發(fā)明實施例中,當(dāng)新增有多個數(shù)據(jù)庫時,當(dāng)刪除第三主數(shù)據(jù)庫后, 可執(zhí)行S300在所述主集群列表中獲取任意一個第三主數(shù)據(jù)庫信息步驟,直至服務(wù)器中的 主數(shù)據(jù)庫可對客戶端提供服務(wù)。
[0111] 在本發(fā)明實施例中,本發(fā)明通過當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表 中獲取任意一個第三主數(shù)據(jù)庫信息,獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所 存儲的數(shù)據(jù),將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上,向所述第三主 數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令,以刪除所述第三主數(shù)據(jù)庫,從而對主數(shù)據(jù) 庫進行擴容,降低了服務(wù)器的內(nèi)存負擔(dān),提高服務(wù)器的讀取數(shù)據(jù)的效率。
[0112] 請參見圖4所示的一種數(shù)據(jù)庫的數(shù)據(jù)處理方法的流程示意圖,如圖4所述,本實施 例的一種數(shù)據(jù)庫的數(shù)據(jù)處理方法包括以下步驟:
[0113] S400,當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列表中任意獲取第三備數(shù)據(jù) 庫信息
[0114] 當(dāng)主集群數(shù)據(jù)庫可對客戶端提供服務(wù),并且仍有剩余的新增數(shù)據(jù)庫時,或者是檢 測到用戶指定的新增的第二數(shù)據(jù)庫時,代理服務(wù)器可獲取新增的第二數(shù)據(jù)庫信息,其中,新 增的第二數(shù)據(jù)庫信息包括新增的第而數(shù)據(jù)庫的IP地址。代理服務(wù)器可在備集群列表中獲 取任意一個第三備數(shù)據(jù)庫信息。
[0115] S401,獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存儲的數(shù)據(jù),將所述 第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上。
[0116] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器獲取到第三備數(shù)據(jù)庫信息后,代理服務(wù)器可根 據(jù)第三備數(shù)據(jù)庫信息向第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送獲取第三備數(shù)據(jù)庫所存儲 的數(shù)據(jù)請求,并接受第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器響應(yīng)所述請求返回的第三備數(shù)據(jù)庫 所存儲的數(shù)據(jù)。
[0117] 當(dāng)代理服務(wù)器接收到第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)后,可根據(jù)新增的第二數(shù)據(jù)庫信 息將第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)發(fā)送至新增的第二數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器,以使服務(wù) 器將第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至第二數(shù)據(jù)庫上,同時,更新備集群列表,將所述第二 數(shù)據(jù)庫信息存儲進備集群列表。
[0118] 在具體應(yīng)用中,可例如:執(zhí)行命令[slave of host port],host為第三備數(shù)據(jù)庫的 IP地址,port為第二數(shù)據(jù)庫的監(jiān)聽端口,通過這個命令可以將第二數(shù)據(jù)庫指定為第三備數(shù) 據(jù)庫的副本,當(dāng)命令開始執(zhí)行時,代理服務(wù)器控制第二數(shù)據(jù)庫復(fù)制第三備數(shù)據(jù)庫數(shù)據(jù)。當(dāng)復(fù) 制完成后,代理服務(wù)器將第二數(shù)據(jù)庫信息設(shè)置為備數(shù)據(jù)庫信息,從而更新進備集群列表中。
[0119] S402,向所述第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指令,以刪除所 述第三備數(shù)據(jù)庫。
[0120] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述 第二數(shù)據(jù)庫上后,代理服務(wù)器可向第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第二刪除指令, 以使第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器刪除第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫,從 而釋放第三備數(shù)據(jù)庫所占用的空間,降低第三備數(shù)據(jù)庫信息所在的服務(wù)器的內(nèi)存壓力,提 高服務(wù)器的讀取數(shù)據(jù)的效率。
[0121] 進一步的,在本發(fā)明實施例中,當(dāng)新增有多個數(shù)據(jù)庫時,當(dāng)刪除第三備數(shù)據(jù)庫后, 可執(zhí)行S400所述備集群列表中任意獲取第三備數(shù)據(jù)庫信息步驟。
[0122] 在本發(fā)明實施例中,本發(fā)明通過當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列 表中任意獲取第三備數(shù)據(jù)庫信息,獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存 儲的數(shù)據(jù),將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上,向所述第三備數(shù) 據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指令,以刪除所述第三備數(shù)據(jù)庫,從而對備數(shù)據(jù) 庫進行擴容,降低了服務(wù)器的內(nèi)存負擔(dān),提高服務(wù)器的讀取數(shù)據(jù)的效率。
[0123] 請參見圖5所示的一種代理服務(wù)器結(jié)構(gòu)圖,如圖5所示,本實施例的一種代理服務(wù) 器包括:
[0124] 第一查找單元100,用于當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請 求在預(yù)置的包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第 一主數(shù)據(jù)庫信息。
[0125] 在本發(fā)明實施例中,主集群列表可包括至少一個主數(shù)據(jù)庫信息,主數(shù)據(jù)庫信息可 包括主數(shù)據(jù)庫的編號、命名以及主數(shù)據(jù)庫的IP地址等信息,其中,每個主數(shù)據(jù)庫的命名可 以是數(shù)據(jù)庫名稱+編號,例如:當(dāng)數(shù)據(jù)庫是Redis(remote dictonary server,遠程字典服 務(wù)器)數(shù)據(jù)庫時,主數(shù)據(jù)庫的命名可以是Redis+編號。可選的,主數(shù)據(jù)庫可包括Redis數(shù) 據(jù)庫,其中,Redis數(shù)據(jù)庫是基于key-value的內(nèi)存數(shù)據(jù)庫,支持主從復(fù)制,數(shù)據(jù)可以從主數(shù) 據(jù)庫向多個備數(shù)據(jù)庫進行同步??蛇x的,主數(shù)據(jù)庫也可以是mysql數(shù)據(jù)庫、oracle數(shù)據(jù)庫 等,在此不對主數(shù)據(jù)庫。類型其進行限制。
[0126] 進一步的,代理服務(wù)器可以連接多個服務(wù)器,服務(wù)器可以存儲至少一個主數(shù)據(jù)庫, 其中,服務(wù)器與代理服務(wù)器進行TCP(Transmission Control Protocol,傳輸控制協(xié)議)長 連接,代理服務(wù)器通過接收客戶端的指令并將指令路由到相應(yīng)的服務(wù)器上的主數(shù)據(jù)庫上, 從而控制對主數(shù)據(jù)庫的讀取或存儲。
[0127] 在本發(fā)明實施例中,寫操作請求可以攜帶系統(tǒng)分配的鍵值KEY1,代理服務(wù)器的第 一查找單元100可采用一致性哈希算法對主數(shù)據(jù)庫信息進行哈希計算,獲得與KEY1相匹配 的第一主數(shù)據(jù)庫信息。具體的:第一查找單元100采用一致性哈希算法可以是,首先,第一 查找單元100對主集群列表中每個主數(shù)據(jù)庫信息進行哈希計算,其中,可根據(jù)主數(shù)據(jù)庫信 息所包括的IP地址,或者編號進行哈希計算,并將其每個主數(shù)據(jù)庫信息所對應(yīng)的哈希值映 射到0?2的32次方的圓上。其次,第一查找單元100根據(jù)寫操作請求所攜帶的KEY1,將 KEY1映射到圓上。最后從映射到的位置開始順時針查找,獲得的第一個哈希值所對應(yīng)的主 數(shù)據(jù)庫信息則為寫操作請求匹配的第一主數(shù)據(jù)庫信息,如果超過2的32次方仍然找不到哈 希值,則圓環(huán)上第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息為寫操作請求匹配的第一主數(shù)據(jù)庫信 息。
[0128] 第一發(fā)送單元200,用于根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所 述第一主數(shù)據(jù)庫信息所對應(yīng)的第一服務(wù)器,以使所述第一服務(wù)器根據(jù)所述寫操作請求對所 述第一主數(shù)據(jù)庫信息所對應(yīng)的第一主數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0129] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器的第一查找單元100查找到寫操作請求匹配的 第一主數(shù)據(jù)庫信息后,代理服務(wù)器的第一發(fā)送單元200可根據(jù)第一主數(shù)據(jù)庫信息所包括的 第一主數(shù)據(jù)庫的IP地址,將寫操作請求通過TCP長連接,路由到第一主數(shù)據(jù)庫的IP地址所 在的第一服務(wù)器上,第一服務(wù)器響應(yīng)所述寫操作請求對第一主數(shù)據(jù)庫進行寫入數(shù)據(jù),將所 需寫入的數(shù)據(jù)寫入第一主數(shù)據(jù)庫。其中,當(dāng)服務(wù)器將所需寫入的數(shù)據(jù)成功寫入第一主數(shù)據(jù) 庫時,第一服務(wù)器可通過TCP長連接向代理服務(wù)器返回寫入數(shù)據(jù)成功信號,當(dāng)?shù)谝环?wù)器 將所需寫入的數(shù)據(jù)寫入第一主數(shù)據(jù)庫失敗時,第一服務(wù)器可通過TCP長連接向代理服務(wù)器 返回寫入失敗信號。
[0130] 第二查找單元300,用于當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫 入數(shù)據(jù)成功信號時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操 作請求匹配的第一備數(shù)據(jù)庫信息。
[0131] 在本發(fā)明實施例中,備集群列表可包括至少一個備數(shù)據(jù)庫信息,備數(shù)據(jù)庫信息可 包括備數(shù)據(jù)庫的編號、命名以及備數(shù)據(jù)庫的IP地址等信息,其中,每個備數(shù)據(jù)庫的命名可 以是數(shù)據(jù)庫名稱+編號,例如:當(dāng)數(shù)據(jù)庫是Redis (remote dictonary server,遠程字典服 務(wù)器)數(shù)據(jù)庫時,備數(shù)據(jù)庫的命名可以是Redis+編號。可選的,備數(shù)據(jù)庫可包括Redis數(shù) 據(jù)庫,其中,Redis數(shù)據(jù)庫是基于key-value的內(nèi)存數(shù)據(jù)庫,支持主從復(fù)制,數(shù)據(jù)可以從主數(shù) 據(jù)庫向多個備數(shù)據(jù)庫進行同步??蛇x的,備數(shù)據(jù)庫也可以是mysql數(shù)據(jù)庫、 oracle數(shù)據(jù)庫 等,在此不對備數(shù)據(jù)庫類型其進行限制。
[0132] 進一步的,代理服務(wù)器可以連接多個服務(wù)器,服務(wù)器可以存儲至少一個備數(shù)據(jù)庫, 其中,服務(wù)器與代理服務(wù)器進行TCPCTransmission Control Protocol,傳輸控制協(xié)議)長 連接,代理服務(wù)器通過接收客戶端的指令并將指令路由到相應(yīng)的服務(wù)器上的備數(shù)據(jù)庫上, 從而控制對備數(shù)據(jù)庫的讀取或存儲。其中,備數(shù)據(jù)庫與主數(shù)據(jù)庫不存儲在同個服務(wù)器上。
[0133] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器接收到第一主數(shù)據(jù)庫所在的第一服務(wù)器返回的 寫入數(shù)據(jù)成功信號后,代理服務(wù)器可獲得第一服務(wù)器已對第一主數(shù)據(jù)庫成功寫入數(shù)據(jù)。當(dāng) 第一服務(wù)器已對第一主數(shù)據(jù)庫成功寫入數(shù)據(jù)時,代理服務(wù)器的第二查找單元300將在包括 至少一個備數(shù)據(jù)庫信息的備集群數(shù)據(jù)庫中查找與所述寫操作請求匹配的第一備數(shù)據(jù)庫信 息,以對第一備數(shù)據(jù)庫信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0134] 在本發(fā)明實施例中,代理服務(wù)器的第二查找單元300可采用一致性哈希算法對備 數(shù)據(jù)庫信息進行哈希計算,獲得與寫操作請求所攜帶的KEY1相匹配的第一備數(shù)據(jù)庫信息。 具體的:第二查找單元300采用一致性哈希算法可以是,首先,第二查找單元300對備集群 列表中每個備數(shù)據(jù)庫信息進行哈希計算,其中,可根據(jù)備數(shù)據(jù)庫信息所包括的IP地址,或 者編號進行哈希計算,并將其每個備數(shù)據(jù)庫信息所對應(yīng)的哈希值映射到0?2的32次方的 圓上。其次,第二查找單元 3〇〇根據(jù)寫操作請求所攜帶的KEY1,將ΚΕΠ映射到圓上。最后 從映射到的位置開始順時針查找,獲得的第一個哈希值所對應(yīng)的備數(shù)據(jù)庫信息則為寫操作 請求匹配的第一備數(shù)據(jù)庫信息,如果超過2的32次方仍然找不到哈希值,則圓環(huán)上第一個 哈希值為寫操作請求匹配的第一備數(shù)據(jù)庫的哈希值。采用一致性哈希算法管理數(shù)據(jù)庫,可 以使得數(shù)據(jù)庫有很好的可擴展性和可用性。
[0135] 第二發(fā)送單元400,用于根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所 述第一備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所 述第一備數(shù)據(jù)庫信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
[0136] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到寫操作請求匹配的第一備數(shù)據(jù)庫信息 后,代理服務(wù)器的第二發(fā)送單元400可根據(jù)第一備數(shù)據(jù)庫信息所包括的第一備數(shù)據(jù)庫的IP 地址,將寫操作請求通過TCP長連接,路由到第一備數(shù)據(jù)庫的IP地址所在的第二服務(wù)器上, 第二服務(wù)器響應(yīng)所述寫操作請求對第一備數(shù)據(jù)庫進行寫入數(shù)據(jù),將所需寫入的數(shù)據(jù)寫入第 一備數(shù)據(jù)庫。其中,當(dāng)服務(wù)器將所需寫入的數(shù)據(jù)成功寫入第一備數(shù)據(jù)庫時,第二服務(wù)器可通 過TCP長連接向代理服務(wù)器返回寫入數(shù)據(jù)成功信號,當(dāng)?shù)诙?wù)器將所需寫入的數(shù)據(jù)寫入 第一備數(shù)據(jù)庫失敗時,第二服務(wù)器可通過TCP長連接向代理服務(wù)器返回寫入失敗信號。故 我們可以理解的是,備數(shù)據(jù)庫在進行備份時,采用對備數(shù)據(jù)庫進行寫入數(shù)據(jù)的方式,而不是 利用現(xiàn)有的主從復(fù)制進行備份的方式,這可更有效提高備份數(shù)據(jù)庫的數(shù)據(jù)的安全性以及解 決當(dāng)主數(shù)據(jù)庫故障時,而使得備數(shù)據(jù)庫無法備份的問題。
[0137]在本發(fā)明實施例中,本發(fā)明通過當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述 寫操作請求在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求 匹配的第一備數(shù)據(jù)庫信息,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一 備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,并當(dāng)接收到所述第二服務(wù)器返回的對所述第一備數(shù)據(jù) 庫寫入數(shù)據(jù)成功信號時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述 寫操作請求匹配的第一備數(shù)據(jù)庫信息,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送 至所述第一備數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求 對所述第一備數(shù)據(jù)庫信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。這使得客戶端可分別對主 數(shù)據(jù)庫和備數(shù)據(jù)庫進行寫操作,使得主數(shù)據(jù)庫和備數(shù)據(jù)庫之間相互獨立,有效提高備份數(shù) 據(jù)庫的數(shù)據(jù)的安全性,并且備數(shù)據(jù)庫不是直接對主數(shù)據(jù)庫進行復(fù)制,降低對主數(shù)據(jù)庫所在 服務(wù)器的運行負擔(dān)。
[0138] 請參見圖6所示的一種代理服務(wù)器結(jié)構(gòu)圖,如圖6所示,本實施例的一種代理服務(wù) 器包括:
[0139] 預(yù)置單元500,用于預(yù)置所述主集群列表和所述備集群列表。
[0140] 在本發(fā)明實施例中,用戶可首先在與代理服務(wù)TCP長連接的服務(wù)器中進行預(yù)置主 集群數(shù)據(jù)庫和備集群數(shù)據(jù)庫。其中,用戶可首先根據(jù)客戶端所需數(shù)據(jù)量的大小,提前估算出 需要的數(shù)據(jù)庫的個數(shù)。例如:與代理服務(wù)器連接的服務(wù)器共有N臺,在每臺服務(wù)器上布置Μ 個主數(shù)據(jù)庫和Μ個備數(shù)據(jù)庫,則總共需布置的數(shù)據(jù)庫Τ有Ν*Μ*2個。當(dāng)用戶在服務(wù)器中預(yù) 置好主集群數(shù)據(jù)庫和備數(shù)據(jù)庫,預(yù)置單元500獲取主集群數(shù)據(jù)庫的信息和備集群數(shù)據(jù)庫的 信息,并將主集群數(shù)據(jù)庫的信息預(yù)置在主集群列表中,備集群數(shù)據(jù)庫的信息預(yù)置在備集群 列表中。其中,主集群數(shù)據(jù)庫的信息可包括主集群數(shù)據(jù)庫的命名、編號以及IP地址,備集群 數(shù)據(jù)庫的信息可包括備集群數(shù)據(jù)庫的命名、編號以及IP地址。
[0141] 第三查找單元600,用于當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請 求在所述主集群列表中查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息。
[0142] 在本發(fā)明實施例中,讀操作請求可以攜帶系統(tǒng)分配的鍵值KEY2,代理服務(wù)器的第 三查找單元600可采用一致性哈希算法對主集群列表所包括的主數(shù)據(jù)庫信息進行哈希計 算,獲得與KEY2相匹配的第二主數(shù)據(jù)庫信息。具體的:第三查找單元600采用一致性哈希 算法可以是,首先,第三查找單元600對主集群列表中每個主數(shù)據(jù)庫信息進行哈希計算,其 中,可根據(jù)主數(shù)據(jù)庫信息所包括的IP地址,或者編號進行哈希計算,并將其每個主數(shù)據(jù)庫 信息所對應(yīng)的哈希值映射到0?2的32次方的圓上。其次,第三查找單元600根據(jù)讀操 作請求所攜帶的KEY2,將KEY2映射到圓上。最后從映射到的位置開始順時針查找,獲得的 第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息則為讀操作請求匹配的第二主數(shù)據(jù)庫信息,如果超過 2的32次方仍然找不到哈希值,則圓環(huán)上第一個哈希值所對應(yīng)的主數(shù)據(jù)庫信息為讀操作請 求匹配的第二主數(shù)據(jù)庫信息。
[0143] 第三發(fā)送單元700,用于根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所 述第二主數(shù)據(jù)庫信息所對應(yīng)的第三服務(wù)器,以使所述第三服務(wù)器根據(jù)所述讀操作請求對所 述第二主數(shù)據(jù)庫信息所對應(yīng)的第二主數(shù)據(jù)庫進行讀取數(shù)據(jù)。
[0144] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到讀操作請求匹配的第二主數(shù)據(jù)庫信息 后,代理服務(wù)器的第三發(fā)送單元700可根據(jù)第二主數(shù)據(jù)庫信息所包括的第二主數(shù)據(jù)庫的IP 地址,將讀操作請求通過TCP長連接,路由到第二主數(shù)據(jù)庫的IP地址所在的第三服務(wù)器上, 第三服務(wù)器響應(yīng)所述讀操作請求對第二主數(shù)據(jù)庫進行讀取數(shù)據(jù),獲取所讀取的數(shù)據(jù),并返 回給代理服務(wù)器。
[0145] 第一接收單元800,用于接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)。
[0146] 判斷單元900,用于根據(jù)所述所讀取的數(shù)據(jù)判斷所述第三服務(wù)器對所述第二主數(shù) 據(jù)庫讀取數(shù)據(jù)是否成功。
[0147] 在本發(fā)明實施例中,代理服務(wù)器的判斷單元900可以根據(jù)服務(wù)器返回的所讀取的 數(shù)據(jù)判斷第三服務(wù)器對第二主數(shù)據(jù)庫進行讀取數(shù)據(jù)是否讀取成功。其中,判斷單元900可 通過判斷所讀取的數(shù)據(jù)的內(nèi)容來判斷服務(wù)器對第二主數(shù)據(jù)庫是否讀取成功。例如:當(dāng)所需 讀取的數(shù)據(jù)為空、亂碼和無意義的字符等,可判斷服務(wù)器對第二主數(shù)據(jù)庫讀取失敗。當(dāng)判 斷單元900判斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,通知第四查找單元 901在所述備集群列表中查找與所述讀操作指令匹配的第二備數(shù)據(jù)庫信息。
[0148]第四查找單元901,用于當(dāng)所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時, 在所述備集群列表中查找與所述讀操作指令匹配的第二備數(shù)據(jù)庫信息。
[0149] 在本發(fā)明實施例中,代理服務(wù)器的第四查找單元901可采用一致性哈希算法對備 集群列表中的各個備數(shù)據(jù)庫信息進行哈希計算,獲得與KEY2相匹配的第二備數(shù)據(jù)庫信息。 具體的:第四查找單元9〇1采用一致性哈希算法可以是,首先,對備集群列表中每個備數(shù)據(jù) 庫信息進行哈希計算,其中,第四查找單元901可根據(jù)備數(shù)據(jù)庫信息所包括的IP地址,或者 編號進行哈希計算,并將其每個備數(shù)據(jù)庫信息所對應(yīng)的哈希值映射到0?2的32次方的圓 上。其次,第四查找單元901根據(jù)讀操作請求所攜帶的KEY2,將KEY2映射到圓上。最后從 映射到的位置開始順時針查找,獲得的第一個哈希值所對應(yīng)的備數(shù)據(jù)庫信息則為讀操作請 求匹配的第二備數(shù)據(jù)庫信息,如果超過2的32次方仍然找不到哈希值,則圓環(huán)上第一個哈 希值所對應(yīng)的主數(shù)據(jù)庫信息為讀操作請求匹配的第二備數(shù)據(jù)庫信息。
[0150] 第四發(fā)送單元902,用于根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所 述第二備數(shù)據(jù)庫信息所對應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所 述第二備數(shù)據(jù)庫信息所對應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù)。
[0151] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器查找到讀操作請求匹配的第二備數(shù)據(jù)庫信息 后,代理服務(wù)器的第四發(fā)送單元902可根據(jù)第二備數(shù)據(jù)庫信息所包括的第二備數(shù)據(jù)庫的IP 地址,將讀操作請求通過TCP長連接,路由到第二備數(shù)據(jù)庫的IP地址所在的第四服務(wù)器上, 第四服務(wù)器響應(yīng)所述讀操作請求對第二主數(shù)據(jù)庫進行讀取數(shù)據(jù),獲取所讀取的數(shù)據(jù),并返 回給代理服務(wù)器。
[0152] 第二接收單元903,用于接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。
[0153] 在本發(fā)明實施例中,當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求 在所述主集群列表中查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息,
[0154] 根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述第二主數(shù)據(jù)庫信息所 對應(yīng)的第三服務(wù)器,接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù),根據(jù)所述所讀取的數(shù)據(jù)判 斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)是否成功,當(dāng)所述第三服務(wù)器對所述第二 主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在所述備集群列表中查找與所述讀操作指令匹配的第二備數(shù)據(jù) 庫信息,根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第二備數(shù)據(jù)庫信息所對 應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第二備數(shù)據(jù)庫信息所對 應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù),接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。這使得當(dāng)主 數(shù)據(jù)庫發(fā)生故障時,客戶端無障礙地可通過訪問備數(shù)據(jù)庫來獲取數(shù)據(jù),提高了訪問數(shù)據(jù)的 安全性,以及主集群和備集群的可用性。
[0155] 請參見圖7所示的一種代理服務(wù)器結(jié)構(gòu)圖,如圖7所示,本實施例的一種代理服務(wù) 器包括:
[0156] 第一獲取單元801,用于當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表中獲取任 意一個第三主數(shù)據(jù)庫信息。
[0157] 在本發(fā)明實施例中,當(dāng)與代理服務(wù)器連接的服務(wù)器出現(xiàn)內(nèi)存瓶頸時,用戶可通過 新增服務(wù)器來對內(nèi)存進行擴容,解決內(nèi)存緊張的問題。其中,用戶可先在新增的服務(wù)器上存 儲新的數(shù)據(jù)庫,進而再將服務(wù)器與代理服務(wù)器進行TCP連接。
[0158] 進一步的,當(dāng)存儲有新的數(shù)據(jù)庫的服務(wù)器與代理服務(wù)器建立連接后,代理服務(wù)器 的第一獲取單元801可檢測到有新增的第一數(shù)據(jù)庫。當(dāng)代理服務(wù)器的第一獲取單元801檢 測到有新增的第一數(shù)據(jù)庫后,第一獲取單元801可獲取新增的第一數(shù)據(jù)庫信息,其中,新增 的第一數(shù)據(jù)庫信息包括新增的第一數(shù)據(jù)庫的IP地址。代理服務(wù)器可在主集群列表中獲取 任意一個第三主數(shù)據(jù)庫信息。
[0159] 第一復(fù)制單元802,用于獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所存 儲的數(shù)據(jù),將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上。
[0160] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器獲取到第三主數(shù)據(jù)庫信息后,代理服務(wù)器的第 一復(fù)制單元802可根據(jù)第三主數(shù)據(jù)庫信息向第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送獲取 第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)請求,并接受第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器響應(yīng)所述請求 返回的第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)。
[0161]當(dāng)代理服務(wù)器的第一復(fù)制單元802接收到第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)后,可根據(jù) 新增的第一數(shù)據(jù)庫信息將第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)發(fā)送至新增的第一數(shù)據(jù)庫信息所對 應(yīng)的服務(wù)器,以使服務(wù)器將第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至第一數(shù)據(jù)庫上,同時,第一復(fù) 制單元802更新主集群列表,將所述第一數(shù)據(jù)庫信息存儲進主集群列表。
[0162] 在具體應(yīng)用中,可例如:執(zhí)行命令[slave of host port],host為第三主數(shù)據(jù)庫的 IP地址,port為第一數(shù)據(jù)庫的監(jiān)聽端口,通過這個命令可以將第一數(shù)據(jù)庫指定為第三主數(shù) 據(jù)庫的副本,當(dāng)命令開始執(zhí)行時,代理服務(wù)器控制第一數(shù)據(jù)庫復(fù)制第三主數(shù)據(jù)庫數(shù)據(jù)。當(dāng)復(fù) 制完成后,代理服務(wù)器將第一數(shù)據(jù)庫信息設(shè)置為主數(shù)據(jù)庫信息,從而更新進主集群列表中。
[0163] 第一刪除單元803,用于向所述第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除 指令,以刪除所述第三主數(shù)據(jù)庫。
[0164] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述 第一數(shù)據(jù)庫上后,代理服務(wù)器的第一刪除單元803可向第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器 發(fā)送第一刪除指令,以使第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器刪除第三主數(shù)據(jù)庫信息所對應(yīng) 的第三主數(shù)據(jù)庫,從而釋放第三主數(shù)據(jù)庫所占用的空間,降低第三主數(shù)據(jù)庫信息所在的服 務(wù)器的內(nèi)存壓力,提高服務(wù)器的讀取數(shù)據(jù)的效率。
[0165] 進一步的,在本發(fā)明實施例中,當(dāng)新增有多個數(shù)據(jù)庫時,當(dāng)刪除第三主數(shù)據(jù)庫后, 可通知第一獲取單元801在所述主集群列表中獲取任意一個第三主數(shù)據(jù)庫信息,直至服務(wù) 器中的主數(shù)據(jù)庫可對客戶端提供服務(wù)。
[0166] 在本發(fā)明實施例中,本發(fā)明通過當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表 中獲取任意一個第三主數(shù)據(jù)庫信息,獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所 存儲的數(shù)據(jù),將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上,向所述第三主 數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令,以刪除所述第三主數(shù)據(jù)庫,從而對主數(shù)據(jù) 庫進行擴容,降低了服務(wù)器的內(nèi)存負擔(dān),提高服務(wù)器的讀取數(shù)據(jù)的效率。
[0167] 請參見圖8所示的一種代理服務(wù)器結(jié)構(gòu)圖,如圖8所示,本實施例的一種代理服務(wù) 器包括:
[0168] 第二獲取單元701,用于當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列表中任意 獲取第三備數(shù)據(jù)庫信息。
[0169] 當(dāng)主集群數(shù)據(jù)庫可對客戶端提供服務(wù),并且仍有剩余的新增數(shù)據(jù)庫時,或者是檢 測到用戶指定的新增的第二數(shù)據(jù)庫時,代理服務(wù)器的第二獲取單元701可獲取新增的第二 數(shù)據(jù)庫信息,其中,新增的第二數(shù)據(jù)庫信息包括新增的第而數(shù)據(jù)庫的IP地址。代理服務(wù)器 可在備集群列表中獲取任意一個第三備數(shù)據(jù)庫信息。
[0170]第二復(fù)制單元7〇2,用于獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存 儲的數(shù)據(jù),將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上。
[0171]在本發(fā)明實施例中,當(dāng)代理服務(wù)器獲取到第三備數(shù)據(jù)庫信息后,代理服務(wù)器的第 二復(fù)制單元702可根據(jù)第三備數(shù)據(jù)庫信息向第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送獲取 第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)請求,并接受第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器響應(yīng)所述請求 返回的第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)。
[0172]當(dāng)代理服務(wù)器的第二復(fù)制單元702接收到第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)后,第二復(fù) 制單元702可根據(jù)新增的第二數(shù)據(jù)庫信息將第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)發(fā)送至新增的第 二數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器,以使服務(wù)器將第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至第二數(shù)據(jù) 庫上,同時,第二復(fù)制單元702更新備集群列表,將所述第二數(shù)據(jù)庫信息存儲進備集群列 表。
[0173] 在具體應(yīng)用中,可例如:執(zhí)行命令[slave of host port],host為第三備數(shù)據(jù)庫的 IP地址,port為第二數(shù)據(jù)庫的監(jiān)聽端口,通過這個命令可以將第二數(shù)據(jù)庫指定為第三備數(shù) 據(jù)庫的副本,當(dāng)命令開始執(zhí)行時,代理服務(wù)器控制第二數(shù)據(jù)庫復(fù)制第三備數(shù)據(jù)庫數(shù)據(jù)。當(dāng)復(fù) 制完成后,代理服務(wù)器將第二數(shù)據(jù)庫信息設(shè)置為備數(shù)據(jù)庫信息,從而更新進備集群列表中。
[0174] 第二刪除單元703,用于向所述第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪 除指令,以刪除所述第三備數(shù)據(jù)庫。
[0175] 在本發(fā)明實施例中,當(dāng)代理服務(wù)器將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述 第二數(shù)據(jù)庫上后,代理服務(wù)器的第二刪除單元703可向第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器 發(fā)送第二刪除指令,以使第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器刪除第三備數(shù)據(jù)庫信息所對應(yīng) 的第三備數(shù)據(jù)庫,從而釋放第三備數(shù)據(jù)庫所占用的空間,降低第三備數(shù)據(jù)庫信息所在的服 務(wù)器的內(nèi)存壓力,提高服務(wù)器的讀取數(shù)據(jù)的效率。
[0176] 進一步的,在本發(fā)明實施例中,當(dāng)新增有多個數(shù)據(jù)庫時,當(dāng)?shù)诙h除單元703刪除 第三備數(shù)據(jù)庫后,可通知第二獲取單元 7〇1在所述備集群列表中任意獲取第三備數(shù)據(jù)庫信 息。
[0177] 在本發(fā)明實施例中,本發(fā)明通過當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列 表中任意獲取第三備數(shù)據(jù)庫信息,獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存 儲的數(shù)據(jù),將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上,向所述第三備數(shù) 據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指令,以刪除所述第三備數(shù)據(jù)庫,從而對備數(shù)據(jù) 庫進行擴容,降低了服務(wù)器的內(nèi)存負擔(dān),提高服務(wù)器的讀取數(shù)據(jù)的效率。
[0178] 請參見圖9所示的一種數(shù)據(jù)庫的數(shù)據(jù)處理系統(tǒng)結(jié)構(gòu)圖,如圖9所示,本實施例的一 種數(shù)據(jù)庫的數(shù)據(jù)處理系統(tǒng)包括:
[0179] 客戶端10、至少一個服務(wù)器2〇和代理服務(wù)器30。
[0180] 其中,客戶端10與服務(wù)器20分別與代理服務(wù)器30連接。服務(wù)器20可存儲至少 主數(shù)據(jù)庫和/至少一個備數(shù)據(jù)庫。
[0181] 優(yōu)選的,客戶端10向代理服務(wù)器30發(fā)送讀寫指令,代理服務(wù)器30根據(jù)讀寫指令 將讀寫指令路由到相應(yīng)的服務(wù)器進行響應(yīng)。其中,代理服務(wù)器30的具體實現(xiàn)方式可參見以 上實施例所述的代理服務(wù)器,在此不再進行贅述。
[0182] 通過上述實施例的描述,本發(fā)明具有以下優(yōu)點:
[0183]本發(fā)明通過當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的 包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫 信息,根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主數(shù)據(jù)庫信息所對應(yīng) 的第一服務(wù)器,當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成功信號 時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹配的第 一備數(shù)據(jù)庫信息,根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備數(shù)據(jù)庫 信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第一備數(shù)據(jù)庫 信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù),這使得客戶端可分別對主數(shù)據(jù)庫和備數(shù)據(jù)庫進 行寫操作,使得主數(shù)據(jù)庫和備數(shù)據(jù)庫之間相互獨立,有效提高備份數(shù)據(jù)庫的數(shù)據(jù)的安全性, 并且備數(shù)據(jù)庫不是直接對主數(shù)據(jù)庫進行復(fù)制,降低對主數(shù)據(jù)庫所在服務(wù)器的運行負擔(dān)。 [0184] 本領(lǐng)域普通技術(shù)人員可以理解實現(xiàn)上述實施例方法中的全部或部分流程,是可以 通過計算機程序來指令相關(guān)的硬件來完成,所述的程序可存儲于一計算機可讀取存儲介質(zhì) 中,該程序在執(zhí)行時,可包括如上述各方法的實施例的流程。其中,所述的存儲介質(zhì)可為磁 碟、光盤、只讀存儲記憶體(Read-Only Memory,ROM)或隨機存儲記憶體(Random Access Memory,RAM)等。
[0185] 以上所揭露的僅為本發(fā)明較佳實施例而己,當(dāng)然不能以此來限定本發(fā)明之權(quán)利范 圍,因此依本發(fā)明權(quán)利要求所作的等同變化,仍屬本發(fā)明所涵蓋的范圍。
【權(quán)利要求】
1. 一種數(shù)據(jù)庫的數(shù)據(jù)處理方法,其特征在于,所述方法包括: 當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù)置的包括至少一個主 數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第一主數(shù)據(jù)庫信息; 根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主數(shù)據(jù)庫信息所對應(yīng) 的第一服務(wù)器,以使所述第一服務(wù)器根據(jù)所述寫操作請求對所述第一主數(shù)據(jù)庫信息所對應(yīng) 的第一主數(shù)據(jù)庫進行寫入數(shù)據(jù); 當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成功信號時,在預(yù)置的 包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹配的第一備數(shù)據(jù)庫 ^[苜息; 根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備數(shù)據(jù)庫信息所對應(yīng) 的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第一備數(shù)據(jù)庫信息所對應(yīng) 的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
2. 如權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求在所述主集群列表中查找 與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息; 根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述第二主數(shù)據(jù)庫信息所對應(yīng) 的第三服務(wù)器,以使所述第三服務(wù)器根據(jù)所述讀操作請求對所述第二主數(shù)據(jù)庫信息所對應(yīng) 的第二主數(shù)據(jù)庫進行讀取數(shù)據(jù); 接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)。
3. 如權(quán)利要求2所述的方法,其特征在于,所述接收所述第三服務(wù)器返回的所讀取的 數(shù)據(jù)之后包括: 根據(jù)所述所讀取的數(shù)據(jù)判斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)是否成 功; 當(dāng)所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在所述備集群列表中查找與 所述讀操作指令匹配的第二備數(shù)據(jù)庫信息; 根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第二備數(shù)據(jù)庫信息所對應(yīng) 的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第二備數(shù)據(jù)庫信息所對應(yīng) 的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù); 接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。
4. 如權(quán)利要求3所述的方法,其特征在于,在當(dāng)接收到客戶端發(fā)送的寫操作請求時,根 據(jù)所述寫操作請求在預(yù)置的包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操 作請求匹配的第一主數(shù)據(jù)庫信息之前包括: 預(yù)置所述主集群列表和所述備集群列表。
5. 如權(quán)利要求4所述的方法,其特征在于,所述方法還包括: 當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表中獲取任思一個弟二主數(shù)據(jù)庫fe息; 獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所存儲的數(shù)據(jù),將所述第三主數(shù)據(jù) 庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上; 向所述第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令,以刪除所述第三主數(shù)據(jù) 庫。
6. 如權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列表中任意獲取第三備數(shù)據(jù)庫信息; 獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存儲的數(shù)據(jù),將所述第三備數(shù)據(jù) 庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上; 向所述第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指令,以刪除所述第三備數(shù) 據(jù)庫。
7. -種代理服務(wù)器,其特征在于,所述服務(wù)器包括: 第一查找單元,用于當(dāng)接收到客戶端發(fā)送的寫操作請求時,根據(jù)所述寫操作請求在預(yù) 置的包括至少一個主數(shù)據(jù)庫信息的主集群列表中查找與所述寫操作請求匹配的第-主數(shù) 據(jù)庫信息; 第一發(fā)送單元,用于根據(jù)所述第一主數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一主 數(shù)據(jù)庫信息所對應(yīng)的第一服務(wù)器,以使所述第一服務(wù)器根據(jù)所述寫操作請求對所述第一主 數(shù)據(jù)庫信息所對應(yīng)的第一主數(shù)據(jù)庫進行寫入數(shù)據(jù); 第二查找單元,用于當(dāng)接收到所述第一服務(wù)器返回的對所述第一主數(shù)據(jù)庫寫入數(shù)據(jù)成 功信號時,在預(yù)置的包括至少一個備數(shù)據(jù)庫信息的備集群列表中查找與所述寫操作請求匹 配的第一備數(shù)據(jù)庫信息; 第二發(fā)送單元,用于根據(jù)所述第一備數(shù)據(jù)庫信息將所述寫操作請求發(fā)送至所述第一備 數(shù)據(jù)庫信息所對應(yīng)的第二服務(wù)器,以使所述第二服務(wù)器根據(jù)所述寫操作請求對所述第一備 數(shù)據(jù)庫信息所對應(yīng)的第一備數(shù)據(jù)庫進行寫入數(shù)據(jù)。
8. 如權(quán)利要求7所述服務(wù)器,其特征在于,所述服務(wù)器還包括: 第三查找單元,用于當(dāng)接收到客戶端發(fā)送的讀操作請求時,根據(jù)所述讀操作請求在所 述主集群列表中查找與所述讀操作指令匹配的第二主數(shù)據(jù)庫信息; 第三發(fā)送單元,用于根據(jù)所述第二主數(shù)據(jù)庫信息將所述讀操作請求發(fā)送至所述第二主 數(shù)據(jù)庫信息所對應(yīng)的第三服務(wù)器,以使所述第三服務(wù)器根據(jù)所述讀操作請求對所述第二主 數(shù)據(jù)庫信息所對應(yīng)的第二主數(shù)據(jù)庫進行讀取數(shù)據(jù); 第一接收單元,用于接收所述第三服務(wù)器返回的所讀取的數(shù)據(jù)。
9. 如權(quán)利要求8所述的服務(wù)器,其特征在于,所述服務(wù)器包括: 判斷單元,用于根據(jù)所述所讀取的數(shù)據(jù)判斷所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取 數(shù)據(jù)是否成功; 第四查找單元,用于當(dāng)所述第三服務(wù)器對所述第二主數(shù)據(jù)庫讀取數(shù)據(jù)失敗時,在所述 備集群列表中查找與所述讀操作指令匹配的第二備數(shù)據(jù)庫信息; _ 第四發(fā)送單元,用于根據(jù)所述第二備數(shù)據(jù)庫信息將所述讀操作指令發(fā)送至所述第^備 數(shù)據(jù)庫信息所對應(yīng)的第四服務(wù)器,以使所述第四服務(wù)器根據(jù)所述讀操作請求對所述第二備 數(shù)據(jù)庫信息所對應(yīng)的第二備數(shù)據(jù)庫進行讀取數(shù)據(jù); 第二接收單元,用于接收所述第四服務(wù)器返回的所讀取的數(shù)據(jù)。
10. 如權(quán)利要求9所述的服務(wù)器,其特征在于,所述服務(wù)器包括: 預(yù)置單元,用于預(yù)置所述主集群列表和所述備集群列表。
11. 如權(quán)利要求4所述的服務(wù)器,其特征在于,所述服務(wù)器還包括: 第一獲取單元,用于當(dāng)檢測到新增第一數(shù)據(jù)庫時,在所述主集群列表中獲取任意一個 第三主數(shù)據(jù)庫信息; 第一復(fù)制單元,用于獲取所述第三主數(shù)據(jù)庫信息所對應(yīng)的第三主數(shù)據(jù)庫所存儲的數(shù) 據(jù),將所述第三主數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第一數(shù)據(jù)庫上; 第一刪除單元,用于向所述第三主數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第一刪除指令,以 刪除所述第三主數(shù)據(jù)庫。
12. 如權(quán)利要求11所述的服務(wù)器,其特征在于,所述服務(wù)器還包括: 第二獲取單元,用于當(dāng)檢測到新增的第二數(shù)據(jù)庫時,在所述備集群列表中任意獲取第 三備數(shù)據(jù)庫信息; 第二復(fù)制單元,用于獲取所述第三備數(shù)據(jù)庫信息所對應(yīng)的第三備數(shù)據(jù)庫所存儲的數(shù) 據(jù),將所述第三備數(shù)據(jù)庫所存儲的數(shù)據(jù)復(fù)制至所述第二數(shù)據(jù)庫上; 第二刪除單元,用于向所述第三備數(shù)據(jù)庫信息所對應(yīng)的服務(wù)器發(fā)送第第二刪除指令, 以刪除所述第三備數(shù)據(jù)庫。
13. -種數(shù)據(jù)庫的數(shù)據(jù)處理系統(tǒng),所述系統(tǒng)包括客戶端、至少一個服務(wù)器以及如權(quán)利要 求7?12所述的代理服務(wù)器。
【文檔編號】H04L12/24GK104219085SQ201410387992
【公開日】2014年12月17日 申請日期:2014年8月7日 優(yōu)先權(quán)日:2014年8月7日
【發(fā)明者】孫月龍, 宋創(chuàng)業(yè), 楊大偉 申請人:深圳市同洲電子股份有限公司