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

实验需求:

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, 

 

相关推荐