实验拓扑图:

2)一台Amoeba调度服务器:
IP地址:192.168.80.20(amoeba)
所需软件安装:jdk-8u144-linux-x64.tar.gz
amoeba-mysql-3.0.5-RC-distribution.zip

保存并退出
[root @ master]#服务ntpd重新启动
[root @ master]#服务防火墙停止
[root @ master]#setenforce 0 >
第二:源代码编译并安装mysql
这里参考https://blog.51cto.com/12227558/2074113,源代码安装和配置mysql
三:配置主服务器的mysql
[root @ master]#vi/etc/my.cnf
//在[mysqld]下配置
server_id = 11
log_bin = master_bin
log_slave_updates = true

第二步是配置从属服务器slave01(192.168.80.40)
[root @ slave01]#服务防火墙停止
[root @ slave01]#setenforce 0
:设置时间同步(与主服务器同步)
[root @ slave01]#yum install-y ntpdate
[root @ slave01]#ntpdate 192.168.80.30//手动同步时间
[root @ slave01]#echo”/30 \\ */usr/sbin/ntpdate 192.168.80.30″ \ gt; \ gt;/var/spool/cron/root
//编写计划任务,每隔30分钟,时间会自动同步
[root @ slave01]#crontab \ ndash; l//查看预定的任务
第二:源代码编译并安装mysql
这里参考https://blog.51cto.com/12227558/2074113,源代码安装和配置mysql
三:配置slave01奴隶服务器mysql
[root @ slave01]#vi/etc/my.cnf
server_id = 22
relay_log = relay-log-bin
> relay_log_index = slave-relay-bin.index

mysql \ gt;启动奴隶;
mysql \ gt;显示从属状态\\\\ G

第三步是配置从属服务器slave02(192.168.80.50)
一:设置时间同步(与主服务器同步)
[root @ slave02]#service firewalld stop
[root @ slave02]#setenforce 0
[root @ slave02]#yum install-y ntpdate
[root @ slave02]#ntpdate 192.168.80.30
[root @ slave02 ]#echo”/30 \\ */usr/sbin/ntpdate 192.168.80.30″ \ gt; \ gt;/var/spool/cron/root
[root @ slave02]#crontab \ ndash; l
第二:源代码编译并安装mysql
这里参考https://blog.51cto.com/12227558/2074113,源代码安装和配置mysql
三:配置slave02奴隶服务器mysql
[root @ slave02]#vi/etc/my.cnf
server_id = 33
relay_log = relay-log-bin
> relay_log_index = slave-relay-bin.index

mysql \ gt;启动从属;
mysql \ gt;显示从属状态\\\\ G

步骤4验证
//在主服务器上创建一个新库并验证同步
mysql \ gt;创建数据库你好;
mysql \ gt;显示数据库;

//验证从属服务器上的结果
Slave01:
mysql \ gt;显示数据库;

三:安装变形虫//下载地址:https://sourceforge.net/projects/amoeba/files/
[root @ amoeba]#yum install-y解压缩
[root @ amoeba ]#解压缩amoeba-mysql-3.0.5-RC-distribution.zip-d/usr/local/
[root @ amoeba]#mv/usr/local/amoeba-mysql-3.0.5-RC///usr/local/amoeba
[root @ amoeba]#chmod-R 755/usr/local/amoeba/
[root @ amoeba]#vi/usr/local/amoeba/jvm。属性
修改以下内容:
JVM_OPTIONS =”-server-Xms1024m-Xmx1024m-Xss256k”//32行
保存并退出
四:制作变形虫管理脚本
[root @ amoeba]#vi/etc/init.d/amoeba
#!/bin/bash
#chkconfig:35 62 62
#
export JAVA_HOME =/usr/local/java
export PATH = $ JAVA_HOME/bin:$ JAVA_HOME/jre/bin :$ PATH
名称=变形虫
AMOEBA_BIN =/usr/本地/变形虫/bin/启动器
SHUTDOWN_BIN =/usr/本地/变形虫/bin/关闭
PIDFILE =/usr/本地/变形虫/变形虫MySQL.pid
SCRIPTNAME =/etc/init.d/变形虫
case” $ 1″ in
开始)
echo-n”开始$ NAME…”
$ AMOEBA_BIN
echo”完成”
;;
停止)
echo-n”正在停止$ NAME…”
$ SHUTDOWN_BIN
echo”完成”
;;
重新启动)
$ SHUTDOWN_BIN
睡眠1
$ AMOEBA_BIN
;;
*)
echo”用法:$ SCRIPTNAME {开始|停止|重新启动}”
退出1
;;
esac
保存并退出
[root @ amoeba]#chmod + x/etc/init.d/amoeba
[root @ amoeba]#chkconfig–add amoeba
[root @ amoeba]#service amoeba start
//启动过程很慢,将ctrl + z置于后台并挂起,
[root @ amoeba]#bg//继续在后台运行

[root @ amoeba ]#netstat-anpt | grep 8066
第二步是配置读写分离。
一:主服务器创建一个测试数据库。创建数据库测试;
mysql \ gt;显示数据库;

二:在三个mysql数据库服务器中授权变形虫。授予所有许可。 \测试@” 192.168.80。%”由” abc123″标识;
mysql \ gt;冲洗特权;
>
三:编辑变形虫服务器上的变形虫配置文件
[root @ amoeba]#cd/usr/local/amoeba
[root @ amoeba amoeba]#vi conf/amoeba.xml
//编辑以下内容
\ lt;属性名称=”用户”变形虫/属性>//第28行
\ lt;属性名称=”密码”> 123456 \ lt;/属性>//30行
//上面设置了客户端连接到变形虫前端服务器时使用的用户名和密码

\ lt;属性名称=” defaultPool” \ gt;母版lt;/属性>
\ lt;属性名称=” writePool” \ gt;母版lt;/属性>
\ lt;属性名称=” readPool” \ gt;奴隶/属性>
//第83行开始修改,第85和88行为注释,删除

保存并退出
[root @ amoeba amoeba]#vi conf/dbServers.xml
修改以下内容:
\ lt;属性名称=”用户” \\ ugt26测试/属性>
\ lt;属性名称=”密码”> abc123 \ lt;/属性>
//从服务器slave01配置:
\ lt; dbServer名称=” slave1″父=” abstractServer” \ gt;
\ lt;属性名称=” ipAddress” \ gt; 192.168.80.40 \ lt;/属性\ gt;
//从属服务器slave02配置:
将复制slave01的相关内容(共六行),直接粘贴向下并进行更改
dbServer name =” slave2″ parent =” abstractServer” \ gt;
\ lt;属性名称=” ipAddress” \ gt; 192.168.80.50 \ lt;/属性\ gt;

行内容:
第四部分测试验证
第一步是在客户端(192.168.80.10)上进行操作
[root @ client]#service firewalld stop
[root @ client]# setenforce 0
一:mysql的源代码编译和安装
这里参考https://blog.51cto.com/12227558/2074113,mysql的源代码安装和配置
二:测试读写分离
//新创建的数据库或MASTER中的表,两个从属服务器将通过amoeba操作进行同步
客户端登录操作
[root @@ client]#mysql-u amoeba-p123456-h 192.168.80.20-P8066
mysql \ gt;显示数据库;

mysql \ gt;使用测试;
mysql \ gt;创建表zhang(id int(10),name varchar(10),address varchar(20));
mysql \ gt;显示表格;

//在三个视图上观察时,结果相同数据库服务器

”
在两个从属服务器上停止主从同步服务
mysql>停止从属;
测试一:主服务器上插入的内容将不会同步-
//由变形虫在客户端上进行操作在zhang值中插入(” 1″,” hahahha” ,” this_is_master”);
//在主服务器上查看
测试2:在从属服务器上创建新内容
Slave01:
mysql \ gt;使用测试;
mysql \ gt;插入zhang值(“2”,” zhang”,” this_is_slave1″);
”
Slave02:
mysql \ gt;使用测试;
mysql \ gt;插入zhang值(“3”,” zhang”,” this_is_slave2″);

//在客户端上进行测试,第一次是从slave server01读取数据,第二次是从slave0 2Read


测试3:通过客户端连接到数据库之后写入的数据仅由主服务器记录,然后同步到从属-从属服务器,而没有记录
,从而实现读写分离
//客户端On-end操作
mysql>插入zhang值(” 4″,” zhang”,” write_test”);
该记录只能在主服务器上看到。

由于未启用同步,因此在客户端上看不到新插入的数据。
//在客户端上开始同步后,主服务器上的数据将同步到每个从属服务器,但是从属服务器上添加的数据将不同步,仅本地存储
mysql >启动奴隶;//在两个从属服务器上打开
在客户端上查看,您将看到从主服务器同步的数据,以及在本地添加的数据,但看不到从属服务器添加的其他数据:

//测试完成