您好,登錄后才能下訂單哦!
這篇文章主要介紹了MyCAT如何安裝使用,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。
mycat運(yùn)行依賴于jre環(huán)境,需要首先安裝jdk7以上版本
檢查jdk版本 shell> java -version java version "1.7.0_79" Java(TM) SE Runtime Environment (build 1.7.0_79-b15) Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode) 下載解壓mycat server1.5安裝文件 shell> tar zxvf Mycat-server-1.5-RELEASE-20160301083012-linux.tar.gz 創(chuàng)建mycat用戶,并設(shè)置環(huán)境變量 shell> groupadd mycat shell> useradd -g mycat mycat shell> passwd mycat shell> chown -R mycat.mycat /usr/local/mycat shell> vim /etc/profile 添加如下內(nèi)容 export MYCAT_HOME=/usr/local/mycat shell> source /etc/profile
Master:10.106.58.178
Slave:10.106.58.179
mycat:10.106.58.174
mycat1.5配置文件可以根據(jù)本地XML文件配置,也可以使用zookeeper來(lái)實(shí)現(xiàn),本例介紹使用本地XML來(lái)配置。
配置文件介紹
conf/rule.xml 定義分片規(guī)則
conf/schema.xml 定義邏輯庫(kù)、表以及分片節(jié)點(diǎn)等內(nèi)容
conf/server.xml 定義用戶授權(quán)及服務(wù)器參數(shù)相關(guān)配置
shell> more conf/schema.xml <?xml version="1.0"?> <!DOCTYPE mycat:schema SYSTEM "schema.dtd"> <mycat:schema xmlns:mycat="http://org.opencloudb/"> <schema name="test" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1" /> <dataNode name="dn1" dataHost="cluster1" database="test" /> <dataHost name="cluster1" maxCon="1000" minCon="10" balance="0" writeType="0" dbType="mysql" dbDriver="native" switchType="1" slaveThreshold="100"> <heartbeat>select user()</heartbeat> <writeHost host="hostM1" url="10.106.58.178:3306" user="root" password="123456" > <readHost host="hostS1" url="10.106.58.179:3306" user="root" password="123456" /> </writeHost> </dataHost> </mycat:schema> shell> more conf/rule.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:rule SYSTEM "rule.dtd"> <mycat:rule xmlns:mycat="http://org.opencloudb/"> <tableRule name="rule1"> <rule> <columns>id</columns> <algorithm>func1</algorithm> </rule> </tableRule> <function name="func1" class="org.opencloudb.route.function.PartitionByLong"> <property name="partitionCount">8</property> <property name="partitionLength">128</property> </function> </mycat:rule> server.xml的user定義了客戶端連接mycat使用的用戶驗(yàn)證 schema.xml的user是mycat連接數(shù)據(jù)庫(kù)使用的用戶 shell> more conf/server.xml <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mycat:server SYSTEM "server.dtd"> <mycat:server xmlns:mycat="http://org.opencloudb/"> <system> <property name="defaultSqlParser">druidparser</property> </system> <user name="test"> <property name="password">test</property> <property name="schemas">test</property> </user> </mycat:server>
查看wrapper.log,查看啟動(dòng)是否成功 shell> /usr/local/mycat/bin/mycat start 通過(guò)mycat連接數(shù)據(jù)庫(kù) shell> mysql -h 10.106.58.174 -P8066 -u test -p mysql> select @@hostname; +------------+ | @@hostname | +------------+ | mysql178 | +------------+ 1 row in set (0.13 sec) mysql> create table user(id int primary key,name varchar(100)); Query OK, 0 rows affected (0.13 sec) mysql> insert into user(id,name) values(1,'xiaoming'); Query OK, 1 row affected (0.07 sec) 查詢從庫(kù) mysql> select @@hostname; select * from test.user; +------------+ | @@hostname | +------------+ | mysql179 | +------------+ 1 row in set (0.00 sec) +----+----------+ | id | name | +----+----------+ | 1 | xiaoming | +----+----------+ 1 row in set (0.00 sec)
mycat提供了幾種請(qǐng)求負(fù)載均衡分發(fā)形式,通過(guò)定義dataHost標(biāo)簽的balance屬性來(lái)修改
balance=0,不開(kāi)啟讀寫(xiě)分離機(jī)制,所有讀寫(xiě)操作都發(fā)送到當(dāng)前可用的writeHost上
balance=1,全部的readHost和stand by writeHost參與select語(yǔ)句的負(fù)載均衡,如雙主雙從模式,M2、S1、S2都分發(fā)請(qǐng)求
balance=2,所有讀操作隨機(jī)在writeHost和readHost上分發(fā)
balance=3,所有讀請(qǐng)求隨機(jī)的分發(fā)到writeHost上對(duì)應(yīng)的readHost上執(zhí)行,writeHost不承擔(dān)讀壓力。(balance=3只支持mycat1.4以上版本)
設(shè)置balance=1并將log4j修改為debug模式,觀察執(zhí)行結(jié)果。
執(zhí)行寫(xiě)入操作,可以看出分發(fā)到writeHost
mysql> insert into test.user(id,name) values(2,'xiaoli');
執(zhí)行查詢操作,可以看出分發(fā)到readHost
mysql> select * from test.user where id = 2;
mycat通過(guò)dataHost標(biāo)簽的writeType和switchType來(lái)定義故障切換方式。
writeType=0,表示所有寫(xiě)都發(fā)送到配置的第一個(gè)writeHost上,第一個(gè)掛了切換到第二個(gè)writeHost上,重啟后以切換后的為準(zhǔn),切換記錄在conf/dnindex.properties
writeType=1,表示所有寫(xiě)都隨機(jī)發(fā)送到配置的writeHost上,mycat1.5以上已廢棄不推薦。
switchType=-1,表示不自動(dòng)切換
switchType=1,默認(rèn)值,表示自動(dòng)切換
switchType=2,基于MySQL主從同步的狀態(tài)決定是否切換,心跳語(yǔ)句為show slave status。
switchType=3,基于galaru cluster的切換機(jī)制(合適集群),mycat1.4以上支持,心跳語(yǔ)句為show status like 'wsrep%'。
修改switchType=2,writeType=0,心跳語(yǔ)show slave status
關(guān)閉Master shell> service mysql stop
通過(guò)mycat執(zhí)行插入操作,發(fā)現(xiàn)請(qǐng)求分發(fā)到第二個(gè)writeHost上 mysql> insert into test.user values(3,'xiaowang'); Query OK, 1 row affected (0.04 sec)
重新啟動(dòng)原Master shell> service mysql start 查看當(dāng)前寫(xiě)入節(jié)點(diǎn),0表示第一個(gè),1表示第二個(gè) shell> more conf/dnindex.properties #update #Fri Mar 04 15:51:39 CST 2016 cluster1=1 通過(guò)mycat寫(xiě)入數(shù)據(jù) mysql> insert into test.user values(4,'xiaozheng'); Query OK, 1 row affected (0.04 sec) mysql> select * from test.user where id = 4; +----+-----------+ | id | name | +----+-----------+ | 4 | xiaozheng | +----+-----------+ 1 row in set (0.01 sec) 查看主庫(kù)數(shù)據(jù) mysql> select * from test.user; +----+----------+ | id | name | +----+----------+ | 1 | xiaoming | | 2 | xiaoli | +----+----------+ 2 rows in set (0.00 sec) 查看從庫(kù)數(shù)據(jù) mysql> select * from test.user; +----+-----------+ | id | name | +----+-----------+ | 1 | xiaoming | | 2 | xiaoli | | 3 | xiaowang | | 4 | xiaozheng | +----+-----------+ 4 rows in set (0.00 sec)
當(dāng)原主庫(kù)恢復(fù)之后,mycat并沒(méi)有切換回第一個(gè)寫(xiě)入節(jié)點(diǎn),而是需要重新配置主從狀態(tài)。mycat的故障切換不會(huì)同步主從binlog差異數(shù)據(jù),不能完整的保證數(shù)據(jù)一致性,而且沒(méi)有記錄切換后的writeHost提供服務(wù)時(shí)的binlog位置,其他從庫(kù)指定新主庫(kù)時(shí),需要手工備份完整的數(shù)據(jù),可考慮與MHA結(jié)合使用。
感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“MyCAT如何安裝使用”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。