欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

數(shù)據(jù)存儲方法、數(shù)據(jù)庫存儲節(jié)點故障處理方法及裝置與流程

文檔序號:12927067閱讀:671來源:國知局
數(shù)據(jù)存儲方法、數(shù)據(jù)庫存儲節(jié)點故障處理方法及裝置與流程
本發(fā)明涉及互聯(lián)網(wǎng)領域,具體涉及到一種數(shù)據(jù)存儲方法,數(shù)據(jù)庫存儲節(jié)點故障處理方法及裝置。

背景技術:
分布式非關系型數(shù)據(jù)庫(NotonlyStructuredQueryLanguage,NOSQL)物理上一般由大規(guī)模的集群組成。大多數(shù)物理存儲節(jié)點不僅部署分布式文件系統(tǒng)(Distributedfilesystem,DFS)的數(shù)據(jù)節(jié)點(DataNode)進程,還部署NOSQL數(shù)據(jù)庫的從(slave)進程,同時存儲節(jié)點集群需要部署獨立的調(diào)度節(jié)點(Namenode)。NOSQL和DFS的信息分布各自按照各自策略進行獨立分配,圖1是一個分布式非關系型數(shù)據(jù)庫的部署圖,其中粗的實線方框代表一個存儲節(jié)點,粗橫線上方表示該存儲節(jié)點部署NOSQL數(shù)據(jù)庫的從節(jié)點進程。粗橫線下方表示該存儲節(jié)點部署的數(shù)據(jù)節(jié)點(DataNode)進程。其中每一個從節(jié)點進程同時也是一個DFS文件系統(tǒng)的客戶,調(diào)用DFS文件系統(tǒng)中存儲的數(shù)據(jù)文件。其中,分區(qū)region-1為NOSQL數(shù)據(jù)庫中一個表的一個分區(qū),其部署在存儲節(jié)點S1上。在region-1創(chuàng)建后,完成數(shù)據(jù)寫入操作,形成數(shù)據(jù)文件,該數(shù)據(jù)文件在DFS上的被劃為4個數(shù)據(jù)塊(Block),分別是R1-b1、R1-b2、R1-b3、R1-b4。每一個Block的數(shù)據(jù)塊副本分布如圖1所示。所有涉及到region-1的數(shù)據(jù)查詢操作全部由存儲節(jié)點S1的從節(jié)點進程來完成,而在存儲節(jié)點S1上存儲了region-1的對應的數(shù)據(jù)文件的所有數(shù)據(jù)塊,為表述方面,下面簡稱為與region-1對應的所有數(shù)據(jù)塊,所以存儲節(jié)點S1只需要讀取本地硬盤數(shù)據(jù)即可完成數(shù)據(jù)查詢操作,不會涉及到通過網(wǎng)絡讀取其他存儲節(jié)點上數(shù)據(jù)塊副本來完成操作。但是,在NOSQL數(shù)據(jù)庫的從節(jié)點進程故障時,如圖1A所示,NOSQL數(shù)據(jù)庫的主控節(jié)點發(fā)現(xiàn)從節(jié)點進程異常之后,按照負載均衡原則將存儲節(jié)點S1負責的分區(qū)全部分配給存儲節(jié)點集群中的存儲節(jié)點S4。在存儲節(jié)點S1故障后,存儲節(jié)點S4將負責region-1的全部數(shù)據(jù)查詢操作。由于DFS并不會感覺到這樣的故障,所以與region-1對應的數(shù)據(jù)文件位置將不會發(fā)生任何變化。在這樣的數(shù)據(jù)分布下,涉及到region-1的R1-b1、R1-b3兩個數(shù)據(jù)塊中的數(shù)據(jù)讀取時,存儲節(jié)點S4將需要通過網(wǎng)絡去其他存儲R1-b1、R1-b3數(shù)據(jù)塊副本的存儲節(jié)點上讀取數(shù)據(jù)。如圖1B所示,在存儲節(jié)點S1上分布式DFS的數(shù)據(jù)節(jié)點(DataNode)進程故障時,DFS的調(diào)度節(jié)點發(fā)現(xiàn)數(shù)據(jù)節(jié)點進程故障后,按照預先配置的數(shù)據(jù)塊副本復制機制,將存儲節(jié)點S1原來存儲的數(shù)據(jù)塊副本通過其他非故障存儲節(jié)點上的數(shù)據(jù)塊副本恢復出來,并按照負載均衡策略放置在其他非故障存儲節(jié)點上。但是,由于存儲節(jié)點S1上NOSQL數(shù)據(jù)庫的從節(jié)點進程依舊正常,NOSQL數(shù)據(jù)庫的分區(qū)不會重新分布。如存儲節(jié)點S1依舊負責region-1全部數(shù)據(jù)查詢操作。而DFS的存儲節(jié)點S1上的數(shù)據(jù)節(jié)點進程故障,導致存儲節(jié)點S1無法提供文件讀取服務。在這樣的數(shù)據(jù)分布下,涉及到region-1的數(shù)據(jù)讀取時,存儲節(jié)點S1需要通過網(wǎng)絡去其他存儲該分區(qū)region-1對應的數(shù)據(jù)塊副本的存儲節(jié)點上讀取數(shù)據(jù)。如圖1C所示,存儲節(jié)點S1由于硬件或者是網(wǎng)絡等原因?qū)е抡麄€存儲節(jié)點故障。DFS的調(diào)度節(jié)點發(fā)現(xiàn)數(shù)據(jù)節(jié)點進程異常后,同時調(diào)度節(jié)點按照既定的數(shù)據(jù)塊副本復制機制,開始數(shù)據(jù)塊副本恢復,類似圖1B中的狀態(tài)。同時,NOSQL數(shù)據(jù)庫的主控節(jié)點也會發(fā)現(xiàn)該存儲節(jié)點的從節(jié)點進程故障,主控節(jié)點將根據(jù)系統(tǒng)的負載情況將存儲節(jié)點S1上的分區(qū)重新分布,與圖1A類似。數(shù)據(jù)庫再一次達到穩(wěn)定數(shù)據(jù)分布時,存儲節(jié)點S4負責region-1全部數(shù)據(jù)查詢操作。由于DFS的存儲S1節(jié)點故障后重新分布數(shù)據(jù)塊副本后,存儲節(jié)點S4上只有region-1的R1-b2、R1-b4副本。涉及到region-1的R1-b1、R1-b3中的數(shù)據(jù)讀取時,存儲節(jié)點S4需要通過網(wǎng)絡去其他存儲該R1-b1、R1-b3的數(shù)據(jù)塊副本的存儲節(jié)點上讀取數(shù)據(jù)。綜上所述,在現(xiàn)有技術的數(shù)據(jù)存儲方式下,發(fā)生以上幾種故障時,就會出現(xiàn)跨節(jié)點數(shù)據(jù)訪問甚至是跨機架的訪問數(shù)據(jù),這樣不僅增大了數(shù)據(jù)訪問時延,還會增加網(wǎng)絡流量。

技術實現(xiàn)要素:
本發(fā)明的目的是提供一種數(shù)據(jù)存儲方法,以解決現(xiàn)有技術在節(jié)點故障時,出現(xiàn)跨節(jié)點訪問,增加訪問數(shù)據(jù)時延的問題。第一方面,本發(fā)明實施例提供了一種數(shù)據(jù)存儲方法,所述方法包括:將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2?;诘谝环矫?,在第一種可能的實施方式中,在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前,還包括:為所述數(shù)據(jù)庫中所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名?;诘谝环矫婊虻谝环矫娴牡谝环N可能的實施方式中,還提供了第二種可能的實施方式,所述將所述N個數(shù)據(jù)塊中全部數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點,具體包括:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件中的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。第二方面,本發(fā)明實施例提供了一種數(shù)據(jù)庫存儲節(jié)點故障處理方法,所述方法包括:獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的備份數(shù)據(jù)塊的非故障第二存儲節(jié)點;其中,M為自然數(shù);將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點?;诘诙矫妫诘谝环N可能的實施方式中,當所述第一存儲節(jié)點故障為的從節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之前,還包括:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)。基于第二方面或第二方面的第一種可能的實施方式中,還提供了第二種可能的實施方式,當所述第一存儲節(jié)點上故障為數(shù)據(jù)節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之后還包括:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊的備份數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。第三方面,本發(fā)明實施例提供了一種數(shù)據(jù)存儲裝置,所述裝置包括:第一部署單元,用以將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;劃分單元,用以將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;第二部署單元,用以將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2?;诘谌矫?,在第一種可能的實施方式中,還包括處理單元,用以在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前:為所述數(shù)據(jù)庫中所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名?;诘谌矫妫诘诙N可能的實施方式中,所述將第二部署單元具體用于:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件中的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。第四方面,本發(fā)明實施例提供了一種數(shù)據(jù)庫存儲節(jié)點故障處理裝置,所述裝置包括:獲取單元,用以獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;確定單元,用以根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定部署有所述第一存儲節(jié)點的所述分區(qū)對應的多個數(shù)據(jù)塊的備份數(shù)據(jù)塊的非故障第二存儲節(jié)點;處理單元,用以將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點?;诘谒姆矫?,在第一種可能的實施方式中,所述第一存儲節(jié)點的從節(jié)點進程故障,所述處理單元還用以:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)?;诘谒姆矫婊虻谒姆矫娴牡谝环N可能的實施方式中,還提供了第二種可能的實施方式,所述第一存儲節(jié)點上的數(shù)據(jù)節(jié)點進程故障,所述處理單元還用以:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。第五方面,本發(fā)明實施例提供了一種數(shù)據(jù)存儲裝置,所述裝置包括:網(wǎng)絡接口;中央處理器;存儲器;物理存儲在所述存儲器中的應用程序,所述中央處理器執(zhí)行所述應用程序,使得所述數(shù)據(jù)存儲裝置執(zhí)行以下步驟::將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2?;诘谖宸矫?,在第一種可能的實施方式中,在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前,還包括:為所述數(shù)據(jù)庫中所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名?;诘谖宸矫?,在第二種可能的實施方式中,所述將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點具體包括:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件中的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。第六方面,本發(fā)明實施例提供了一種數(shù)據(jù)庫存儲節(jié)點故障處理裝置,所述裝置包括:網(wǎng)絡接口;中央處理器;存儲器;物理存儲在所述存儲器中的應用程序,所述中央處理器執(zhí)行所述應用程序,使得所述數(shù)據(jù)庫存儲節(jié)點故障處理裝置執(zhí)行以下步驟:獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的備份數(shù)據(jù)塊的非故障第二存儲節(jié)點;其中,M為自然數(shù);將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點。基于第六方面,在第一種可能的實施方式中,當所述第一存儲節(jié)點故障為的從節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之前,還包括:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)?;诘诹矫?,在第二種可能的實施方式中,當所述第一存儲節(jié)點上故障為數(shù)據(jù)節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之后還包括:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。第七方面,本發(fā)明實施例提供了一種非易失性計算機可讀存儲介質(zhì),當計算機執(zhí)行所述計算機可讀存儲介質(zhì)時,所述計算機執(zhí)行如下步驟:將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2。基于第七方面,在第一種可能的實施方式中,在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前,還包括:為所述數(shù)據(jù)庫中所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名?;诘谄叻矫?,在第二種可能的實施方式中,所述將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點具體包括:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。第八方面,本發(fā)明實施例提供了一種非易失性計算機可讀存儲介質(zhì),當計算機執(zhí)行所述計算機可讀存儲介質(zhì)時,所述計算機執(zhí)行如下步驟:獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的非故障第二存儲節(jié)點;其中,M為自然數(shù);將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點?;诘诎朔矫妫诘谝环N可能的實施方式中,當所述第一存儲節(jié)點故障為的從節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之前,還包括:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)。基于第八方面,在第二種可能的實施方式中,當所述第一存儲節(jié)點上故障為數(shù)據(jù)節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之后還包括:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。通過本發(fā)明實施例提供的數(shù)據(jù)存儲方法,將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點,之后將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;最后將所述多個數(shù)據(jù)塊中全部數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在相同的第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點。使得分布式非關系型數(shù)據(jù)庫中,數(shù)據(jù)節(jié)點故障的情況下,能夠盡量減少跨節(jié)點數(shù)據(jù)范圍,以減少時延、降低網(wǎng)絡流量。附圖說明為了更清楚地說明本發(fā)明實施例中的技術方案,下面將對實施例或現(xiàn)有技術描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領域普通技術人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1是現(xiàn)有技術的NOSQL數(shù)據(jù)分布示意圖;圖1A是現(xiàn)有技術NOSQL數(shù)據(jù)庫從節(jié)點進程故障處理示意圖;圖1B是現(xiàn)有技術NOSQL數(shù)據(jù)庫數(shù)據(jù)節(jié)點進程故障處理示意圖;圖1C是現(xiàn)有技術NOSQL數(shù)據(jù)庫存儲節(jié)點集群中的節(jié)點故障處理示意圖;圖2是本發(fā)明實施例提供的數(shù)據(jù)存儲方法的應用場景示意圖;圖3是本發(fā)明實施例提供的數(shù)據(jù)存儲方法一種實施方式的流程圖;圖4是本發(fā)明實施例提供的數(shù)據(jù)存儲方法的存儲狀態(tài)示意圖;圖5是本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點故障處理方法的流程圖;圖6是本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點故障處理方法一種故障處理示意圖;圖7是本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點故障處理方法一種故障處理示意圖;圖8是本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點故障處理方法一種故障處理示意圖;圖9是本發(fā)明實施例提供的數(shù)據(jù)存儲裝置一實施例的結構示意圖;圖10是本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點處理裝置一種實施例的結構示意圖;圖11是本發(fā)明實施例提供的數(shù)據(jù)存儲裝置一實施例的結構示意圖;圖12是本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點處理裝置一種實施例的結構示意圖。具體實施方式以下結合附圖,對本發(fā)明實施例做進一步詳細敘述。圖2是本發(fā)明實施例提供的數(shù)據(jù)存儲方法和數(shù)據(jù)庫存儲節(jié)點故障處理方法的應用場景示意圖,NOSQL數(shù)據(jù)庫只完成數(shù)據(jù)的邏輯管理,而實際上數(shù)據(jù)存儲在分布式文件系統(tǒng)DFS。DFS也是一個主從分布式架構,在NOSQL數(shù)據(jù)庫中的主控節(jié)點作為DFS內(nèi)部提供元數(shù)據(jù)服務的調(diào)度節(jié)點。NOSQL數(shù)據(jù)庫中的從節(jié)點,作為DFS提供文件存儲以及文件操作的數(shù)據(jù)節(jié)點,統(tǒng)一稱為存儲節(jié)點。也就是說,在本發(fā)明實施例提供的數(shù)據(jù)庫中同時部署了兩種系統(tǒng),一種是NOSQL數(shù)據(jù)庫,一種是DFS,在數(shù)據(jù)庫的各個存儲節(jié)點上,同時部署了DFS的數(shù)據(jù)節(jié)點(datanode)進程和NOSQL數(shù)據(jù)庫中的從節(jié)點(slave)進程,在NOSQL數(shù)據(jù)庫中控制從節(jié)點(slave)進程為主控(master)進程,在DFS中控制數(shù)據(jù)節(jié)點進程的進程為調(diào)度(namenode)進程,主控(master)進程和調(diào)度(namenode)進程共同布置的存儲節(jié)點為NOSQL數(shù)據(jù)庫的主控節(jié)點,也是DFS的調(diào)度節(jié)點。為方便系統(tǒng)內(nèi)部管理,存儲在DFS中的數(shù)據(jù)文件一般被分割為一定大小的數(shù)據(jù)塊(block)。為防止由于硬件故障導致丟失數(shù)據(jù),一個數(shù)據(jù)塊一般會被存儲在多個存儲節(jié)點。調(diào)度節(jié)點不僅負責管理文件系統(tǒng)名稱空間和控制外部客戶端的訪問,同時決定將數(shù)據(jù)塊映射到存儲節(jié)點集群中的哪個存儲節(jié)點上。對于最常見的3個數(shù)據(jù)塊副本備份機制來說,第一個數(shù)據(jù)塊一般選擇離發(fā)起寫請求的客戶端最近一個節(jié)點作為存儲節(jié)點,第二個數(shù)據(jù)塊所在的存儲節(jié)點與存儲第一個數(shù)據(jù)塊的存儲節(jié)點在同一機架上,第三個數(shù)據(jù)塊所在的存儲節(jié)點與第一數(shù)據(jù)塊和第二數(shù)據(jù)塊所在的存儲節(jié)點屬于不同的機架。在進行數(shù)據(jù)塊讀取時,實際的數(shù)據(jù)塊讀取并不經(jīng)過調(diào)度節(jié)點,只有表示存儲節(jié)點和數(shù)據(jù)塊之間映射關系的元數(shù)據(jù)經(jīng)過調(diào)度節(jié)點。存儲節(jié)點響應來自DFS客戶端的讀寫請求。存儲節(jié)點還響應來自調(diào)度節(jié)點的創(chuàng)建、刪除和復制數(shù)據(jù)塊的命令。如圖3所示,本發(fā)明實施例提供一種應用在上述場景中的數(shù)據(jù)存儲方法,所述方法包括:301,將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;具體而言,NOSQL數(shù)據(jù)庫在創(chuàng)建分區(qū)時,一般是給這個分區(qū)一個分區(qū)標識,該分區(qū)標識就是底層DFS創(chuàng)建數(shù)據(jù)文件的文件名。如圖4所示的應用實例中,分區(qū)region-1,部署在由存儲節(jié)點S1、存儲節(jié)點S2、存儲節(jié)點S3、存儲節(jié)點S4、存儲節(jié)點S5和存儲節(jié)點S6等組成的存儲節(jié)點集群中的一個存儲節(jié)點中,圖4所示的實施例中,將region-1對應的分區(qū)部署在存儲節(jié)點S1。概括而言,首先為數(shù)據(jù)庫中的所述分區(qū)分配分區(qū)標識;之在創(chuàng)建分區(qū)對應的數(shù)據(jù)文件的數(shù)據(jù)塊時,根據(jù)所述分區(qū)標識為所述分區(qū)的N個數(shù)據(jù)塊命名。302,將所述分區(qū)對應的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;具體而言,region-1為NOSQL數(shù)據(jù)庫中表的一個分區(qū),其部署在存儲節(jié)點S1上。region-1分區(qū)創(chuàng)建,完成數(shù)據(jù)寫入操作,形成數(shù)據(jù)文件,該數(shù)據(jù)文件在DFS上的被劃為4個數(shù)據(jù)塊,分別是R1-b1、R1-b2、R1-b3、R1-b4,這四個數(shù)據(jù)塊都被部署在存儲節(jié)點S1上。上述實施例中,N為自然數(shù),并且N不小于2,也就是說組成存儲節(jié)點集群的存儲節(jié)點數(shù)目,以及一個分區(qū)對應的數(shù)據(jù)文件被劃分成的數(shù)據(jù)塊個數(shù)都是根據(jù)實際需求設定的,不應理解為對本發(fā)明技術方案的限制。303,將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點。具體而言,為了滿足數(shù)據(jù)安全,通常需要為分區(qū)的數(shù)據(jù)文件對應的每個數(shù)據(jù)塊設置多份備份數(shù)據(jù)塊,也可以稱之為副本。例如圖4所示的為兩份副本,一份部署在存儲節(jié)點S3,一份部署在存儲節(jié)點S5,存儲節(jié)點S5和存儲節(jié)點S3都為第二存儲節(jié)點。分別將同一分區(qū)的數(shù)據(jù)文件對應的數(shù)據(jù)塊的一份副本放置在同一存儲節(jié)點,這樣一個存儲節(jié)點上從節(jié)點進程出現(xiàn)故障,只要將該從節(jié)點進程所負責的分區(qū)重新在備份該分區(qū)對應的數(shù)據(jù)塊的其他非故障的存儲節(jié)點上打開即可,這樣就避免了跨節(jié)點訪問數(shù)據(jù)。更具體的說,步驟303進一步包括:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)的數(shù)據(jù)文件中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。以圖4所示的架構為例,在對數(shù)據(jù)塊R1-b1副本部署時,發(fā)現(xiàn)數(shù)據(jù)塊R1-b1為Region-1對應的數(shù)據(jù)文件的第一個數(shù)據(jù)塊,則根據(jù)DFS默認部署策略對R1-b1的副本進行部署,對數(shù)據(jù)塊R1-b2進行副本部署時,獲取數(shù)據(jù)塊R1-b1的數(shù)據(jù)存儲節(jié)點分布信息,得知數(shù)據(jù)塊R1-b1的副本分布在數(shù)據(jù)存儲節(jié)點S3和數(shù)據(jù)存儲節(jié)點S5。之后,對數(shù)據(jù)塊R1-b2按照數(shù)據(jù)塊R1-b1的副本數(shù)據(jù)存儲節(jié)點分布情況,進行分布。同理,數(shù)據(jù)塊R1-b3和數(shù)據(jù)塊R1-b4的分布過程與數(shù)據(jù)塊R1-b2相同不多贅述。相應的,本發(fā)明實施例提供了一種數(shù)據(jù)庫存儲節(jié)點故障處理方法,可以應用在圖2所示的數(shù)據(jù)庫系統(tǒng)的幾種故障狀況下。如圖5所示,所述方法包括:501,獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;具體而言,在存儲節(jié)點集群中的一個存儲節(jié)點發(fā)生故障時,首先要獲取存儲節(jié)點集群中故障存儲節(jié)點的分區(qū)分布信息,例如在第一存儲節(jié)點上部署了哪些分區(qū),這些分區(qū)對應的數(shù)據(jù)塊的備份數(shù)據(jù)塊的分布信息,以獲知在非故障存儲節(jié)點上哪個存儲節(jié)點上部署了故障存儲節(jié)點上的分區(qū)對應的數(shù)據(jù)塊備份。502,根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的備份數(shù)據(jù)塊的非故障第二存儲節(jié)點,其中,M為自然數(shù)。503,將所述第一存儲節(jié)點的分區(qū)重新分布到所述第二存儲節(jié)點。具體而言,在所述存儲節(jié)點集群中的非故障存儲節(jié)點中確定了部署有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的備份數(shù)據(jù)塊的第二存儲節(jié)點之后,將第一存儲節(jié)點的所述分區(qū)重新分布到第二存儲節(jié)點上。這樣,同一分區(qū)的數(shù)據(jù)文件的數(shù)據(jù)塊的備份數(shù)據(jù)塊放置在同一存儲節(jié)點,這樣只要一個存儲節(jié)點出現(xiàn)故障,只要將該存儲節(jié)點上的所述分區(qū)分布到所述第二存儲節(jié)點,重新在第二存儲節(jié)點上打開即可。這樣就避免了跨節(jié)點訪問數(shù)據(jù)。如圖6所示,在一種可能的實施方式中,假設存儲節(jié)點S1上的NOSQL數(shù)據(jù)庫的從節(jié)點進程異常終止,NOSQL數(shù)據(jù)庫的主控節(jié)點很快就會發(fā)現(xiàn)該進程異常。主控節(jié)點根據(jù)非故障存儲節(jié)點的分區(qū)分布信息以及故障存儲節(jié)點分區(qū)對應的數(shù)據(jù)塊的備份數(shù)據(jù)塊分布情況,將故障存儲節(jié)點存儲的的L個分區(qū)分布到有對應數(shù)據(jù)塊的非故障存儲節(jié)點上,其中L為自然數(shù)。在故障存儲節(jié)點分區(qū)重新分布之前,如果非故障的第二存儲節(jié)點的分區(qū)未達到負載均衡閾值,則將所述第一存儲節(jié)點的分區(qū)重新分布在所述第二存儲節(jié)點,整個存儲節(jié)點集群的分區(qū)重分布完成;如果所述第二存儲節(jié)點的分區(qū)超過負載均衡閾值,說明所述第二存儲節(jié)點分區(qū)數(shù)過多,此時在所述第二存儲節(jié)點上隨機選取多個分區(qū),將這些分區(qū)進行重分布,使得所述第二存儲節(jié)點上分區(qū)達到負載均衡。也就是說,如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的多個分區(qū)重分布至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點。如圖7所示,在另一種可能的實施方式中,假設存儲節(jié)點S1上DFS的數(shù)據(jù)節(jié)點進程異常終止,DFS的調(diào)度節(jié)點發(fā)現(xiàn)該進程異常。調(diào)度節(jié)點按照數(shù)據(jù)塊副本復制機制將原來存儲節(jié)點S1負責的全部數(shù)據(jù)塊分配給存儲節(jié)點集群中其他存儲節(jié)點。只有數(shù)據(jù)節(jié)點進程故障而從節(jié)點進程依舊可以正常工作的情況,是否需要重分布從節(jié)點進程負責的分區(qū)到對應的存儲有該分區(qū)對應的數(shù)據(jù)塊的副本的非故障存儲節(jié)點上,根據(jù)配置進行操作。調(diào)度節(jié)點根據(jù)故障存儲節(jié)點S1上的數(shù)據(jù)塊歸屬情況,將屬于同一分區(qū)的對應的數(shù)據(jù)塊作為一個數(shù)據(jù)塊組進行標識。調(diào)度節(jié)點根據(jù)非故障存儲節(jié)點的數(shù)據(jù)塊分布信息,將故障存儲節(jié)點的同一分區(qū)的數(shù)據(jù)塊組重分布在非故障存儲節(jié)點S2上,也就是將第一存儲節(jié)點負責的同一分區(qū)的全部數(shù)據(jù)塊重分布在所述存儲節(jié)點集群中的非故障存儲節(jié)點。調(diào)度節(jié)點檢查配置,如果對數(shù)據(jù)讀取速率要求較低,則不需要將故障存儲節(jié)點的分區(qū)進行重分布,則重分布完成。如果根據(jù)讀取速率需求,用戶發(fā)現(xiàn)需要將故障存儲節(jié)點的分區(qū)進行重分布,則調(diào)度節(jié)點將故障存儲節(jié)點報告給主控節(jié)點,主控節(jié)點發(fā)現(xiàn)該存儲節(jié)點從節(jié)點進程未失效,則查找故障存儲節(jié)點上分區(qū)信息。主控節(jié)點根據(jù)非故障存儲節(jié)點的分區(qū)分布信息以及故障存儲節(jié)點上分區(qū)中數(shù)據(jù)塊分布情況,將故障存儲節(jié)點的同一分區(qū)的M個數(shù)據(jù)塊的備份數(shù)據(jù)塊重分布到非故障存儲節(jié)點上。如圖8所示,在另一種可能的實施方式中,假設存儲節(jié)點S1由于硬件或者是網(wǎng)絡等原因?qū)е鹿收?。DFS的調(diào)度節(jié)點很快就會發(fā)現(xiàn)該進程異常。同時,NOSQL數(shù)據(jù)庫的主控節(jié)點也會發(fā)現(xiàn)該存儲節(jié)點S1從節(jié)點進程異常。主控節(jié)點將根據(jù)系統(tǒng)的負載情況將存儲節(jié)點S1上的分區(qū)重新分布,該過程類似從節(jié)點進程故障的情況。同時調(diào)度節(jié)點按照既定的副本復制機制,開始副本恢復,該過程類似數(shù)據(jù)節(jié)點進程故障情況,不多贅述。如圖9所示,本發(fā)明實施例提供一種數(shù)據(jù)存儲裝置,所述裝置包括:第一部署單元901,用以將數(shù)據(jù)庫中一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;劃分單元902,用以將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;第二部署單元903,用以將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2。在一種可能的實施方式中,所述裝置還包括處理單元,用以在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前:為所述數(shù)據(jù)庫中的所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名。在一種可能的實施方式中,所述第二部署單元具體用于:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)的數(shù)據(jù)文件中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件中的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。通過本發(fā)明實施例提供的數(shù)據(jù)存儲裝置,可以將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點,之后將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;最后將所述多個數(shù)據(jù)塊中全部數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在相同的第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點。這樣可以使得使得分布式非關系型數(shù)據(jù)庫中,在數(shù)據(jù)節(jié)點故障的情況下,能夠盡量減少跨節(jié)點數(shù)據(jù)范圍,以減少時延、降低網(wǎng)絡流量。如圖10所示,本發(fā)明實施例還提供了一種數(shù)據(jù)庫存儲節(jié)點故障處理裝置,所述裝置包括:獲取單元1001,用以獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;確定單元1002,用以根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的分區(qū)對應的M個數(shù)據(jù)塊的非故障第二存儲節(jié)點;其中,M為自然數(shù);處理單元1003,用以將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點。當所述第一存儲節(jié)點故障為的從節(jié)點進程故障時,所述處理單元1003還用以在將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之前:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)。當所述第一存儲節(jié)點上故障為數(shù)據(jù)節(jié)點進程故障時,所述處理單元1003還用以在將所述第一存儲節(jié)點的所述分區(qū)重新分布在所述第二存儲節(jié)點之后:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。通過本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點故障處理裝置,能夠獲取存儲節(jié)點集群中故障的某一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;之后,根據(jù)所述該存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的數(shù)據(jù)塊的非故障第二存儲節(jié)點,之后將所述該存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點。這樣,在數(shù)據(jù)節(jié)點故障的情況下,處理存儲節(jié)點故障時,能夠盡量減少跨節(jié)點數(shù)據(jù)范圍,以減少時延、降低網(wǎng)絡流量。如圖11所示,本發(fā)明實施例還提供了一種數(shù)據(jù)存儲裝置,本實施例包括網(wǎng)絡接口11、處理器12和存儲器13。系統(tǒng)總線14用于連接網(wǎng)絡接口11、處理器12和存儲器13。網(wǎng)絡接口11用于與網(wǎng)絡和存儲節(jié)點集群中的其他存儲節(jié)點通信。存儲器13具有軟件模塊和設備驅(qū)動程序。軟件模塊能夠執(zhí)行本發(fā)明上述方法的各種功能模塊;設備驅(qū)動程序可以是網(wǎng)絡和接口驅(qū)動程序。在啟動時,這些軟件組件被加載到存儲器13中,然后被處理器12訪問并執(zhí)行如下指令:將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2。進一步地,在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前,還包括:為所述數(shù)據(jù)庫中所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名。更具體的,所述將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點具體包括:按照部署策略,在所述部署策略對應的第二存儲節(jié)點上對所述分區(qū)的數(shù)據(jù)文件中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件中的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的存儲節(jié)點。通過本發(fā)明實施例提供的數(shù)據(jù)存儲裝置,可以將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點,之后將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;最后將所述多個數(shù)據(jù)塊中全部數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在相同的第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點。這樣可以使得使得分布式非關系型數(shù)據(jù)庫中,在數(shù)據(jù)節(jié)點故障的情況下,能夠盡量減少跨節(jié)點數(shù)據(jù)范圍,以減少時延、降低網(wǎng)絡流量。如圖12所示,本發(fā)明實施例還提供了一種數(shù)據(jù)庫存儲節(jié)點故障處理裝置,所述裝置包括:網(wǎng)絡接口21、中央處理器22和存儲器23。系統(tǒng)總線24用于連接網(wǎng)絡接口21、中央處理器22和存儲器23。網(wǎng)絡接口21用于與網(wǎng)絡和存儲節(jié)點集群中的其他存儲節(jié)點通信。存儲器23中具有軟件模塊和設備驅(qū)動程序。軟件模塊能夠執(zhí)行本發(fā)明上述方法的各種功能模塊;設備驅(qū)動程序可以是網(wǎng)絡和接口驅(qū)動程序。在啟動時,這些軟件組件被加載到存儲器23中,然后被中央處理器22訪問并執(zhí)行如下指令:獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的非故障第二存儲節(jié)點;其中,M為自然數(shù);將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點。進一步地,當所述第一存儲節(jié)點故障為的從節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之前,還包括:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)。進一步地,當所述第一存儲節(jié)點上故障為數(shù)據(jù)節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之后還包括:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。通過本發(fā)明實施例提供的數(shù)據(jù)庫存儲節(jié)點故障處理裝置,能夠獲取存儲節(jié)點集群中故障的某一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;之后,根據(jù)所述該存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的數(shù)據(jù)塊的非故障第二存儲節(jié)點,之后將所述該存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點。這樣,在數(shù)據(jù)節(jié)點故障的情況下,處理存儲節(jié)點故障時,能夠盡量減少跨節(jié)點數(shù)據(jù)范圍,以減少時延、降低網(wǎng)絡流量。本發(fā)明實施例還提供了一種非易失性計算機可讀存儲介質(zhì),當計算機執(zhí)行所述計算機可讀存儲介質(zhì)時,所述計算機執(zhí)行如下步驟:將數(shù)據(jù)庫中的一個表的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點;將所述分區(qū)的數(shù)據(jù)文件劃分為N個數(shù)據(jù)塊,所述N個數(shù)據(jù)塊位于所述第一存儲節(jié)點;將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點;其中,N為自然數(shù),并且N不小于2。進一步的,在所述將數(shù)據(jù)庫中的一個表中的一個分區(qū)部署在數(shù)據(jù)庫中的第一存儲節(jié)點之前,還包括:為所述數(shù)據(jù)庫中所述分區(qū)分配分區(qū)標識;根據(jù)所述分區(qū)標識為所述分區(qū)的所述N個數(shù)據(jù)塊命名。進一步的,所述將所述N個數(shù)據(jù)塊的備份數(shù)據(jù)塊部署在第二存儲節(jié)點上,所述第二存儲節(jié)點與所述第一存儲節(jié)點為不同存儲節(jié)點具體包括:按照部署策略,在所述部署策略對應的第二節(jié)點上對所述分區(qū)的數(shù)據(jù)文件中的第一個數(shù)據(jù)塊進行數(shù)據(jù)塊備份;獲取所述分區(qū)的數(shù)據(jù)文件中第一個數(shù)據(jù)塊的備份數(shù)據(jù)塊的存儲節(jié)點分布信息;備份所述分區(qū)的數(shù)據(jù)文件中的N-1個數(shù)據(jù)塊至所述存儲節(jié)點分布信息指示的節(jié)點。相應的,本發(fā)明實施例還提供了一種非易失性計算機可讀存儲介質(zhì),當計算機執(zhí)行所述計算機可讀存儲介質(zhì)時,所述計算機執(zhí)行如下步驟:獲取存儲節(jié)點集群中故障的第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息;根據(jù)所述第一存儲節(jié)點的分區(qū)信息以及所述分區(qū)對應的數(shù)據(jù)塊的分布信息,在所述存儲節(jié)點集群中確定備份有所述第一存儲節(jié)點的所述分區(qū)對應的M個數(shù)據(jù)塊的非故障第二存儲節(jié)點;其中,M為自然數(shù);將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點。進一步的,當所述第一存儲節(jié)點故障為的從節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之前,還包括:如果所述第二存儲節(jié)點的分區(qū)負載超過負載均衡閾值,則將所述第二存儲節(jié)點上的L個分區(qū)遷移至所述存儲節(jié)點集群中除第二存儲節(jié)點外的其它非故障存儲節(jié)點;其中L為自然數(shù)。進一步的,當所述第一存儲節(jié)點上故障為數(shù)據(jù)節(jié)點進程故障時,所述將所述第一存儲節(jié)點的所述分區(qū)重新分布到所述第二存儲節(jié)點之后還包括:將所述第二存儲節(jié)點上的所述M個數(shù)據(jù)塊備份到所述存儲節(jié)點集群中的第三存儲節(jié)點,所述第三存儲節(jié)點為非故障存儲節(jié)點。本領域普通技術人員可以意識到,結合本文中所公開的實施例描述的各示例的單元及算法步驟,能夠以電子硬件、或者計算機軟件和電子硬件的結合來實現(xiàn)。這些功能究竟以硬件還是軟件方式來執(zhí)行,取決于技術方案的特定應用和設計約束條件。專業(yè)技術人員可以對每個特定的應用來使用不同方法來實現(xiàn)所描述的功能,但是這種實現(xiàn)不應認為超出本發(fā)明的范圍。所屬領域的技術人員可以清楚地了解到,為描述的方便和簡潔,上述描述的系統(tǒng)、裝置和單元的具體工作過程,可以參考前述方法實施例中的對應過程,在此不再贅述。在本申請所提供的幾個實施例中,應該理解到,所公開的系統(tǒng)、裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機械或其它的形式。所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理存在,也可以兩個或兩個以上單元集成在一個單元中。所述功能如果以軟件功能單元的形式實現(xiàn)并作為獨立的產(chǎn)品銷售或使用時,可以存儲在一個計算機可讀取存儲介質(zhì)中?;谶@樣的理解,本發(fā)明的技術方案本質(zhì)上或者說對現(xiàn)有技術做出貢獻的部分或者該技術方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機軟件產(chǎn)品存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網(wǎng)絡設備等)執(zhí)行本發(fā)明各個實施例所述方法的全部或部分步驟。而前述的存儲介質(zhì)包括:NAS(NetworkAttachedStorage)、U盤、移動硬盤、只讀存儲器(ROM,Read-OnlyMemory)、隨機存取存儲器(RAM,RandomAccessMemory)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。以上所述,僅為本發(fā)明的具體實施方式,但本發(fā)明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發(fā)明揭露的技術范圍內(nèi),可輕易想到變化或替換,都應涵蓋在本發(fā)明的保護范圍之內(nèi)。因此,本發(fā)明的保護范圍應所述以權利要求的保護范圍為準。結合本文中所公開的實施例描述的方法或算法的步驟可以用硬件、處理器執(zhí)行的軟件模塊,或者二者的結合來實施。軟件模塊可以置于隨機存儲器(RAM)、內(nèi)存、只讀存儲器(ROM)、電可編程ROM、電可擦除可編程ROM、寄存器、硬盤、可移動磁盤、CD-ROM、或技術領域內(nèi)所公知的任意其它形式的存儲介質(zhì)中。以上所述的具體實施方式,對本發(fā)明的目的、技術方案和有益效果進行了進一步詳細說明,所應理解的是,以上所述僅為本發(fā)明的具體實施方式而已,并不用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
當前第1頁1 2 3 
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
邹城市| 上高县| 汤原县| 凤山市| 吉水县| 永川市| 永顺县| 鄂州市| 始兴县| 武宁县| 通江县| 张家界市| 揭西县| 神农架林区| 汉沽区| 阆中市| 克拉玛依市| 景德镇市| 开鲁县| 赤壁市| 柯坪县| 望奎县| 尖扎县| 天峨县| 隆化县| 肃宁县| 铅山县| 武穴市| 罗定市| 五峰| 谷城县| 平昌县| 凌源市| 民权县| 平利县| 财经| 漳浦县| 临沂市| 定结县| 永德县| 平昌县|