Cobar簡介(了解)
分布式:
Cobar的分布式主要是通過將表放入不同的庫來實(shí)現(xiàn):
1. Cobar支持將一張表水平拆分成多份分別放入不同的庫來實(shí)現(xiàn)表的水平拆分;
2. Cobar也支持將不同的表放入不同的庫。
HA:
在用戶配置了MySQL心跳的情況下,Cobar可以自動(dòng)向后端連接的MySQL發(fā)送心跳,判斷MySQL運(yùn)行狀況,一旦運(yùn)行出現(xiàn)異常,Cobar可以自動(dòng)切換到備機(jī)工作。但需要強(qiáng)調(diào)的是:
1. Cobar的主備切換有兩種觸發(fā)方式,一種是用戶手動(dòng)觸發(fā),一種是Cobar的心跳語句檢測到異常后自動(dòng)觸發(fā)。那么,當(dāng)心跳檢測到主機(jī)異常,切換到備機(jī),如果主機(jī)恢復(fù)了,需要用戶手動(dòng)切回主機(jī)工作,Cobar不會(huì)在主機(jī)恢復(fù)時(shí)自動(dòng)切換回主機(jī),除非備機(jī)的心跳也返回異常。
2. Cobar只檢查MySQL主備異常,不關(guān)心主備之間的數(shù)據(jù)同步,因此用戶需要在使用Cobar之前在MySQL主備上配置雙向同步。
開始正文
1.需求
數(shù)據(jù)量擴(kuò)大后數(shù)據(jù)庫高效,正常運(yùn)行。
2.測試
Cobar本地單點(diǎn)部署測試(后面介紹集群部署)
簡單分庫分表Demo:
系統(tǒng)對外提供的數(shù)據(jù)庫名是 dbtest ,并且其中有兩張表tb1和tb2。
tb1表的數(shù)據(jù)被映射到物理數(shù)據(jù)庫dbtest1的tb1上。
tb2表的一部分?jǐn)?shù)據(jù)被映射到物理數(shù)據(jù)庫dbtest2的tb2上,另外一部分?jǐn)?shù)據(jù)被映射到物理數(shù)據(jù)庫dbtest3的tb2上。
MySQL所在服務(wù)器IP為192.168.31.180,端口為3306,用戶名為 item_dev,密碼為142569,我們需要?jiǎng)?chuàng)建 database:dbtest1、dbtest2、dbtest3,table:tb1、tb2:
Cobar配置,文件內(nèi)容通俗易懂:
Cobar解壓之后有四個(gè)目錄:
bin/:可執(zhí)行文件目錄,包含啟動(dòng),關(guān)閉和重啟腳本
lib/:邏輯類庫目錄,包含了Cobar所需的jar包
conf/:配置文件目錄
logs/:運(yùn)行日志目錄,最主要的log有兩個(gè):stdout.log 和 console.log
schema.xml:
rule.xml:可以看出分表的規(guī)則是,按照id字段把tb2表中的數(shù)據(jù)分配到dnTest2和dnTest3兩個(gè)分區(qū)中,其中id小于512的數(shù)據(jù)會(huì)被放到dnTest2庫的分區(qū)中,而其余的會(huì)被放到dnTest3庫的分區(qū)中,等多路由算法待研究。
rule.xml
server.xml,集群配置也要在這里,<cluster>:
運(yùn)行Cobar:
[admin@DELL cobar-server-1.2.6]$ ./bin/startup.sh
登錄Cobar:
[admin@DELL cobar-server-1.2.6]$ mysql -h192.168.31.180 -utest -ptest -P8066 -Ddbtest