Amoeba

Amoeba特点

1.负载均衡

2.高可用性

3.SQL过滤

4.读写分离

5.可并发请求多台数据库

实验环境

amoeba:200.200.2.10

mysql-master:200.200.2.11

mysql-slave1:200.200.2.12

mysql-slave2:200.200.2.13

client:200.200.2.14

安装mysql5.6版本进行主从复制,一主两从,详情请见MHA高可用部分

 在Amoeba上安装java环境

yum -y install java-1.6.0-openjdk

编辑java环境

cat /etc/profile.d/java.sh 
export JAVA_HOME=/usr/lib/jvm/jre-1.6.0-openjdk.x86_64
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
source /etc/profile

启动amoeba服务

amoeba start

在三台服务器上进行授权

grant all on *.* to 'admin'@'200.200.2.%' identified by '123';
flush privileges;
刷新

编辑amoeba.xml配置文件,设置读写分离

cd /usr/local/amoeba/conf/
cp amoeba.xml amoeba.xml.origin 备份防止误操作
vim amoeba.xml
11 <property name="port">8066</property>//默认端口8066,无需修改
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> //读服务器池
cp dbServers.xml dbServers.xml.origin
vim dbServers.xml
20<property name="port">3306</property> //设置MySQL连接端口,默认3306
26 <property name="user">admin</property> 
27<property name="password">
123</property>//设置访问MySQL服务器所用的密码
43 <dbServer name="master" parent="abstractServer">//设置MySQL服务器及IP地址
46 <property name="ipAddress">192.168.2.11</property>
50 <dbServer name="slave1" parent="abstractServer">
53<property name="ipAddress">192.168.2.12</property>
56 <dbServer name="slave2" parent="abstractServer">
59 <property name="ipAddress">192.168.2.13</property>
63<dbServer name="slaves" virtual="true"> //在amoeba.xml文件中设置的readPool 
69<property name="poolNames">slave1,slave2</property>//前面定义的服务器节点名

启动amoeba

 /usr/local/amoeba/bin/amoeba start &
 jobs
 netstat -anpt |grep java
 8066与3306端口需要是开启状态

测试

此时三台数据库服务器是主从备份的
在主库创建db_test库及该库下的test表
create database db_test;
use db_test;
create table test(id int(10),name varchar(20));
可以在slave1和slave2上查看到该库
show databases;
在slave1、slave2服务器上停止主从复制
stop slave;
在mater上添加表内容
insert into test values(1,'master');
在slave1上添加数据
use db_test;
insert into test values(2,'slav1');
在slave2上
use db_test;
insert into test vlaues(3,'slave2');
在客户机上进行读测试
yum -y install mysql    安装mysql客户端
mysql -uamoeba -p123456 -h192.168.2.10 -P8066
读测试
select * from db_test.test;
select * from db_test.test;
此时读取数据库数据时,轮询的方式从slave1、slave2上读取
写测试
insert into db_test.test values(4,'client');
在master服务器上查看是否写入
select * from db_test.test;
此时写入数据到数据库时,会写入到主服务器,不会写到从服务器上,实现了读写分
posted @ 2020-12-24 23:28  漫漫潇湘路  阅读(258)  评论(0编辑  收藏  举报