mysql-8.0.12讀寫分離

安裝包下載地址:https://downloads.mysql.com/archives/proxy/mysql

 

環境linux

proxy:172.16.1.20sql

master:172.16.1.21數據庫

slave1:172.16.1.22vim

slave2:172.16.1.23後端

 

本文選用mysql-proxy做爲轉發中間件, 版本爲mysql-proxy-0.8.5-linux-el6-x86-64bit服務器

 

一:在開啓主從複製的狀況下,在master建立供 proxy鏈接的帳號(這樣就等於同時在全部mysql上建立了鏈接帳號)tcp

mysql > create user 'rw'@'%' identified with mysql_native_password by 'tqw961110';ide

mysql > grant all on *.* to 'rw'@'%';性能

 

二:停用slave(全部mysql都執行一遍)

mysql > stop slave;

mysql > reset slave all;

 

三:解壓安裝包並進入

cd  /tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/

mkdir  lua     建立存放lua腳本的目錄

mkdir  logs   建立存放日誌的目錄

cp share/doc/mysql-proxy/rw-splitting.lua ./lua #複製讀寫分離配置文件

cp share/doc/mysql-proxy/admin-sql.lua ./lua #複製管理腳本

vim /etc/mysql-proxy.cnf #建立配置文件

[mysql-proxy]
user=root
admin-username=rw                              #proxy的鏈接帳號(主從都要有)
admin-password=tqw961110                  #密碼
proxy-address=172.16.1.20:4040          #proxy運行的地址
proxy-read-only-backend-addresses=172.16.1.22,172.16.1.23               #只讀服務池
proxy-backend-addresses=172.16.1.21                                                   #寫服務池
proxy-lua-script=/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/lua/rw-splitting.lua                  #讀寫腳本存放位置
admin-lua-script=/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/lua/admin-sql.lua                   #管理腳本存放位置
log-file=/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/logs/mysql.log                                       #日誌存放位置
log-level=info                        #定義log日誌級別,由高到低分別有(error|warning|info|message|debug)

daemon=true                         #以守護進程的方式運行
keepalive=true                       #mysql-proxy崩潰時,嘗試重啓。

 

四:修改讀寫腳本

if not proxy.global.config.rwsplit then
proxy.global.config.rwsplit = {
min_idle_connections = 1,          #默認超過4個鏈接時纔開始讀寫分離,這裏修改成1.
max_idle_connections = 1,         #默認8,改成1。

is_debug = false
}
end

 

啓動proxy

/tools/mysql-proxy-0.8.5-linux-el6-x86-64bit/bin/mysql-proxy    --defaults-file=/etc/mysql-proxy.cnf

 

查看日誌

已經將後端mysql加進鏈接池

 

查看端口

netstat -atunlp | grep 4040

tcp        0      0 172.16.1.20:4040        0.0.0.0:*               LISTEN      33297/mysql-proxy

 

測試讀寫性能

在proxy服務器上登錄mysql(proxy服務器須要有mysql命令。能夠yum -y install mysql)

mysql  -h  172.16.1.20  -urw -ptqw961110  --port=4040

 

分別在主從數據庫插入數據

create  database test;

use test;

create table test(id int(10),name varchar(20));

insert into t values(1,'this_is_master'); !!!!在slave上則是執行 insert into t values(1,'this_is_slave');

 

此時master與slave中的test庫test表的內容是不一樣的。

 

在proxy服務器上

use test;

select * from test;

 

顯示的是slave的內容

 

再在proxy服務器上插入數據試試

insert into t values(1,'this_is_proxy');

select * from test;

 

顯示的依舊是slave的內容

 

可是在master服務器上查看內容

select * from test;

已經能夠看到從proxy插入的數據

 

經測試,寫操做只會在master上進行,而讀操做只會在slave上進行。

至此,mysql讀寫分離成功。

 

若想關閉proxy

killall  -9  mysql-proxy

相關文章
相關標籤/搜索