利用oneproxy部署mysql數據庫的讀寫分離

實驗系統:CentOS 6.6_x86_64html

實驗前提:防火牆和selinux都關閉mysql

實驗說明:本實驗共有4臺主機,IP分配如拓撲linux

實驗軟件:mariadb-10.0.20  oneproxy-rhel5-linux64-v5.6-gasql

下載地址:http://pan.baidu.com/s/1jGpL2o2數據庫

實驗拓撲:vim

    

注意:本實驗是以前mysql-proxy實驗的拓展,所以大部分環境及設定是相同的,其中1、二步這裏再也不重複,具體請參考:利用mysql-proxy進行mysql數據庫的讀寫分離安全

1、準備工做bash

2、配置主從複製服務器

3、安裝oneproxy負載均衡

  1.此實驗中19.79爲onproxy服務器,因此軟件安裝在此主機上:

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 \                                       //自動檢查和重起OneProxy服務 --proxy-address=192.168.19.79:3306 \                                        //Proxy Server第一個監聽地址
--admin-address=192.168.19.79:4041 \ //管理端口地址
--proxy-master-addresses=192.168.19.66:3306@server1 \ // Master節點地址(可寫入節點),其中@後面是「Server Group」的名字,若是不指定,則默認爲「default」 --proxy-slave-addresses=192.168.19.74:3306@server1 \ //Slave節點地址(可讀取節點) --proxy-slave-addresses=192.168.19.76:3306@server1 \ --proxy-user-list=test/14B1772BA9874974E6ECEA0745EE774930E2EFA3 \ // Proxy用戶列表(用戶名/口令),進行完第2步以後回來配置 --proxy-part-tables=${ONEPROXY_HOME}/part.txt \
--proxy-found-rows \ --event-threads=4 \ //OneProxy的工做線程數
--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                   //進入管理接口
-------------------------------------------------------------------->
passwd 'redhat';                                                       //查看密碼字符,並寫入demo.sh中
+--------+------------------------------------------+
| TEXT   | PASSWORD                                 |
+--------+------------------------------------------+
| redhat | 14B1772BA9874974E6ECEA0745EE774930E2EFA3 |
+--------+------------------------------------------+

  3.在master上建立測試用戶:

/usr/local/mysql/bin/mysql
----------------------------------------------->
GRANT ALL ON *.* TO 'test'@'192.168.19.%' IDENTIFIED BY 'redhat';      //這裏要和demo.sh中的Proxy用戶列表信息保持一致
FLUSH PRIVILEGES;

  4.回到oneproxy服務器啓動進程:

killall -9 oneproxy           //先清理掉以前的進程
./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服務器上抓包:

    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上進行數據庫建立及讀取:

mysql -utest -predhat -h192.168.19.79       //鏈接到oneproxy

    數據庫命令這裏再也不寫出,你們能夠從圖片能夠看出,全部寫操做都在master上進行,讀操做被負載均衡至slave上。

    

    

    

    

    

    

  至此,實驗成功,謝謝!若有問題,請聯繫我,QQ:82800452

相關文章
相關標籤/搜索