MySQL主从复制与读写分离

MySQL读写分离原理

  • 读写分离就是只在主服务器上写,只在从服务器上读。基于原理是让主数据库处理事务性查询,而从服务器处理select查询。数据库复制被用来把事务性查询导致的变更同步到群集中的从服务器。
  • Amoeba(变形虫)软件致力于MySQL的分布代理层式数据库前端,他主要为应用层访问MySQL时充当SQL路由,并具有负载均衡、高可用性、SQL过滤、读写分离、可路由相关到目标数据库,可并发请求多台数据库。通过Amoeba能够完成多数据源的高可用、负载均衡、数据切片的功能。

实验拓补图

MySQL主从复制与读写分离_第1张图片

实验环境

主机 IP地址 主要软件
主服务器 192.168.27.128 mysql5.7.17
从服务器1 192.168.27.139 mysql5.7.17
从服务器2 192.168.27.142 mysql5.7.17
Amoeba 192.168.27.145 amoeba-mysql-binary-2.2.0.tar.gz;jdk-6u14-linux-x64.bin
客服端 192.168.27.143

搭建MySQL主从复制

  • 之前搭建过MySQL主从复制,本次实验就不多做介绍,详细配置过程可以到上一篇文章中查看;
  • 在三台MySQL服务器中开放权限给Amoeba访问:

mysql -u root -p #进入MySQL

grant on . to test@'192.168.27.%' identified by '123.com';

搭建MySQL读写分离

1、在Amoeba主机上安装Java环境

mkdir /opt/abc

mount.cifs //129.168.27.1/mysql /opt/abc #挂载

cp /opt/abc/jdk-6u14-linux-x64.bin /usr/local

cd /use/local

chmod +x jdk-6u14-linux-x64.bin #执行脚本提权

./jdk-6u14-linux-x64.bin #执行安装脚本

mv jdk1.6.0_14 jdk1.6 #重命名

vim /etc/profile #编辑环境变量

export JAVA_HOME=/usr/local/jdk1.6        #JAVA家目录
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib   #指定运行库
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/bin  #识别JAVA命令
export AMOEBA_HOME=/usr/local/amoeba        #Amoeba家目录
export PATH=$PATH:$AMOEBA_HOME/bin          #识别Amoeba命令

source /etc/profire #刷新环境变量

2、安装并配置Amoeba软件

mkdir /usr/local/amoeba

cd /opt/abc

tar zxvf amoeba-mysql-binary-2.2.0.tar.gz /usr/local/amoeba #解压缩

chmod - 755 /usr/local/amoeba

/usr/local/amoeba/bin/amoeba

amoeba start|stop           #显示此内容说明Amoeba安装成功

vim /usr/local/amoeba/cnf/amoeba.xml

#--30行--
amoeba

#--32行--
123456

#--115行--
master

#--117行去掉注释--
master
slaves

MySQL主从复制与读写分离MySQL主从复制与读写分离

vim /usr/local/amoeba/cnf/dbServers.xml

#--23行注释掉--(默认进入test库,以防MySQL中没有test库时会报错)


#--26-29--去掉注释--
test
123.com

#--42-主服务器地址---

192.168.27.128

#--52-从服务器1-

192.168.27.139

#--59-从服务器2-

192.168.27.142

#--66行--


#--72行--
slave1,slave2

/usr/local/amoeba/bin/amoeba start #开启Amoeba

MySQL主从复制与读写分离_第2张图片MySQL主从复制与读写分离_第3张图片

3、客户机

yum install mqsql -y

mysql -u amoeba -p123456 -h 192.168.27.145 -P8066 #远程登录

4、测试
  • 1)、测试读操作,当在从服务器上关掉同步,并在两台从服务器上写入数据,使用客户机登录查询,多次查询时会分别出现两台从服务器中的写入数据。
  • 2)、测试写操作,当在从服务器上关掉同步,在客户机上写入数据,客户机上不会查询到写入数据,只会在主服务器上查询到写入数据。