一、配置mysql主從服務(wù)器
主數(shù)據(jù)庫(kù):10.170.1.16
從數(shù)據(jù)庫(kù):10.170.1.18
(1)主數(shù)據(jù)庫(kù)服務(wù)器配置
打開數(shù)據(jù)庫(kù)安裝目錄下的my.cnf并添加上:
server-id ?????????=16
read-only ?????????=0
binlog-do-db ??????=cispweb ??#同步的數(shù)據(jù)庫(kù)
binlog-ignore-db ??=mysql #不需要同步的數(shù)據(jù)庫(kù)
重啟數(shù)據(jù)庫(kù),并進(jìn)入到數(shù)據(jù)庫(kù)蚀之,如果出現(xiàn)下圖內(nèi)容則配置成功
為從數(shù)據(jù)分配權(quán)限賬號(hào):
?grant replication slave,file on *.* to 'xml'@10.170.1.18' identified
?by '123456';
(2)從數(shù)據(jù)庫(kù)服務(wù)器配置
打開數(shù)據(jù)庫(kù)安裝目錄下的my.cnf并添加上:
server-id ??????= 2
master-host ????=10.170.1.16
master-user ????=xml
master-pass ????=123456
master-port ????=3306
master-connect-retry=60
replicate-do-db =cispweb
replicate-ignore-db=mysql
注:第一次添加到配置后會(huì)記錄到服務(wù)器上蝗敢,如果需要修改盡量用命令來修改
mysql> stop slave;
Query OK, 0 rows affected (0.00 sec)
mysql> change master to
??? -> master_host='192.168.0.232',
??? -> master_user='repl2',
??? -> master_password='123456',
??? -> master_log_file='mysql-bin.000004',
??? -> master_log_pos=595;
Query OK, 0 rows affected (0.01 sec)
mysql> start slave;
Query OK, 0 rows affected (0.00 sec)
重啟數(shù)據(jù)庫(kù),并進(jìn)入到數(shù)據(jù)庫(kù),如果出現(xiàn)下圖內(nèi)容則配置成功
注:如果紅框內(nèi)值為NO足删,優(yōu)先檢查賬號(hào)的權(quán)限分配
(3)mycat配置
如果上述配置完成寿谴,此刻數(shù)據(jù)庫(kù)已經(jīng)建立了主從關(guān)系,那么主從數(shù)據(jù)庫(kù)已經(jīng)完成了同步失受,可以通過進(jìn)行插入數(shù)據(jù)進(jìn)行檢測(cè)讶泰。
tar?-zxvf?Mycat-server-1.4-release-20151019230038-linux.tar.gz
mv mycat /usr/local/
將mycat包解壓并移到/usr/local/mycat路徑下
roupadd mycat
adduser -r -g mycat mycat
chown -R mycat.mycat /usr/local/mycat
創(chuàng)建mycat 用戶,改變目錄權(quán)限為mycat
進(jìn)入到/usr/local/mycat/conf 并打開schema.xml
<?xml version="1.0"?>
<!DOCTYPE mycat:schema SYSTEM "schema.dtd">
<mycat:schema xmlns:mycat="http://io.mycat/">
<!--?定義MyCat的邏輯庫(kù)?-->
<schema ?name="cispweb" checkSQLschema="false" sqlMaxLimit="100" dataNode="dn1"></schema>
<!--?定義MyCat的數(shù)據(jù)節(jié)點(diǎn)?-->
<dataNode name="dn1" dataHost="localhost1" database="cispweb" />
<!--?定義數(shù)據(jù)主機(jī)dtHost拂到,連接到MySQL讀寫分離集群?,schema中的每一個(gè)dataHost中的host屬性值必須唯一-->??
????<!--?dataHost實(shí)際上配置就是后臺(tái)的數(shù)據(jù)庫(kù)集群痪署,一個(gè)datahost代表一個(gè)數(shù)據(jù)庫(kù)集群?-->??
????<!--?balance="1",全部的readHost與stand?by?writeHost參與select語句的負(fù)載均衡-->??
????<!--?writeType="0"兄旬,所有寫操作發(fā)送到配置的第一個(gè)writeHost狼犯,這里就是我們的hostmaster,第一個(gè)掛了切到還生存的第二個(gè)writeHost-->?
<dataHost name="localhost1" maxCon="1000" minCon="10" balance="0"
??writeType="0" dbType="mysql" dbDriver="native" switchType="1" ?slaveThreshold="100">
<heartbeat>select user()</heartbeat>
<!-- can have multi write hosts -->
<writeHost host="hostM1" url="localhost:3306" user="root" password="XXXX">
<!-- can have multi read hosts -->
<readHost host="hostS1" url="10.170.1.18:3306" user="root" password="XXX" />
</writeHost>
</dataHost>
</mycat:schema>
接下來配置用戶權(quán)限,系統(tǒng)變量
(/usr/local/mycat/conf/server.xml):
<user name="root">
<property name="password">XXX</property>
<property name="schemas">XXX</property>
</user>
<!--不需要配置-->
<user name="user">
<property name="password">user</property>
<property name="schemas">TESTDB</property>
<property name="readOnly">true</property>
</user>
修改防火墻,允許mycat的端口被外界訪問:
vi?/etc/sysconfig/iptables??
添加:
-A INPUT -m state --state NEW -m tcp -p tcp --dport 8066 -j ACCEPT
-A INPUT -m state --state NEW -m tcp -p tcp --dport 9066 -j ACCEPT
重啟防火墻
service?iptables?restart
啟動(dòng)mycat
./mycat?start?
登錄mycat
mysql -uroot -h10.170.1.16 -P8066 -p
配置說明:
name屬性唯一標(biāo)識(shí)dataHost標(biāo)簽领铐,供上層的標(biāo)簽使用悯森。
maxCon屬性指定每個(gè)讀寫實(shí)例連接池的最大連接。也就是說罐孝,標(biāo)簽內(nèi)嵌套的
writeHost呐馆、readHost標(biāo)簽都會(huì)使用這個(gè)屬性的值來實(shí)例化出連接池的最大連接數(shù)。
minCon屬性指定每個(gè)讀寫實(shí)例連接池的最小連接莲兢,初始化連接池的大小汹来。
balance屬性負(fù)載均衡類型,目前的取值有3種:
1.balance="0",不開啟讀寫分離機(jī)制改艇,所有讀操作都發(fā)送到當(dāng)前可用的writeHost上收班。
2.balance="1",全部的readHost與stand by writeHost參與select語句的負(fù)載均衡谒兄,簡(jiǎn)單的說摔桦,當(dāng)雙主雙從模式(M1->S1,M2->S2承疲,并且M1與M2互為主備)邻耕,
正常情況下,M2,S1,S2都參與select語句的負(fù)載均衡燕鸽。
3.balance="2"兄世,所有讀操作都隨機(jī)的在writeHost、readhost上分發(fā)啊研。
4.balance="3"御滩,所有讀請(qǐng)求隨機(jī)的分發(fā)到wiriterHost對(duì)應(yīng)的readhost執(zhí)行,
writerHost不負(fù)擔(dān)讀壓力党远,注意balance=3只在1.4及其以后版本有削解,1.3沒有。
writeType屬性負(fù)載均衡類型沟娱,目前的取值有3種:
1.writeType="0", 所有寫操作發(fā)送到配置的第一個(gè)writeHost氛驮,第一個(gè)掛了切到還生存的第二個(gè)writeHost,重新啟動(dòng)后已切換后的為準(zhǔn)济似,切換記錄在配置文件中:dnindex.properties.
2.writeType="1"柳爽,所有寫操作都隨機(jī)的發(fā)送到配置的writeHost,1.5以后廢棄不推薦碱屁。
3.writeType="2"磷脯,不執(zhí)行寫操作
switchType屬性
-1 表示不自動(dòng)切換
1 默認(rèn)值,自動(dòng)切換
2 基于mysql主從同步的狀態(tài)決定是否切換
3 基于MySQLgalarycluster的切換機(jī)制(適合集群)(1.4.1)
心跳語句為show status like‘wsrep%’