mysql讀寫分離-mysql-proxy的配置

 

讀寫分離介紹

讀寫分離適合於讀特別多的場景,一臺只寫,一臺只讀,提升讀的效率。mysql

 

實現的思路

前提:linux

讀寫分離創建在兩臺機器上,而且這兩臺機器是作了主從複製的,主庫只寫,從庫只讀,從而實現的。sql

 

實現:vim

第一種:後端

在主庫建立一個只寫的用戶,而從庫建立一個只寫的用戶,讓程序去鏈接不一樣的服務器可達到讀寫分離的效果。服務器

第二種:ide

經過代理軟件,這種的好處是程序不須要關心寫和讀的操做分別鏈接的哪臺服務器,只管往代理機器發便可,代理軟件進行判斷髮往不一樣的mysql服務器。測試

經過代理實現的軟件有:mysql-proxy,amoebalua

 

代理方式的實現

圖解:spa

 

環境:

須要開三臺機器。

192.168.101  # 主庫-只寫

192.168.102  # 從庫-只讀

192.168.100  # 代理

 

安裝lua腳本語言:

# 這個是mysql-proxy須要的

官方下載地址:

http://www.lua.org/ftp/

(1)安裝依賴
yum install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make readline-devel -y

(2)下載包
wget http://www.lua.org/ftp/lua-5.3.5.tar.gz -P /opt/

(3)解壓包
cd /opt/
tar xf lua-5.3.5.tar.gz

(4)修改Makefile文件
cd /opt/lua-5.3.5/
vi Makefile
# 設置 INSTALL_TOP= /usr/local/lua

(5)編譯
make linux && make install

(6)添加環境變量
vim /etc/profile

添加:
export LUA_HOME=/usr/local/lua
export PATH=$PATH:$LUA_HOME/bin

環境變量生效:
source /etc/profile

 

安裝mysql-proxy:

(1)    下載mysql-proxy包

wget https://cdn.mysql.com/archives/mysql-proxy/mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz -P /opt/

 

(2)    解壓包和建立軟鏈接

tar xf mysql-proxy-0.8.5-linux-el6-x86-64bit.tar.gz

ln -s mysql-proxy-0.8.5-linux-el6-x86-64bit mysql-proxy085

 

(3)    建立logs目錄

mkdir /opt/mysql-proxy085/logs

 

(4)    添加環境變量

echo "PATH=/opt/mysql-proxy085/bin/:$PATH" >> /etc/profile

source /etc/profile

 

(5)    配置代理文件

vim /etc/mysql-proxy.cnf

配置內容:

[mysql-proxy]
# 運行mysql-proxy用戶
user=root
# mysql-proxy鏈接後端mysql服務器的用戶
admin-username=mysql_proxy_user
# mysql-proxy鏈接後端mysql服務器的密碼
admin-password=123456
# 代理的監聽地址端口,默認端口4040
proxy-address=0.0.0.0:3307
#指定後端主master寫入數據
proxy-backend-addresses=192.168.1.101:3306
#指定後端從slave讀取數據
proxy-read-only-backend-addresses=192.168.1.102:3306
#指定讀寫分離配置文件位置
proxy-lua-script=/opt/mysql-proxy085/share/doc/mysql-proxy/rw-splitting.lua
#日誌位置
log-file=/opt/mysql-proxy085/logs/mysql-proxy.log
#定義log日誌級別,由高到低分別有(error|warning|info|message|debug)
log-level=debug
#以守護進程方式運行
daemon=true
#mysql-proxy崩潰時,嘗試重啓
keepalive=true

# 配置參數自行修改

 

(6)    修改配置文件權限

chmod 660 /etc/mysql-proxy.cnf

 

(7)    主庫添加受權用戶

grant all privileges on *.* to 'mysql_proxy_user'@'192.168.1.%' identified by '123456';

flush privileges;

 

(8)    啓動代理

mysql-proxy --defaults-file=/etc/mysql-proxy.cnf

 

(9)    鏈接經過代理帳戶鏈接代理開啓的ip及端口

注:前提你鏈接的這臺機器得弄個mysql客戶端

# 測試的話:mysql包解壓了,添加環境變量便可

# 後端的話:直接經過模塊就鏈接1.100機器3307端口便可

mysql -umysql_proxy_user -p123456 -h192.168.1.100 --port=3307

 

(10) 成功

注:lua是必需要安裝的

 

 

 

 

試驗結果:

注:寫操做,主從兩臺機器都會操做,由於他們是主從複製的。

想要看出效果須要修改lua腳本,由於它有限制(表示多少鏈接纔開啓讀寫分離):

vim /opt/mysql-proxy085/share/doc/mysql-proxy/rw-splitting.lua

# min_idle_connnections參數表示最少多少個鏈接,纔開始讀寫分離

 

查詢讀寫次數的sql語句:

show global status where Variable_name in('com_select','com_insert','com_delete','com_update');

show global staus like 'com_select';  # 單個的

相關文章
相關標籤/搜索