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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

proxy实现 mysql 读写分离

發(fā)布時間:2023/11/27 数据库 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 proxy实现 mysql 读写分离 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

實現(xiàn) mysql 讀寫分離


圖解:


環(huán)境:
iptables 和 selinux 關閉
proxy:test2 172.25.1.2
Master: test3 172.25.1.3
Slave:test4 172.25.1.4
環(huán)境已經(jīng)實現(xiàn) test3(master) 和 test4(slave) 的主從復制

Server2:

[root@test2 ~]# ls
mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz
[root@test2 ~]# tar zxf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -C
/usr/local
[root@test2 ~]# cd /usr/local
[root@test2 local]# ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit/ mysql-proxy

[root@test2 local]# vim ~/.bash_profile

[root@test2 local]# source ~/.bash_profile??????????? //使環(huán)境變量生效
[root@test2local]# cd /usr/local/mysql-proxy/share/doc/mysql-proxy
[root@test2mysql-proxy]# vim rw-splitting.lua??????????????????? //修改讀寫分離 lua 腳本

mysql proxy 會檢測客戶端連接, 當連接沒有超過 max_idle_connections 值時, 不會進
行讀寫分離, 即查詢操作會發(fā)生到 master 上。

[root@test2 local]# cd /usr/local
[root@test2 local]# cd mysql-proxy
[root@test2 mysql-proxy]# mkdir conf
[root@test2 mysql-proxy]# cd conf
[root@test2 conf]# vim mysql-proxy.conf

[mysql-proxy]
user=root
proxy-address=0.0.0.0:3306
proxy-backend-addresses=172.25.254.11:3306
proxy-read-only-backend-addresses=172.25.254.12:3306
proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua
log-file=/usr/local/mysql-proxy/logs/mysql-proxy.log
log-level=debug
daemon=true
keepalived=true

[root@test2conf]#mysql-proxy --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf

[root@test2 conf]# mkdir ../logs
[root@test2 conf]# chmod 660 /usr/local/mysql-proxy/conf/mysql-proxy.conf???????????? //配置文件必須是 660 權限
[root@test2 conf]# mysql-proxy? --defaults-file=/usr/local/mysql-proxy/conf/mysql-proxy.conf ? ? ? ? //再次執(zhí)行啟動配置文件


[root@test2 conf]# netstat -antlp????????? //查看端口

主備 mysql 開啟服務
Test3 和 test4 都需要做解壓 mysql 并已搭建好主備模式


Test3:

mysql> grant insert,update on?westos.* to cxx@'%' identified by '@Caoxingxing123';
mysql> show master status;
mysql> show slave status;



?

Test4:

mysql> stop slave;
mysql>change master to master_host='172.25.1.3',master_user='repl',master_password='@Caoxingxing123', master_auto_position=1;
mysql> start slave


mysql> show slave status\G;

Test3:

mysql> show databases;

?

mysql> CREATE DATABASE westos;
mysql> USE westos;
mysql> CREATE TABLE userlist(
-> username varchar(10) not null,
-> password varchar(30) not null
-> );
mysql> select * from userlist;

Test4:

mysql> show databases;

mysql> use westos;
mysql> select * from userlist;??????????????????? //數(shù)據(jù)庫已經(jīng)同步過來了

客戶端測試:

[root@foundation1 ~]# mysql -u root -h 172.25.1.2 -p????????????? //會出現(xiàn)如下情況
ERROR 1045 (28000): Unknown error 1045


//注意:root 用戶需要在 master 和 slave 做授權
test3 和 test4 都需要執(zhí)行

mysql> grant insert,update on westos.* to cxx@'%' identified by? '@Caoxingxing123';

//再次嘗試登陸

[root@foundation1 ~]# mysql -h 172.25.1.2 -u cxx -p westos

MySQL [(none)]> use westos;
MySQL [westos]> show tables;

MySQL [westos]> insert into userlist values('user1','111');

?

MySQL [westos]> select * from userlist;??????????? //只能寫不能讀


master 和 slave 端都可以查看到剛插入的數(shù)據(jù)
Test3:

Test4:


當連接一個時:
test3:通過監(jiān)控查看連接情況

[root@test3 ~]# yum install lsof -y
[root@test3 ~]# lsof -i :3306???????????????? //下載所需的監(jiān)控


test4:通過監(jiān)控查看連接情況

[root@test4 ~]# yum install lsof -y
[root@test4 ~]# lsof -i :3306


當連接兩個時:

[kiosk@foundation1 ~]$ mysql -h 172.25.1.2 -u cxx -p westos??????????????//加一個??

Test3:

[root@test3 mysql]# lsof -i :3306?????????

Test4:

[root@test4 mysql]# lsof -i :3306

當連接三個時(此時已超過最大連接數(shù)):

[kiosk@foundation1 ~]$ mysql -h 172.25.1.2 -u cxx -p westos

Test3:


Test4:


此時在最后一個連接的客戶端寫數(shù)據(jù)

MySQL [westos]> insert into userlist values ('user2','222');

Test3 查看數(shù)據(jù):


Test4 查看數(shù)據(jù):

實現(xiàn)了讀寫分離,當讀數(shù)據(jù)的時候第三個連接到的是test4 ,但
寫數(shù)據(jù)時自動連接 test3 從而保存數(shù)據(jù)。
總結:
首先連接的是 master,所以此時是對 master 讀寫,還沒有讀寫分離,只有當連接數(shù)
大于設置的最大連接數(shù)時才會出現(xiàn)讀寫分離。
之前設置了最大連接數(shù)為 2,最小連接數(shù)為 1。所以默認為當連接數(shù)(客戶端訪問量)
為 1 時,連接的是 master,連接數(shù)為 2 時,連接的也是 master;只有當連接數(shù)大于 2 時,
后面連接的為 slave,且當讀的時候訪問的是 slave,寫的時候訪問的是 master(原因是:
master 和 slave 主從同步是單向的,所以寫數(shù)據(jù)的時候如果寫到 slave,slave 是不會同步
給 master 的。讀的話就可以,因為數(shù)據(jù)的一致性, slave 和 master 的數(shù)據(jù)始終是相同的)。

總結

以上是生活随笔為你收集整理的proxy实现 mysql 读写分离的全部內容,希望文章能夠幫你解決所遇到的問題。

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

歡迎分享!

轉載請說明來源于"生活随笔",并保留原作者的名字。

本文地址:proxy实现 mysql 读写分离