配置 数据库的读写分离: 

     需要注意的是 之前的配置都是在同一个文件编辑  新版本的将之前的文件定义成2个独立的配置文件即:

 dbServer.xml  和 amoeba.xml 2个文件

操作系统 :centOS 6.5 64位  

 

master服务器: 172.168.1.31

 slave服务器: 172.168.1.32

amoeba服务器: 172.168.1.11

需要先安装Jdk

http://download.chinaunix.net/download/0001000/61.shtml

     

rpm -ivh   jdk-8u31-linux-x64.rpm

配置环境变量

 

  ln -s /usr/java/jdk1.8.0_31/ /usr/java/jdk1.8    配置软连接

[root@dr ~]# vim /etc/profile

export JAVA_HOME=/usr/java/jdk1.8

export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH

[root@dr ~]# source /etc/profile   

yum  install     java   #需要安装java 环境

配置安装amoeba 

   mkdir  /usr/local/amoeba

   tar zxvf amoeba-mysql-binary-2.1.0-RC4.tar -C /usr/local/amoeba

   cd  /usr/local/amoeba/conf

   

 配置文件修改: vi   dbServer.xml    修改如下:默认密码是被注销的 

默认只有配置一个服务器  需要复制粘贴一台服务器即可 并修改IP地址

 

   <!-- 参与该pool负载均衡的poolName列表以逗号分割这里我填了2个,做读数据库的负载使用 (读为1:2)-->

      

          <property name="poolNames">server1,server2, server2</property>

  

  所谓定义轮询算法: server1,server2,server2    主数据库读一次 从数据库读2次  (同时主数据库还担任写入操作)

则 需要在 vi amoeba.xml 修改

  修改配置信息:

 默认端口为8066   IP地址为 127.0.0.1

  在这里我修改成 1234   172.168.1.11  # IP地址也是本机的iP地址

 

 <!-- 对外验证的用户名 –帐号 密码 可以自己随便设置,网站程序连接使用>

 

定义的数据库 读取轮询 查询 (此定义 主数据库都能读写  从数据库只能读  )

 

 如果有多台服务器 对应添加服务器即可 例 :

        

需要将 vi /usr/local/amoeba/bin/amoeba  

     128 改成 256

 

/usr/local/amoeba/bin/amoeba start &     ####然后将 amoeba 设置成后台启动

   net -ntpl 

 

测试  (我这是使用所有权限)

测试之前先要保证amoeba-server有访问两个主从服务器 haitian 库的权限,在主从mysql上都执行:

grant all on haitian.* to root@'%' identified by '123.com';

如需要同步其他的库,在这里多加几个即可(必须一个一个加)

grant all on ceshi.* to root@'%' identified by '123.com';

   grant all  on test.* to root@'%' identified by '123.com';

 #用户名密码要和前面配置的一致

   flush privileges;   并更新数据库

 mysql -uanchnet -panchnet -h 172.168.1.11 -P1234  (P是大写)

     ## 用户+   用户密码+    本机IP        对外端口   

   登陆的同一个数据库 : 读的是从数据库    写的是主数据库

登录上去后,为了测试读和写必须,先把mysql的主从复制停掉,才能更清楚地看出读写的服务器是哪台,

在从上使用stop slave;

登录到amoeba-mysql上,

然后执行写和读操作,查看写的是哪台服务器,读的是哪台服务器,实验结果显示:

测试步骤:

还没有停掉从同步之前,创建一个表:

  >use haitian;

  >create table zhang (id int(10) ,name varchar(10),address varchar(20));

然后在主从上各插入一条不同数据(供测试读的时候用),

在从上执行stop slave;

在主上插入:insert into zhang values('1','zhang','this_is_master');

在从上插入:insert into zhang values('2','zhang','this_is_slave');

接下来通过登录amoeba-mysql上来测试读写:

amoeba 服务器

   mysql -uanchnet -panchnet -h 172.168.1.11 -P1234 

  >use haitian;

  > select * from zhang;    只能查询到从服务器的数据

  >insert into zhang values('2','zhang','this_is_slave'); 

   在主数据库172.168.1.31 上能看到插入的数据,从服务器上没有, 在amoeba上也查询不到,这就说明 

      

    showtables; 查询新增数据

   查询的是从服务器的数据, 写入的是主服务器的数据,

    同时 将从服务器的 同步启动  

   >start salve;

    然后在amoeba服务器上查询 都能看到所有的数据。