mysql proxy主從搭建讀寫分離全過程

2021-05-24 13:14:20 字數 3631 閱讀 9334

廢話不說!

mysql-proxy是什麼,大家都知道,不知道的就別往下看了...

首先搭建

mysql

主從資料庫,參考:

最新版,本文撰寫時最新版本為

mysql proxy 0.8.1 alpha

安裝mysql-proxy

步驟如下:

解壓mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz

tar zxvf mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit.gz

cp -r mysql-proxy-0.8.1-linux-glibc2.3-x86-32bit /usr/local/proxy-mysql

新建或編輯

/etc/mysql-proxy.cnf

檔案,新增以下內容

( 具體引數根據實際情況修改) :

vi /etc/mysql-proxy.cnf

[mysql-proxy]

admin-username = zhangdongyu

admin-password = 123123

daemon = true

keepalive = true

proxy-backend-addresses = 192.168.0.88:3306

proxy-read-only-backend-addresses = 192.168.0.88:3307

proxy-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

admin-lua-script = /usr/local/proxy-mysql/share/doc/mysql-proxy/admin-sql.lua

log-file = /usr/local/proxy-mysql/cn.log

log-level = debug

主要引數註解:

proxy-backend-addresses mysql

主庫(寫)位址

proxy-read-only-backend-addresses mysql

從庫(讀)位址

proxy-lua-script

讀寫分離指令碼

admin-lua-script admin

指令碼 admin-username

資料庫使用者名稱(主從上都需建立相同使用者)

admin-password

資料庫密碼

daemon daemon

程序執行

keepalive

保持連線(啟動程序會有

2 個,一號程序用來監視二號進行,如果二號程序死掉自動重建,此引數在舊版本中無法使用)

編輯profile/.bash_profile

指令碼 vi /etc/profile(

或者.bash_profile)

lua_path="/usr/local/proxy-mysql/share/doc/mysql-proxy/?.lua"

export lua_path

export path=$path:/usr/local/proxy-mysql/bin

:wqsource /etc/profile

為方便建立建立

mysql-proxy.sh

指令碼 #!/bin/bash

mode=$1

if [ -z "$mode" ] ; then

mode="start" fi

case $mode in

start)

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf>/usr/local/proxy-mysql/cn.log & ;;

stop)

killall -9 mysql-proxy ;;

restart)

if $0 stop ; then

$0 start

else

echo "restart failed!"

exit 1 fi

;;esac

exit 0

啟動mysql-proxy

sh 指令碼

啟動:./mysql-proxy.sh 或

./mysql-proxy.sh start

啟動日誌

重啟:./mysql-proxy.sh restart

停止:./mysql-proxy.sh stop

測試:

為達到測試效果,修改

admin-sql.lua

指令碼以下兩行

vi /usr/local/proxy-mysql/share/doc/mysql-proxy/rw-splitting.lua

if not proxy.global.config.rwsplit then

proxy.global.config.rwsplit =

end 重啟

mysql-proxy

** 開啟兩個終端分別連線**:

one:./mysql -h192.168.0.88 -uzhangdongyu -p123123 -p4040

two :

./mysql -h192.168.0.88 -uzhangdongyu -p123123 -p4040

可看到連線成功資訊:

one 客戶端: 執行

select

語句觀察資料庫

log 檔案

select * from z_member_info;

觀察主從庫日誌檔案,發現查詢發生在主庫?

主庫:192.168.0.88:3306

日誌檔案:

tail -f /usr/local/mysql/localstate/mysqlexecute.log

這是因為

mysql-proxy

**會檢測客戶端連線,當連線沒有超過

min_idle_connections

預設值時,不會進行讀寫分離,即查詢操作會發生到主庫上。

操作two

客戶端: 執行

select

語句觀察資料庫

log 檔案

select * from z_member_info;

觀察主從庫日誌檔案,發現主庫沒有任何記錄,查詢日誌記錄在從庫。

從庫:192.168.0.88:3306

日誌檔案:

tail -f /usr/local/mysql3307/localstate/mysqlexecute.log

操作兩個終端進行

insert

操作,會發現寫操作始終被主庫(

3306

)日誌檔案記錄。

至此mysql-proxy

安裝測試完成。

注:生產環境一定要根據實際情況配置相關檔案,至於

lua檔案強烈推薦讀者自行,目前正在研究

lua檔案的優化與定製,不久會發上來。

keepalived 主從搭建

基本環境 centos7 1 原始碼包安裝 cd usr local src 進入到準備放原始檔的目錄 root localhost src pwd usr local src root localhost src tar xvf keepalived 2.0.18.tar.gz 解壓 root l...

MySQL主從搭建筆記

作業系統 windows10,64,mysql版本 解壓方式安裝的mysql8.0.20 1.my.ini配置 master 主從 master設定 server id 1 log bin mysql bin binlog format row master配置完後,重啟master的mysql服務...

mysql主從複製搭建

我們採用自定義安裝模式 選擇32位或64位 預設即可 安裝完成 開始配置mysql 配置 使用安裝器是無法安裝多例項的,只能手動安裝。1 複製安裝好的3380資料夾到3381 2 進入3381 logs目錄下將所有檔案刪除 3 進入3381 data目錄,將所有的log檔案刪除 注意不是所有檔案哦!...