mysql oneproxy_利用oneproxy实现mysql读写分离搭建笔记
功能:
1.具有SQL白名單(防SQL注入)及IP白名單功能的SQL防火墻軟件
2.數(shù)據(jù)庫故障切換
3.讀寫分離
4.分庫分表
一、下載
oneproxy-rhel5-linux64-v6.0.0-ga.tar.gz
二、部署
master: 192.168.0.181 hostname:cen01
slave: 192.168.0.182 hostname:cen02
oneproxy: 192.168.0.183 hostname:cen03
系統(tǒng):全部是centos6.7
需要讀寫分離的庫名稱:mydata,表test01 (id int(3),name char(8)); 可不用先建好
總結(jié):
1.master與slave安裝好MYSQL,已做好主從復(fù)制,oneproxy不用安裝MYSQL
2.當(dāng)外來業(yè)務(wù)訪問數(shù)據(jù)庫時,只需直接訪問oneproxy機器的:3307端口就行了。它會直接調(diào)度master和slave節(jié)點。
mysql -uuser01 -puser01 -P3307 -h192.168.0.183
1.將軟件包解壓
tar -xzf oneproxy-rhel5-linux64-v6.0.0-ga.tar.gz -C /usr/local
2.配置oneproxy
cd /usr/local/oneproxy
vim ./demo.sh
將ONEPROXY_HOME的路徑改為軟件部署路徑:/usr/local/oneproxy
如下圖所示:
vim oneproxy.service
將ONEPROXY_HOME的路徑改為軟件部署的路徑:/usr/local/oneproxy
如下圖所示:
vim conf/proxy.conf
event-threads = 4 ? ? //并發(fā)線程數(shù),最大允許48個線程。通常可以設(shè)為CPU Core數(shù)量的兩倍
proxy-address = :3307 ? //設(shè)置對外提供訪問的端口
mysql-version = 5.6.25 ? //設(shè)置mysql版本
proxy-slave-addresses.1 = 192.168.0.182:3306@server1 ? ? ?//192.168.0.182為slave的IP,server1為服務(wù)組名稱,任意寫
proxy-slave-addresses.2 = 192.168.0.184:3306@server1 ? ? ?//填寫第二個slave的IP,如果有的話
proxy-master-addresses.1 = 192.168.0.181:3306@server1 ? ? //192.168.0.181為master的IP,server1為服務(wù)組名稱,任意寫
proxy-group-policy = server1:read_slave ? ? //設(shè)置策略為:在master寫,在slave讀
proxy-user-list = user01/1378F6CC3A8E8A43CA388193FBED5405982FBBD3@mydata ? ? ? ? ?//user01為用戶名,用于給oneproxy登錄后端MYSQL節(jié)點/后面的字符串是密碼,mydata是要讀寫分離的數(shù)據(jù)庫名稱
repadmin-username = repadmin ? ? ? ? //指定復(fù)制管理帳號的用戶名,后端MYSQL節(jié)點都要建
repadmin-password = 1378F6CC3A8E8A43CA388193FBED5405982FBBD3 ? ? ? ? ?//指定復(fù)制帳號的密碼,三臺mysql都要有
保存退出
登錄所有后端MYSQL(master/slave節(jié)點),執(zhí)行:
由于已經(jīng)設(shè)置了主從復(fù)制,所以只對master添加用戶即可,創(chuàng)建用戶操作會同步到slave
create user user01;
grant all on mydata.* to user01@'%' identified by 'user01';
create user 'repadmin'@'%' identified by 'user01'; ? ? ? ? ? //oneproxy可能通過該帳號在后端MYSQL節(jié)點執(zhí)行:show master/slave status
grant replication slave on *.* to 'repadmin'@'%'; ? ? ? //以便用來取得復(fù)制的運行數(shù)據(jù)
grant replication client on *.* to 'repadmin'@'%';
flush privileges;
退出
三、修改系統(tǒng)環(huán)境(master/slave/onepxory節(jié)點)
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
ulimit -n 65535
echo "echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse" >> /etc/profile
echo "echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle" >> /etc/profile
echo "ulimit -n 65535" >> /etc/profile
iptables -I INPUT -m state --state NEW -p tcp --dport 3307 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 4041 -j ACCEPT
iptables -I INPUT -m state --state NEW -p tcp --dport 8080 -j ACCEPT
service iptables save
四、啟動oneproxy
cd /usr/local/oneproxy
chmod 755 demo.sh
./demosh
./oneproxy.service restart
五、訪問oneproxy管理界面
(oneproxy不必安裝web服務(wù))
六、讀寫分離檢驗
在master或slave或其它任意一臺非集群的機器執(zhí)行:
mysql -utest -ptest -h192.168.0.183 -P3307 -e"select @@hostname;" ? ? ? //往oneproxy提交查詢操作,顯示的是slave主機名
mysql -utest -ptest -h192.168.0.183 -P3307 -e"begin;select @@hostname;commit;" ? ? ?//往oneproxy提交寫操作,顯示的是master主機名
可以進一步校驗:
在master或slave或其它任意一臺機,或者其它連接mysql的工具(Navicat),執(zhí)行如下命令:
mysql -uuser01 -puser01 -P3307 -h192.168.0.183 -e"insert into mydata.test01 values (5,'aaaaa')"
在master和slave的數(shù)據(jù)庫中可以查詢到以下結(jié)果:
當(dāng)執(zhí)行:drop table test01時出現(xiàn)報錯:
ERROR 1044 (42000): Access denied due to security policy, DDL disabled or DML restricted!
解釋:由于OneProxy為了安全起見,默認(rèn)是禁止DDL語句的。
解決辦法:從OneProxy管理端口,運行如下命令:
mysql -uadmin -pOneProxy -P4041 -h192.168.0.183 -e"set gaccess server1 0;" ? ? ?//0表示允許創(chuàng)建/刪除表,1表示不允許創(chuàng)建/刪除
此時就可以刪除或者創(chuàng)建表了。
登錄管理界面,可看到有相應(yīng)記錄:
可見,當(dāng)往oneproxy寫數(shù)據(jù)時,會自動同步到master上,而master通過主從復(fù)制功能將數(shù)據(jù)同步到slave。
檢查后端數(shù)據(jù)庫節(jié)點狀態(tài):
mysql -uadmin -pOneProxy -P4041 -h192.168.0.183 --protocol=TCP ? ? ? //進入管理端口(默認(rèn)端口為4041),IP為部署了oneproxy的IP
list help; ? ? //顯示幫助
list backend; ? ? ?//輸入此內(nèi)容,回車
IS_M:表示這臺機器是否是一臺Master
IS_S:表示是否為一臺Slave,
MFile:表示主庫上的Binlog位置
DFile:表示備機上IO線程
RFile:SQL線程處理的位置
部署完成。
如有錯誤,可查看log/proxy.log日志。
總結(jié)
以上是生活随笔為你收集整理的mysql oneproxy_利用oneproxy实现mysql读写分离搭建笔记的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: windows10mysql安装包_wi
- 下一篇: linux cmake编译源码,linu