搭建一个主从复制服务器:192.168.200.111(master) 192.168.200.112 (slave1)192.168.200.113(slave2)
AMOEBA服务器:192.168.200.114
关闭防火墙
[root@localhost ~]# systemctl stop firewalld
[root@localhost ~]# setenforce 0
[root@localhost ~]# iptables -F
上传jdk-6u14-linux-x64.bin包
[root@localhost ~]# chmod +x jdk-6u14-linux-x64.bin
[root@localhost ~]# ./jdk-6u14-linux-x64.bin
[root@localhost ~]# mv jdk1.6.0_14/ /usr/local/java
[root@localhost ~]# vim /etc/profile
添加五行:
export JAVA_HOME=/usr/local/java
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
export AMOEBA_HOME=/usr/local/amoeba
export PATH=$PATH:$AMOEBA_HOME/bin
[root@localhost ~]# source /etc/profile
[root@localhost ~]# mkdir /usr/local/amoeba
[root@localhost ~]# tar fx amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/
[root@localhost ~]# chmod -R 755 /usr/local/amoeba/
[root@localhost ~]# /usr/local/amoeba/bin/amoeba
amoeba start|stop //出现此行用法说明,证明配置无误。
如果出现一下信息表示错误:
The stack size specified is too small, Specify at least 160k
Could not create the Java virtual machine.
解决方法:
[root@localhost ~]# vim /usr/local/amoeba/bin/amoeba
修改58行:
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k" --> DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"
[root@localhost ~]# cd /usr/local/amoeba/conf
[root@localhost conf ]# cp amoeba.xml amoeba.xml.bak
[root@localhost conf ]# vim amoeba.xml
修改如下几行:
30 <property name="user">amoeba</property>
32 <property name="password">123456</property>
115 <property name="defaultPool">master</property>
117 <property name="writePool">master</property>
118 <property name="readPool">slaves</property>
[root@localhost conf ]# vim dbServers.xml
20 <property name="port">3306</property>
26 <property name="user">admin</property>
28 <property name="password">123</property>
43 <dbServer name="master" parent="abstractServer">
46 <property name="ipAddress">192.168.200.111</property
50 <dbServer name="slave1" parent="abstractServer">
53 <property name="ipAddress">192.168.200.112</property>
57 <dbServer name="slave2" parent="abstractServer">
58 <factoryConfig>
59 <!-- mysql ip -->
60 <property name="ipAddress">192.168.200.113</property>
61 </factoryConfig>
62 </dbServer>
64 <dbServer name="slaves" virtual="true">
70 <property name="poolNames">slave1,slave2</property>
[root@localhost conf ]# nohup /usr/local/amoeba/bin/amoeba start &
[root@localhost ~]# netstat -anpt | grep java
tcp6 0 0 127.0.0.1:36539 :::* LISTEN 20222/java
tcp6 0 0 :::8066 :::* LISTEN 20222/java
客户端:192.168.200.115
此时三台mysql服务器是主从备份的,在mysql-master中创建db_test库及该库下的test表,
然后可以在mysql-slave1和mysql-slave2上可以查看该库和表。
在mysql-slave1和mysql-slave2上停止主从备份。
在master、slave1、slave2上添加不同的表内容。
在客户机上进行读测试时,发现它以轮询的方式读取到slave1和slave2的不同的内容,进行
写测试时,它会将写的内容写到master中。
至此,可以验证amoeba实现了mysql的读写分离,写入数据仅会写入到mysql_master中,
而读取数据时,则以轮询的方式从slave1,slave2两台服务器上读取数据,实现负载均衡。