目录
前言:
一,mysql读写分离
1,基本原理
MySQL读写分离基本原理是让master数据库处理写操作,slave数据库处理读操作。master将写操作的变更同步到各个slave节点。2,优点
3,引入amoeba
二,mysql读写分离搭建
1,环境:
2,安装jdk
3,测试jdk
4,安装amoeba
5,配置amoeba
6,启动
7,测试
继本专栏上一篇博文mysql主从备份之后的读写分离,实验过程中请先保证主从复制已成功完成。
进一步提高读写性能,增加冗余,提高可用性,主从只负责各自的读写,节约开销,slave可以单独设置一些参数来提升其读的性能
mysql是通过amoeba(变形虫)实现读写分离的,amoeba对客户端透明,具有负载均衡,高可用性,读写分离,可并发操作。
主从复制是两台主机,而读写分离需要新增加一台服务器作为主从服务器的代理服务器,也就是再加一台服务器,一共三台服务器,安装mysql
第三台代理服务器同样也需要安装mysql服务,请参照Mysql主从备份数据库服务器搭建
上传
解码
rpm -ivh jdk-8u181-linux-x64.rpm
配置环境变量
vi /etc/profile
在末尾添加如下
export JAVA_HOME=/usr/java/jdk1.8.0_181-amd64
export PATH=$PATH:$JAVA_HOME/bin
加载环境变量
source /etc/profile
java -version
如图所示成功
上传
解压
下载解压工具
yum -y install unzip
unzip unzip amoeba-mysql-3.0.5-RC-distribution.zip
修改配置文件
cd /root/amoeba-mysql-3.0.5-RC/conf/
vi dbServers.xml
${defaultManager}
64
128
3306
jpz
root
000000
500
500
1
600000
600000
true
true
true
192.168.100.140
192.168.100.150
1
slave
保存退出
vi amoeba.xml
8066
128
64
root
000000
${amoeba.home}/conf/access_list.conf
128
500
utf8
60
com.meidusa.toolkit.net.AuthingableConnectionManager
${amoeba.home}/conf/dbServers.xml
${amoeba.home}/conf/rule.xml
${amoeba.home}/conf/ruleFunctionMap.xml
${amoeba.home}/conf/functionMap.xml
1500
master
master
slave
true
保存退出
cd ..
vi jvm.properties
JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss512k -XX:PermSize=16m -XX:MaxPermSize=96m"
/root/amoeba-mysql-3.0.5-RC/bin/launcher
在mysql从服务器上开启3306端口
firewall-cmd --permanent --add-port=3306/tcp
firewall-cmd --reload
-测试的sql --在安装amoeba的服务器上登录mysql
mysql -h192.168.150.30 -uroot -p123456 -P8066
--分别在master、slave、amoeba上登录mysql
use zq
select * from user;
--在amoeba上插入数据 insert into user values(2,2);
--在master和slave上分别查看表中的数据
use jpz
select * from user;
--将master上的mysql服务停止,继续插入数据会发现插入不成功,但是能够查询
master:
systemctl stop mysqld
amoeba:
insert into user values(3,3);
--将master上的msyql服务开启,停止slave上的mysql,发现插入成功,但是不能够查询
master:
systemctl start mysqld
slave:
systemctl stop mysqld
amoeba:
insert into user values(3,3);
select * from user;