基于linux 的mysql的主从同步配置读写分离


配置 数据库的读写分离: 


     需要注意的是 之前的配置都是在同一个文件编辑  新版本的将之前的文件定义成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    修改如下:默认密码是被注销的 


wKioL1TcXY-idqDwAAAk4Z3st2g089.gif








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


wKiom1TcXJnjubEVAAAb5-1UcPE391.gif 



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

      

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

wKioL1TcXY-jwLxxAAAe2CFDtOQ562.gif

  

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




则 需要在 vi amoeba.xml 修改


  修改配置信息:



 默认端口为8066   IP地址为 127.0.0.1


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

wKiom1TcXJmi-ry5AAAZgV0fPt4949.gif

 


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


 wKioL1TcXY_TrGTdAAAREd166ds882.gif



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


wKiom1TcXJnSSKiwAAAPyGUxtm4213.gif

 



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


        


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


     128 改成 256

wKiom1TcXJmiisbYAAAkHJ-iWjA082.gif

 



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


   net -ntpl 


 wKioL1TcXuuQ4zHoAAALsygkYi8105.gif



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


测试之前先要保证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服务器上查询 都能看到所有的数据。


       

            





你可能感兴趣的:(profile,master)