一:讀寫分離架構圖mysql
二:安裝配置MySQL-Proxylinux
三:測試讀寫分離sql
四:添加MySQL-Proxy 爲系統服務數據庫
1.1讀寫分離架構圖後端
1.Slave-1不接收寫,也不接收讀 bash
2.Slave-1有中繼日誌,也有二進制日誌,由於它須要接收Slave-1發送過來的數據,又要把數據發送給其它從服務器,可是它不須要存儲數據。 服務器
3.由於Slave-1不須要存儲數據,因此使用black hole存儲引擎架構
2.1下載MySQL-Proxyide
http://dev.mysql.com/downloads/mysql-proxy/測試
2.2解壓縮,並剪切到/usr/local下
# tar xf mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit.tar.gz # mv mysql-proxy-0.8.5-linux-glibc2.3-x86-64bit /usr/local/mysql-proxy # useradd -r mysql-proxy # chown -R root.mysql-proxy mysql-proxy/
2.3添加bin目錄到$PATH中
# vi /etc/profile.d/mysql-proxy.sh export PATH=$PATH:/usr/local/mysql-proxy/bin # . /etc/profile.d/mysql-proxy.sh
2.4參數說明
2.4.1代理相關的參數
-P, --proxy-address=<host:port> 工做在哪一個端口上 -r,--proxy-read-only-backend-addresses=<host:port> 只讀後端 -b,--proxy-backend-addresses=<host:port> 可讀可寫的後端 --proxy-connect-timeout 鏈接超時時間 --proxy-read-timeout 讀超時時間 --proxy-write-timeout 寫超時時間 -s, --proxy-lua-script=<file> 爲了實現代理功能,lua腳本的文件路徑
2.4.2管理相關的參數
--admin-address=host:port:指定管理員主機及服務端口,默認值爲localhost:4041 --admin-lua-script=script_file:指定管理模塊的lua腳本文件 --admin-username=user:指定登陸到mysql-proxy管理界面的用戶名 --admin-password=pass:指定登陸到mysql-proxy管理界面的用戶密碼
2.4.3應用自己的參數
--defaults-file=<file> 默認讀取的配置文件 --daemon 以守護進程模式運行 --user=<user> 用戶
2.5啓動MySQL-Proxy,並查看log日誌
mysql-proxy --daemon --log-level=debug --log-file=/var/log/mysql-proxy.log --plugins='proxy' --proxy-backend-addresses='192.168.1.112:3306' --proxy-read-only-backend-addresses='192.168.1.113:3306' --proxy-lua-script='/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua' --plugins='admin' --admin-username='admin' --admin-password='admin' --admin-lua-script='/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua'
3.1客戶端測試,刪除任意一個數據庫,而後查看是在哪臺服務器上執行的
mysql> DROP DATABASE b3;
3.2客戶端測試,執行查詢操做,再次查看執行是在哪臺服務器上
3.3 修改rw-splitting.lua文件
修改默認鏈接數,若是不修改鏈接數的話要達到鏈接數爲4時纔會啓用讀寫分離
4.1在/etc/rc.d/init.d/目錄下建立mysql-proxy文件
# vi /etc/rc.d/init.d/mysql-proxy # chmod +x /etc/rc.d/init.d/mysql-proxy
4.2爲服務腳本提供配置文件/etc/sysconfig/mysql-proxy
# vi /etc/sysconfig/mysql-proxy # Options for mysql-proxy ADMIN_USER="admin" ADMIN_PASSWORD="admin" ADMIN_ADDRESS="" ADMIN_LUA_SCRIPT="/usr/local/mysql-proxy/lib/mysql-proxy/lua/admin.lua" PROXY_ADDRESS="0.0.0.0:3306" PROXY_USER="mysql-proxy" PROXY_OPTIONS="--daemon --log-level=info--log-file=/var/log/mysql-proxy.log --plugins=proxy --plugins=admin--proxy-backend-addresses=192.168.1.112:3306--proxy-read-only-backend-addresses=192.168.1.113:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua"
4.3把mysql-proxy加入系統服務,並設置啓動級別
# chkconfig --add mysql-proxy # chkconfig mysql-proxy --level 345 on
4.4使用service啓動mysql-proxy
# service mysql-proxy start