實(shí)驗(yàn)系統(tǒng):CentOS 6.6_x86_64
實(shí)驗(yàn)前提:防火墻和selinux都關(guān)閉
實(shí)驗(yàn)說明:本實(shí)驗(yàn)共有4臺主機(jī),IP分配如拓?fù)?/p>
實(shí)驗(yàn)軟件:mariadb-10.0.20 oneproxy-rhel5-linux64-v5.6-ga
下載地址:http://pan.baidu.com/s/1jGpL2o2
實(shí)驗(yàn)拓?fù)洌?/p>
注意:本實(shí)驗(yàn)是之前mysql-proxy實(shí)驗(yàn)的拓展,因此大部分環(huán)境及設(shè)定是相同的,其中一、二步這里不再重復(fù),具體請參考: 利用mysql-proxy進(jìn)行mysql數(shù)據(jù)庫的讀寫分離
一、準(zhǔn)備工作
二、配置主從復(fù)制
三、安裝oneproxy
1.此實(shí)驗(yàn)中19.79為onproxy服務(wù)器,所以軟件安裝在此主機(jī)上:
tar xf oneproxy-rhel5-linux64-v5.6-ga.tar.gz -C /usr/local/ cd /usr/local/oneproxy vim demo.sh ----------------------------------------------------------------> #/bin/bash # export ONEPROXY_HOME=/usr/local/oneproxy # valgrind --leak-check=full --show-reachable=yes / ${ONEPROXY_HOME}/oneproxy --keepalive / //自動(dòng)檢查和重起OneProxy服務(wù) --proxy-address=192.168.19.79:3306 / //Proxy Server第一個(gè)監(jiān)聽地址
--admin-address=192.168.19.79:4041 / //管理端口地址
--proxy-master-addresses=192.168.19.66:3306@server1 / // Master節(jié)點(diǎn)地址(可寫入節(jié)點(diǎn)),其中@后面是“Server Group”的名字,如果不指定,則默認(rèn)為“default” --proxy-slave-addresses=192.168.19.74:3306@server1 / //Slave節(jié)點(diǎn)地址(可讀取節(jié)點(diǎn)) --proxy-slave-addresses=192.168.19.76:3306@server1 / --proxy-user-list=test/14B1772BA9874974E6ECEA0745EE774930E2EFA3 / // Proxy用戶列表(用戶名/口令),進(jìn)行完第2步之后回來配置 --proxy-part-tables=${ONEPROXY_HOME}/part.txt /
--proxy-found-rows / --event-threads=4 / //OneProxy的工作線程數(shù)
--proxy-group-policy=server1:2 / //定義MySQL集群的路由訪問策略,這里配置的是從Slave讀取,如果Slave端不可用,則從Master端讀取
--proxy-group-security=server1:0 / //定義MySQL集群的安全訪問策略 --proxy-memory-db=root/@::test /
--proxy-memory-engine / --proxy-sql-autosave=${ONEPROXY_HOME}/sql_firewall.sql / --log-file=${ONEPROXY_HOME}/oneproxy.log / --pid-file=${ONEPROXY_HOME}/oneproxy.pid
2.查看密碼字符并配置:
chmod +x demo.sh ./demo.sh mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041 //進(jìn)入管理接口 --------------------------------------------------------------------> passwd 'redhat'; //查看密碼字符,并寫入demo.sh中 +--------+------------------------------------------+ | TEXT | PASSWORD | +--------+------------------------------------------+ | redhat | 14B1772BA9874974E6ECEA0745EE774930E2EFA3 | +--------+------------------------------------------+
3.在master上創(chuàng)建測試用戶:
/usr/local/mysql/bin/mysql -----------------------------------------------> GRANT ALL ON *.* TO 'test'@'192.168.19.%' IDENTIFIED BY 'redhat'; //這里要和demo.sh中的Proxy用戶列表信息保持一致 FLUSH PRIVILEGES;
4.回到oneproxy服務(wù)器啟動(dòng)進(jìn)程:
killall -9 oneproxy //先清理掉之前的進(jìn)程 ./demo.sh tail -f oneproxy.log //查看日志
mysql -uadmin -pOneProxy -h192.168.19.79 --port=4041 -----------------------------------------------------------------> LIST BACKEND; +------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+ | INDX | ADDRESS | TYPE | STATUS | MARKUP | REQUESTS | DEGREE | GROUP | IS_M | IS_S | MFile | MOffset | DFile | DOffset | RFile | ROffset | IO | SQL | Seconds | +------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+ | 1 | 127.0.0.1:3306 | RW/Master | UP | 0 | 0 | 0 | | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 2 | 192.168.19.66:3306 | RW/Master | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 3 | 192.168.19.74:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | | 4 | 192.168.19.76:3306 | RO/Slave | UP | 1 | 0 | 0 | server1 | No | No | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | NULL | +------+--------------------+-----------+--------+--------+----------+--------+---------+------+------+-------+---------+-------+---------+-------+---------+------+------+---------+
5.分別在三臺mariadb服務(wù)器上抓包:
master:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.66 and tcp dst port 3306
slave1:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.74 and tcp dst port 3306
slave2:
tcpdump -i eth0 -nn -XX ip dst 192.168.19.76 and tcp dst port 3306
6.在oneproxy上進(jìn)行數(shù)據(jù)庫創(chuàng)建及讀?。?/p>
mysql -utest -predhat -h192.168.19.79 //連接到oneproxy
數(shù)據(jù)庫命令這里不再寫出,大家可以從圖片可以看出,所有寫操作都在master上進(jìn)行,讀操作被負(fù)載均衡至slave上。