這篇文章將為大家詳細講解有關如何在OneProxy的基礎上實行MySQL讀寫分離與負載均衡,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。
沐川ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!簡介
Part1:寫在最前
OneProxy平民軟件完全自主開發(fā)的分布式數(shù)據(jù)訪問層,幫助用戶在MySQL/PostgreSQL集群上快速搭建支持分庫分表的分布式數(shù)據(jù)庫中間件,也是一款具有SQL白名單(防SQL注入)及IP白名單功能的SQL防火墻軟件。采用與MySQL Proxy一致的反向協(xié)議輸出模式,對應用非常簡單和透明易用,讓用戶畏懼的數(shù)據(jù)庫故障切換(Failover)、讀寫分離(Read/Write Split)、分庫分表(Horizontal Partitioning)等復雜方案變得極其簡單可控!基于Libevent機制實現(xiàn),單個實例可以實現(xiàn)25萬的SQL轉發(fā)能力,用一個OneProxy節(jié)點可以帶動整個MySQL集群,為業(yè)務發(fā)展貢獻一份力量。
Part2:環(huán)境簡介
HE1:192.168.1.248 slave1
HE2:192.168.1.249 slave2
HE3:192.168.1.250 Master
HE4:192.168.1.251 Oneproxy
環(huán)境構建
Part1:安裝Oneproxy
[root@HE4 ~]# tar xvf oneproxy-rhel5-linux64-v5.8.5-ga.tar.gz [root@HE4 oneproxy]# ls bin conf demo.sh log oneproxy.service README testadmin.sql testautocommit.sql testproxy.sql trantest.sql
Part2:構建主從環(huán)境
本文的架構是一主兩從,HE3作為Master,HE1,HE2作為Slave。主從的構建不是本文的重點,需要的可移步:
如何快速使用mysqlreplicate搭建MySQL主從
Part3:配置Oneproxy
目錄中的demo是初次啟動腳本,oneproxy.service是啟停腳本,在新版的oneproxy中,conf文件夾的proxy.cnf為配置文件
[root@HE4 oneproxy]# cat demo.sh #/bin/bash # export ONEPROXY_HOME=/root/oneproxy # valgrind --leak-check=full \ ${ONEPROXY_HOME}/bin/oneproxy --defaults-file=${ONEPROXY_HOME}/conf/proxy.conf
我們將demo.sh中的ONEPROXY_HOME變更為解壓oneproxy時所在的目錄
[root@HE4 oneproxy]# cat oneproxy.service #!/bin/bash # chkconfig: - 30 21 # description: OneProxy service. # Source Function Library . /etc/init.d/functions # OneProxy Settings ONEPROXY_HOME=/root/oneproxy ONEPROXY_SBIN="${ONEPROXY_HOME}/bin/oneproxy" ONEPROXY_CONF="${ONEPROXY_HOME}/conf/proxy.conf" ONEPROXY_PID="${ONEPROXY_HOME}/log/oneproxy.pid" RETVAL=0 prog="OneProxy" start() { echo -n $"Starting $prog ... " daemon $ONEPROXY_SBIN --defaults-file=$ONEPROXY_CONF RETVAL=$? echo } stop() { echo -n $"Stopping $prog ... " if [ -e ${ONEPROXY_PID} ]; then daemon kill -INT $(cat ${ONEPROXY_PID}) RETVAL=$? fi echo } restart(){ stop sleep 1 start } case "$1" in start) start ;; stop) stop ;; restart) restart ;; *) echo $"Usage: $0 {start|stop|restart}" RETVAL=1 esac exit $RETVAL
同時,將oneproxy.service中的ONEPROXY_HOME也改為解壓時的目錄
進入oneproxy中的bin目錄,使用mysqlpwd對密碼進行加密
[root@HE4 oneproxy]# cd bin/ [root@HE4 bin]# ls mysqlpwd oneproxy [root@HE4 bin]# ./mysqlpwd MANAGER 1C6D087BA5D2607A27DECB2F2AFE247E911E877A
編輯proxy.cnf中的內(nèi)容
[root@HE4 conf]# cat proxy.conf [oneproxy] keepalive = 1 event-threads = 4 proxy-group-policy.2 = test:read-slave log-file = log/oneproxy.log pid-file = log/oneproxy.pid lck-file = log/oneproxy.lck proxy-auto-readonly = 1 proxy-forward-clientip = 1 proxy-trans-debug = 1 proxy-address = :3307 mysql-version = 5.7.16 proxy-master-addresses.1 = 192.168.1.250:3306@test proxy-slave-addresses.2 = 192.168.1.248:3306@test proxy-slave-addresses.3 = 192.168.1.249:3306@test proxy-user-list = sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test proxy-user-group = test:sys_admin/1C6D087BA5D2607A27DECB2F2AFE247E911E877A@test proxy-part-template = conf/template.txt proxy-part-tables.1 = conf/part.txt proxy-part-tables.2 = conf/part2.txt proxy-part-tables.3 = conf/cust1.txt proxy-charset = utf8_bin proxy-secure-client = 127.0.0.1 # proxy-license = 32C54560E06EFF3E proxy-httpserver = :8080 proxy-httptitle = OneProxy Monitor
Part4:啟動Oneproxy
[root@HE4 oneproxy]# ./demo.sh [root@HE4 oneproxy]# ./oneproxy.service restart Stopping OneProxy ... [ OK ] Starting OneProxy ... [ OK ]
測試
Part1:Oneproxy狀態(tài)校驗
瀏覽器打開192.168.1.251:8080端口能夠看到oneproxy的管理頁面
這里可以看到主從的各種狀態(tài)信息。
Part2:負載均衡與讀寫分離校驗
[root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"select @@hostname;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE1 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"select @@hostname;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE2 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"select @@hostname;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE1 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"select @@hostname;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE2 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"select @@hostname;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE1 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"begin;select @@hostname;commit;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE3 | +------------+ [root@HE1 ~]# mysql -usys_admin -pMANAGER -h292.168.1.251 -P3307 -e"begin;select @@hostname;commit;" mysql: [Warning] Using a password on the command line interface can be insecure. +------------+ | @@hostname | +------------+ | HE3 | +------------+
可以看到HE1,HE2兩個slave作為負載均衡沒有問題,HE3作為寫服務器也沒有問題。
關于“如何在OneProxy的基礎上實行MySQL讀寫分離與負載均衡”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。
分享題目:如何在OneProxy的基礎上實行MySQL讀寫分離與負載均衡-創(chuàng)新互聯(lián)
網(wǎng)站地址:http://jinyejixie.com/article38/ccposp.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供App設計、服務器托管、外貿(mào)網(wǎng)站建設、網(wǎng)站策劃、品牌網(wǎng)站制作、網(wǎng)站導航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉載內(nèi)容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)