搭建MySQL代理服务器实现读写分离+主从同步

2014-11-24 17:22:11 · 作者: · 浏览: 1

实验需求:


1.配置2台MySQL服务器(192.168.100.2,192.168.100.3)+1台代理服务器(192.168.100.1),实现MySQL代理的读写分离。


2.用户只需要访问MySQL代理服务器,实际的SQL查询、写入操作交给后台的2台MySQL服务器来完成。


3.2台MySQL服务器实现主从同步,其中Master服务器允许SQL查询、写入,Slave服务器只允许SQL查询。


一 .MASTER数据库服务器(192.168.100.2)的配置


1.安装软件包(本实验采用MySQL5.6版本)


# rpm -qa | grep -i mysql


MySQL-shared-5.6.15-1.el6.x86_64


MySQL-devel-5.6.15-1.el6.x86_64


MySQL-embedded-5.6.15-1.el6.x86_64


MySQL-test-5.6.15-1.el6.x86_64


MySQL-server-5.6.15-1.el6.x86_64


MySQL-client-5.6.15-1.el6.x86_64


MySQL-shared-compat-5.6.15-1.el6.x86_64




2.启动服务并登录数据库本机对代理服务器做用户授权


# service mysql start && chkconfig mysql on


mysql> grant all on *.* to proxyuser@"192.168.100.1" identified by "123456";


3.创建测试数据库和表


mysql> create database proxydb;


mysql> create table proxydb.proxytab(id int);


mysql> insert into proxydb.proxytab values (2);


二 .SLAVE数据库服务器(192.168.100.3)的配置


1.安装软件包


2.启动服务并登录数据库本机对代理服务器做用户授权


# service mysql start && chkconfig mysql on


mysql> grant all on *.* to proxyuser@"192.168.100.1" identified by "123456"; //与MASTER数据库服务器做一样的授权


3.创建测试数据库和表


mysql> create database proxydb; //创建一样的库和表


mysql> create table proxydb.proxytab(id int);


mysql> insert into proxydb.proxytab values (3); //为了能测试区分2台不同数据库服务器,先插入不同数据


三.MySQL代理服务器配置


1.在做代理服务器上测试授权用户能否登录2台数据库服务器


# mysql -h192.168.100.2 -uproxyuser -p123456 //登录MASTER服务器


mysql> select * from proxydb.proxytab;


+------+


| id |


+------+


| 2 |


+------+


1 row in set (0.00 sec)




# mysql -h192.168.100.3 -uproxyuser -p123456 //登录SLAVE服务器


mysql> select * from proxydb.proxytab;


+------+


| id |


+------+


| 3 |


+------+


1 row in set (0.00 sec)


2.释放3306端口


# service mysqld stop


# chkconfig mysqld off


# netstat -tulnp | grep :3306


3.安装提供代理服务器的软件包


# tar zxvf mysql-proxy-0.8.3-linux-rhel5-x86-64bit.tar.gz


# mv mysql-proxy-0.8.3-linux-rhel5-x86-64bit /usr/local/mysql-proxy //此包为绿色免安装


# yum -y install lua //此软件使用LUA脚本语言,因此需要安装好lua软件包


代理服务启动时 会设置 负责写的数据库 负责读数据库服务器


调用脚本来区分用户的访问类型


指定自己监听的端口


4.启动代理服务


cd /usr/local/mproxy/bin/


使用bin目录下的mysql-proxy脚本来启动代理服务


# ./mysql-proxy -P 192.168.100.1:3306 -r 192.168.100.3:3306 -b 192.168.100.2:3306 -s /usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua &


主要命令选项:


-P:指定代理监听的IP地址、端口


-r:指定读服务器的IP地址、端口


-b:指定写服务器的IP地址、端口


-s:指定lua脚本文件


--keepalive:如果服务进程崩溃,尝试重启此进程


5.查看代理进程是否运行


# jobs


# netstat -tulnp | grep :3306


tcp 0 0 192.168.100.1:3306 0.0.0.0:* LISTEN 3314/mysql-proxy


//代理进程必须处于运行状态,客户端才能通过代理服务访问到后端的数据库服务器。


6.查看读写分离脚本


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


……


40 min_idle_connections = 4, //默认并发请求大于4才实行读写分离


41 max_idle_connections = 8,