系统版本:CentOS 6.5   MySQL版本:mysql-5.5.38   Amoeba版本:amoeba-mysql-binary-2.2.0  

JDK版本:jdk-6u14-linux-x64.bin


案例拓扑图:

MySQL的主从复制与读写分离技术实例(二)读写分离_第1张图片

案例环境:

MySQL的主从复制与读写分离技术实例(二)读写分离_第2张图片


搭建MySQL的读写分离

一、搭建MySQL读写分离之前需要先完成MySQL的主从复制,主从复制的相关操作可以参考:《MySQL的主从复制与读写分离技术实例(一)主从复制》


二、安装Amoeba软件

Amoeba这个软件致力于MySQL的分布式数据库前端代理层,主要为应用层访问MySQL时充当SQL路由功能,并具有负载均衡、高可用性、SQL过滤、读写分离等功能。Amoeba是基于jdk1.5开发的,需要应用到Java环境中,并且建议使用jdk1.5或jdk1.6的版本搭建,我这里软件已经准备好了

MySQL的主从复制与读写分离技术实例(二)读写分离_第3张图片


1.在Amoeba服务器上安装Java环境

wKiom1bT_HeBLtaPAAAwvxJo21Y967.jpg


2.将jdk安装目录移动到/usr/local/jdk1.6,并在全局变量中添加如下配置项,指定jdk安装目录、类路径、Amoeba安装目录

wKioL1bT_6aC_SIsAAAhqx-EFjs449.jpg

wKiom1bT_1eAh7zXAABSLpJ6N8w076.jpg


3.刷新环境变量,并查看刚刚安装的java版本

wKioL1bUAN_D0epUAABJUv1v7MY673.jpg

Jave环境配置成功


4.安装Amoeba软件,注意全局变量中已经指定好Amoeba安装目录,直接解压到此目录即可

wKioL1bUBWTiWcBIAABPaC8aOVI884.jpg


三、配置Amoeba服务器,实现MySQL的读写分离和两个Slave服务器的负载均衡

1.在三台MySQL服务器上分别开放权限给Amoeba访问,这里用Master说明

wKioL1bUCACCKsWUAAAPD6NsvNA265.jpg

wKioL1bUB8-gjMA0AAAZhRmLB5k165.jpg


2.修改Amoeba服务器的代理配置文件amoeba.xml,修改以下红方框中的内容:

wKioL1bUCOnB6n37AAAXs7HEnDI258.jpg

MySQL的主从复制与读写分离技术实例(二)读写分离_第4张图片


MySQL的主从复制与读写分离技术实例(二)读写分离_第5张图片


3.修改Amoeba服务器对后端MySQL做配置的dbServers.xml文件,同样修改以下红方框的内容:

wKiom1bUDrDjCZi4AAAYubtq-gw308.jpg

wKiom1bUEECgndSkAABG7fQLleA553.jpg


MySQL的主从复制与读写分离技术实例(二)读写分离_第6张图片


4.修改好以后,启动Amoeba执行后台运行,默认端口号tcp的“8066”,注意防火墙

wKiom1bUGnWQRpZTAAAXCZTJ3uk881.jpg

wKiom1bUIi_SYwC5AAA9x5U_qyY524.jpg


四、测试

1.用客户机通过amoeba代理服务器访问MySQL

wKioL1bUJymza2QiAAAYPMHUbnQ798.jpg


2.在Master上创建一个表,然后同步到各从服务器上

MySQL的主从复制与读写分离技术实例(二)读写分离_第7张图片

同步完成后关闭两台从服务器的同步功能

wKioL1bUKeyjYUSiAAAJAbZEznc734.jpg


3.在主服务器Master上向表中添加内容

wKiom1bUKj6jG6_eAAAV90wp9R0019.jpg


在从服务器Slave1和Slave2分别插入下面内容

Slave1:

wKioL1bUK8bBCXqiAAAWCCWI4bM364.jpg

Slave2:

wKiom1bUK2GjtUlxAAAWD6f2cLs068.jpg


4.测试从服务器的负载均衡,用客户机进行读操作

MySQL的主从复制与读写分离技术实例(二)读写分离_第8张图片


5.测试读写分离,在客户机上进行写操作,然后用客户端是查询不到刚刚写入的内容的

MySQL的主从复制与读写分离技术实例(二)读写分离_第9张图片


只有在Master主服务器上才能查询到,这也说明写操作是在Master上进行的,也就实现了读写分离

MySQL的主从复制与读写分离技术实例(二)读写分离_第10张图片