一:读写分离架构图

二:安装配置MySQL-Proxy

三:测试读写分离

四:添加MySQL-Proxy 为系统服务




1.1读写分离架构图

MySQL读写分离意义 mysql读写分离是什么_lua

1.Slave-1不接收写,也不接收读


2.Slave-1有中继日志,也有二进制日志,因为它需要接收Slave-1发送过来的数据,又要把数据发送给其它从服务器,但是它不需要存储数据。


3.因为Slave-1不需要存储数据,所以使用black hole存储引擎





2.1下载MySQL-Proxy

http://dev.mysql.com/downloads/mysql-proxy/

MySQL读写分离意义 mysql读写分离是什么_后端_02




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'

MySQL读写分离意义 mysql读写分离是什么_MySQL读写分离意义_03





3.1客户端测试,删除任意一个数据库,然后查看是在哪台服务器上执行的

MySQL读写分离意义 mysql读写分离是什么_mysql_04

MySQL读写分离意义 mysql读写分离是什么_mysql_05



mysql> DROP DATABASE b3;



MySQL读写分离意义 mysql读写分离是什么_后端_06

MySQL读写分离意义 mysql读写分离是什么_后端_07

MySQL读写分离意义 mysql读写分离是什么_后端_08





3.2客户端测试,执行查询操作,再次查看执行是在哪台服务器上

MySQL读写分离意义 mysql读写分离是什么_mysql_09

MySQL读写分离意义 mysql读写分离是什么_lua_10






3.3 修改rw-splitting.lua文件

MySQL读写分离意义 mysql读写分离是什么_mysql_11

修改默认连接数,如果不修改连接数的话要达到连接数为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














转载于:https://blog.51cto.com/fanfusuzi/1673854