日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql oneproxy_利用oneproxy实现mysql读写分离搭建笔记

發(fā)布時間:2024/10/14 数据库 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql oneproxy_利用oneproxy实现mysql读写分离搭建笔记 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

功能:

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。