一種分布式數(shù)據(jù)庫擴容的方法和系統(tǒng)的制作方法
【技術領域】
[0001]本發(fā)明涉及分布式數(shù)據(jù)庫和云計算領域,尤其涉及一種分布式數(shù)據(jù)庫擴容的方法和系統(tǒng)。
【背景技術】
[0002]在互聯(lián)網、電信等許多關鍵領域,隨著企業(yè)業(yè)務的不斷發(fā)展,企業(yè)的I/T環(huán)境也在不斷進行演變,單個數(shù)據(jù)庫已經很難滿足海量數(shù)據(jù)庫存儲和高并發(fā)數(shù)據(jù)訪問,分布式數(shù)據(jù)庫的出現(xiàn)成為必然,分布式數(shù)據(jù)庫能夠有效的解決海量數(shù)據(jù)存儲和并發(fā)問題,通過數(shù)據(jù)的水平切合和數(shù)據(jù)表的垂直切分,有效的緩解了海量數(shù)據(jù)存儲,通過負載均衡、高可用、輪詢等緩解了高并發(fā)問題。但隨著分布式數(shù)據(jù)庫的上線業(yè)務量的增加每個節(jié)點數(shù)據(jù)量的增加,分布式數(shù)據(jù)庫節(jié)點擴容則勢在必行。
[0003]現(xiàn)有的分布式數(shù)據(jù)庫系統(tǒng)不能實現(xiàn)擴容,隨著業(yè)務增加每個節(jié)點數(shù)據(jù)量劇增,整個分布式數(shù)據(jù)庫性能急劇下降;擴容時間長,對應用程序影響大;擴容局限性強,只支持一些特殊場景不適合所有場景;擴容步驟繁瑣,操作復雜。
【發(fā)明內容】
[0004]本發(fā)明所要解決的技術問題是提供一種分布式數(shù)據(jù)庫擴容的方法和系統(tǒng)。
[0005]本發(fā)明解決上述技術問題的技術方案如下:一種分布式數(shù)據(jù)庫擴容的方法,包括以下步驟:
[0006]步驟SI,通過代理規(guī)則I將數(shù)據(jù)庫系統(tǒng)I將Mysql_A和Mysql_B的數(shù)據(jù)均切分到兩個數(shù)據(jù)庫上;其中數(shù)據(jù)庫系統(tǒng)I包括與DBProxy相連的Mysql_A和Mysql_B,且Mysql_A和Mysql_B的數(shù)據(jù)設置為雙主互備;經過切分后,Mysql_A的數(shù)據(jù)切分到數(shù)據(jù)庫Schemal和數(shù)據(jù)庫Schema2上,Mysql_B的數(shù)據(jù)切分到數(shù)據(jù)庫Schemal和數(shù)據(jù)庫Schema2上;
[0007]步驟S2,將代理規(guī)則I修改為代理規(guī)則2 ;
[0008]步驟S3,根據(jù)代理規(guī)則2停止Mysql_A和Mysql_B的數(shù)據(jù)復制功能并刪除Mysql_A包含的數(shù)據(jù)庫Schema2以及Mysql_B包含的數(shù)據(jù)庫Schemal ;
[0009]步驟S4,設置 Mysql_A 和 Mysql_B 的備份節(jié)點分別為 Mysql_A_slave 和 Mysql_B_slave,并將 Mysql_A 和 Mysql_B 的數(shù)據(jù)分別導入到 Mysql_A_slave 和 Mysql_B_slave 中。
[0010]在上述技術方案的基礎上,本發(fā)明還可以做如下改進。
[0011]進一步地,步驟2中,在所述代理規(guī)則2中設置Mysql_A和Mysql_B的備份節(jié)點都為本身。
[0012]進一步地,步驟S4中,使用在線備份工具xtrabackup將Mysql_A和Mysql_B的數(shù)據(jù)分別導入到 Mysql_A_slave 和 Mysql_B_slave 中。
[0013]進一步地,步驟S4中,以導入數(shù)據(jù)的結束點為起始配置Mysql_A和Mysql_B與Mysql_A_slave 和 Mysql_B_slave 主從互備。
[0014]進一步地,步驟S4后,在代理規(guī)則2中設置Mysql_A_slave和Mysql_B_slave為Mysql_A和Mysql_B的備份節(jié)點。
[0015]本發(fā)明解決上述技術問題的另一種技術方案如下:一種分布式數(shù)據(jù)庫擴容的系統(tǒng),包括數(shù)據(jù)切分模塊、代理規(guī)則修改模塊、數(shù)據(jù)庫刪除模塊和備份節(jié)點設置模塊;
[0016]所述數(shù)據(jù)切分模塊用于通過代理規(guī)則I將數(shù)據(jù)庫系統(tǒng)I將Mysql_A和Mysql_B的數(shù)據(jù)均切分到兩個數(shù)據(jù)庫上;其中數(shù)據(jù)庫系統(tǒng)I包括與DBProxy相連的Mysql_A和Mysql_B,且]\^891_々和Mysql_B的數(shù)據(jù)設置為雙主互備;經過切分后,Mysql_A的數(shù)據(jù)切分到數(shù)據(jù)庫Schemal和數(shù)據(jù)庫Schema2上,Mysql_B的數(shù)據(jù)切分到數(shù)據(jù)庫Schemal和數(shù)據(jù)庫Schema2上;
[0017]所述代理規(guī)則修改模塊用于將代理規(guī)則I修改為代理規(guī)則2 ;
[0018]所述數(shù)據(jù)庫刪除模塊用于根據(jù)代理規(guī)則2停止Mysql_A和Mysql_B的數(shù)據(jù)復制功能并刪除Mysql_A包含的數(shù)據(jù)庫Schema2以及Mysql_B包含的數(shù)據(jù)庫Schemal ;
[0019]所述備份節(jié)點設置模塊用于設置Mysql_A和Mysql_B的備份節(jié)點分別為Mysql_A_slave 和 Mysql_B_slave,并將 Mysql_A 和 Mysql_B 的數(shù)據(jù)分別導入到 Mysql_A_slave 和Mysql_B_slave 中。
[0020]在上述技術方案的基礎上,本發(fā)明還可以做如下改進。
[0021]進一步地,在所述代理規(guī)則2中設置Mysql_A和Mysql_B的備份節(jié)點都為本身。
[0022]進一步地,使用在線備份工具xtrabackup將Mysql_A和Mysql_B的數(shù)據(jù)分別導入到 Mysql_A_slave 和 Mysql_B_slave 中。
[0023]進一步地,以導入數(shù)據(jù)的結束點為起始配置和Mysql_B_slave主從互備。
[0024]進一步地,在代理規(guī)則2中設置Mysql_A_slave和Mysql_B_slave為Mysql_A和Mysql_B的備份節(jié)點。
[0025]本發(fā)明的有益效果是:能夠實現(xiàn)不停業(yè)務或者短時間停業(yè)務的分布式數(shù)據(jù)庫節(jié)點擴容;操作簡單,擴容時間短;支持所有場景的分布式數(shù)據(jù)庫的擴容。
【附圖說明】
[0026]圖1為本發(fā)明所述分布式數(shù)據(jù)庫擴容的方法流程圖;
[0027]圖2為本發(fā)明所述分布式數(shù)據(jù)庫擴容的方法步驟I和步驟3流程圖;
[0028]圖3為本發(fā)明所述分布式數(shù)據(jù)庫擴容的方法步驟4流程圖;
[0029]圖4為本發(fā)明所述分布式數(shù)據(jù)庫擴容的系統(tǒng)結構圖。
【具體實施方式】
[0030]以下結合附圖對本發(fā)明的原理和特征進行描述,所舉實例只用于解釋本發(fā)明,并非用于限定本發(fā)明的范圍。
[0031]本發(fā)明中涉及的Mysql是指關系型數(shù)據(jù)庫管理系統(tǒng),DBProxy為數(shù)據(jù)庫代理,用于調度/負載均衡。
[0032]圖1為本發(fā)明所述分布式數(shù)據(jù)庫擴容的方法流程圖。
[0033]如圖1所示,一種分布式數(shù)據(jù)庫擴容的方法,包括以下步驟:
[0034]步驟SI,通過代理規(guī)則I將數(shù)據(jù)庫系統(tǒng)I將Mysql_A和Mysql_B的數(shù)據(jù)均切分到兩個數(shù)據(jù)庫上;其中數(shù)據(jù)庫系統(tǒng)I包括與DBProxy相連的Mysql_A和Mysql_B,且Mysql_A和Mysql_B的數(shù)據(jù)設置為雙主互備;經過切分后,如圖2所示,Mysql_A的數(shù)據(jù)切分到數(shù)據(jù)庫Schemal和數(shù)據(jù)庫Schema2上,Mysql_B的數(shù)據(jù)切分到數(shù)據(jù)庫Schemal和數(shù)據(jù)庫Schema2上。
[0035]步驟S2,將代理規(guī)則I修改為代理規(guī)則2 ;代理規(guī)則2中設置Mysql_A和Mysql_B的備份節(jié)點都它本身,此時Mysql_A和Mysql_B不具備主備功能;在代理管理端口(9066)執(zhí)行reload_config ;使代理規(guī)則2生效。
[0036]步驟S3,根據(jù)代理規(guī)則2,通過Mysql命令停止Mysql_A和Mysql_B的數(shù)據(jù)復制功能并刪除Mysql_A包含的數(shù)據(jù)庫Schema2以及Mysql_B包含的數(shù)據(jù)庫Schemal0
[0037]步驟S4,具體如圖3所示,設置Mysql_A和Mysql_B的備份節(jié)點分別為Mysql_A_slave和Mysql_B_slave,可以使用在線備份工具xtrabackup將Mysql_A和Mysql_B的數(shù)據(jù)分別導入到 Mysql_A_slave 和 Mysql_B_slave 中。查看備份工具 xtrabackup_binlog_info文件,獲取導入日志的結束點,以導入數(shù)據(jù)的結束點為起始配置MysqU^PMysql_B與Mysql_A_slave和Mysql_B_slave互備;并啟動主從互備。此時在代理規(guī)則中設置Mysql_A_slave和Mysql_B_slave為Mysql_A和Mysql_B的備份節(jié)點,在代理管理端口(9066)執(zhí)行reload_config ;使代理