MySQL基于amoeba读写分离实验

MySQL基于amoeba读写分离实验
amoeba :中文叫做变形虫
===========================================
主从复制只是一个同步数据的方式
读写分离:只在主的上面写,只在从的上面读
读写分离方案:【1】基于程序代码内部 (生产环境中应用最广泛,性能最好,需要开发人员来实现)
【2】基于中间代理层的实现
amoeda 是阿里巴巴使用的产品
===========================================
实验要求
5台机器
web服务器 1台  :192.168.200.66
amoeba 服务器一台:192.168.200.67
数据库3台
      数据库A :192.168.200.68    (mysql主服务器)
      数据库B :192.168.200.69    (mysql从服务器)
      数据库C :192.168.200.70    (mysql从服务器)
===========================================
amoeba :67
chmod +x jdk-6u31-linux-x64.bin
./jdk-6u31-linux-x64.bin
mv jdk1.6.0_31/ /usr/local/jdk1.6
////安装amoeba 不仅需要amoeba软件包还需要有jdk-6u31-linux-x64.bin
/////amoeba 软件是基于jdk1.5版本开始的。
ls
mv jdk1.6.0_14/ /usr/local/jdk1.6
vim /etc/profile
export JAVA_HOME=/usr/local/jdk1.6
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$PATH=$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$HOME/bin
export  AMOEBA_HOME=/usr/local/amoeda
export PATH=$PATH:$AMOEBA_HOME/bin
保存退出
source /etc/profile
java -version
rm -rf /usr/bin/java
source /etc/profile
java -version
mkdir /usr/local/amoeba
tar xf amoeba........tat.gz -C /usr/local/amoeba
chmod -R 755 /usr/local/amoeba
---------------------------------------------
3台数据库服务器都要做授权,让amoeba可以进行访问
grant all on *.* to 'test'@'192.168.200.%' identified by '123.com';    //用户名是test  密码是123.com
flush privileges;
----------------------------------------------
修改amoeba的配置文件
主机amoeba 67 操作
cd /usr/local/amoeba/
ls
cd conf
ls
cp amoeba.xml{,.bak}
vim   amoeba.xml   //修改30行左右的文件内容
<property name="user">amoeba</property>
<property name="password">123456</property>   //指定客户端连接时的用户名和密码
///115行左右
<property name="defaultPool">master</property>
////去掉以下两行的注释
<property name="writePool">master</property>    //写交合主 
<property name="readPool">slaves</property>  //读交给从slaves是从的组,里面包含slave1和slave2
保存退出
cp dbServers.xml{,.bak}
vim  dbServers.xml  //找到以下内容进行修改
<property name="user">test</property>
/////去掉注释的mysql password 改为以下内容
<!-- mysql password-->
<property name="password">123.com</property>
////找到dbServer
<dbServer name="master"  parent="abstractServer"
 <factoryConfig>
     <property name="ipAddress">192.168.200.68</property>
 </factoryConfig>
</dbServer>
<dbServer name="slave1"  parent="abstractServer"
 <factoryConfig>
     <property name="ipAddress">192.168.200.69</property>
 </factoryConfig>
</dbServer>
<dbServer name="slave2"  parent="abstractServer"
 <factoryConfig>
     <property name="ipAddress">192.168.200.70</property>
 </factoryConfig>
</dbServer>
////声明slaves组 找到以下内容
<dbServer name="slaves" virtual="ture">
 <poolConfig class="com.meidusa......ServerPool">
 <property name="loadbalance">1</property>
 <property name="poolNames">slave1,slave2</property>
 </poolConfig>
</dbServer>
保存退出
cd
nohup /usr/local/amoeba/bin/amoeba start &   ///不依赖于任何终端,放到后台执行
netstat -lnpt   //查看端口是否开启
注意:cat nohup.out
ps  aux |grep amoeba  //查看端口8066
---------------------------------------------------------------------------
web 服务器66
yum -y install mariadb
mysql -u amoeba -p123456 -h 192.168.200.67 -p 8066   //客户机做连接
=====测试amoeba是否能进行读写分离=========
【1】在数据库主服务器上创建
create database db_test;
use db_test;
create table student(id int(10),name varchar(10),address varchar(20));
show databases;
【2】在两台数据库从服务器上进行检测,看是否同步
show databases;
【3】先把两台数据库从服务器的复制功能停止
stop slave;
【4】在主数据库中插入数据
insert into student values('1','crushlinux','this_is_master');
【5】在slave1 slave2中分别插入以下数据
-----slave1
use db_test;
insert into student values('2','crushlinux','this_is_slave1');
-----slave2
use db_test;
insert into student values('3','crushlinux','this_is_slave2');
【6】web客户端查询测试
use db_test;
select * from student;
///测试结果是能够看到里面内容是轮询的。 而且只能看到从数据库上面的内容。
【7】web客户端插入数据
use db_test;
insert into student values('4','crushlinux','this_is_web');
【8】web客户端检查
use db_test;
select * from student;
【9】主数据库中查看是否有4的数据
use db_test;
select * from student;
【10】开启两台从数据库的主从复制功能
start slave;
show slave status;  //查看是否开启
【11】在web客户端查看
use db_test;
select * from student;  //会看到124 或者134 的数据
在插入一条数据
insert into student values('5','crushlinux','this_is_web');
///结果是1245或者是1345 总之,从服务器的数据不会同时出现。
===========完成!!!!!!!===========
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

猜你喜欢

转载自www.cnblogs.com/elin989898/p/11968981.html