利用oneproxy部署mysql資料庫的讀寫分離

來源:互聯網
上載者:User

標籤:

實驗系統:CentOS 6.6_x86_64

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

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

實驗軟體:mariadb-10.0.20  oneproxy-rhel5-linux64-v5.6-ga

:http://pan.baidu.com/s/1jGpL2o2

實驗拓撲:

    

注意:本實驗是之前mysql-proxy實驗的拓展,因此大部分環境及設定是相同的,其中一、二步這裡不再重複,具體請參考:利用mysql-proxy進行mysql資料庫的讀寫分離

一、準備工作

二、配置主從複製

三、安裝oneproxy

  1.此實驗中19.79為onproxy伺服器,所以軟體安裝在此主機上:

tar xf oneproxy-rhel5-linux64-v5.6-ga.tar.gz -C /usr/local/cd /usr/local/oneproxyvim 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

利用oneproxy部署mysql資料庫的讀寫分離

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.