zoukankan      html  css  js  c++  java
  • mysql读写分离

    环境介绍:

    amoeba服务器:        192.168.3.99

    master mysql 服务器:  192.168.3.100

    slave1 mysql 服务器:  192.168.3.101

    slave2 mysql 服务器:  192.168.3.102

    客户端:              192.168.3.150

     

    192.168.3.99amoeba)配置

    chmod  +x jdk-6u14-linux-x64.bin

    ./jdk-6u14-linux-x64.bin

    mv jdk1.6.0_14 /usr/local/jdk1.6

    vim /etc/profile.d/jdk.sh

    #!/bin/bash

    export JAVA_HOME=/usr/local/jdk1.6

    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

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

    export AMOEBA_HOME=/usr/local/amoeba

    export PATH=$PATH:$AMOEBA_HOME/bin

    source /etc/profile.d/jdk.sh

     

    mkdir /usr/local/amoeba

    tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

    chmod -R 755 /usr/local/amoeba/

     

    查看启动脚本

    [root@localhost profile.d]# /usr/local/amoeba/bin/amoeba

    amoeba start|stop

     

    配置读amoeba写分离

    分别在3台数据库上(3.100  3.101  3.102)授权用户,使amoeba能够访问3台数据库

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

    flush privileges;

     

    1.修改amoeba.xml,设置登陆amoeba的帐号密码。

    cd /usr/local/amoeba/conf

    vim amoeba.xml

    #修改30 32行

    <property name="user">amoeba</property>

    <property name="password">123456</property>

     

    114                 <property name="LRUMapSize">1500</property>

    115                 <property name="defaultPool">master</property>          

    118                 <property name="writePool">master</property>

    119                 <property name="readPool">slaves</property>

    注意:删除注释

    3修改dbServers.xml,设置数据库、登陆MySQL的帐号和密码。

    vim /usr/local/amoeba/conf/dbServers.xml

    修改以下红色部分。注意启用29行的密码

     25                         <!-- mysql user -->

     26                         <property name="user">test</property>

     27

     28                         <!--  mysql password -->

     29                         <property name="password">123.com</property>

     

     

    44         <dbServer name="master"  parent="abstractServer">

     45                 <factoryConfig>

     46                         <!-- mysql ip -->

     47                         <property name="ipAddress">192.168.3.100</property>

     48                 </factoryConfig>

     49         </dbServer>

                44-49行原文没有配置,此为我们手动添加的配置

     50        

     51         <dbServer name="slave1"  parent="abstractServer">

     52                 <factoryConfig>

     53                         <!-- mysql ip -->

     54                         <property name="ipAddress">192.168.3.101</property>

     55                 </factoryConfig>

     56         </dbServer>

     57

     58         <dbServer name="slave2"  parent="abstractServer">

     59                 <factoryConfig>

     60                         <!-- mysql ip -->

     61                         <property name="ipAddress">192.168.3.102</property>

     62                 </factoryConfig>

     63         </dbServer>

    65         <dbServer name="slaves" virtual="true">

    71          <property name="poolNames">slave1,slave2</property>

    注意71的配置必须用逗号隔开。用句号会报错

     

    4.启动amoeba

    如图为启动成功

    端口已经正常启动

     

    5.测试

    在客户端上连接amoeba

    mysql -uamoeba -p123456 -h 192.168.3.99 -P8066

    首先我们测试mysql的读的负载均衡功能。

    关闭所有的mysql的防火墙

    service iptables stop

     

    我们在master上创建一个数据库,然后自动同步到从服务器上。然后在关闭从服务器的slaves功能。在插入区别语句

    (1)在master mysql3.100上创建数据库。并且创建表

    mysql> create database db_test;

    Query OK, 1 row affected (0.00 sec)

    mysql> use db_test;

    Database changed

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

    Query OK, 0 rows affected (0.07 sec)

    (2) 停掉两台从服务(3.101  3.102)

    slave stop;

    (3)然后在master (3.100)上插入内容。

        insert into benet values ('1','zhang','this_is_master');

    (4)我们手动向两台从(3.101   3.102)服务器的benet表中插入内容

        192.168。3.101 操作以下命令

        use db_test;

        insert into benet values ('2','zhang','this_is_master');

        192.168.3.102 操作以下命令

        use db_test;

        insert into benet values ('3','zhang','this_is_master');

     

    通过在客户端上查询,为两台从服务器的轮询效果

    (5)测试写操作

    在客户端上(3.150)插入一条数据

    use db_test;

    insert into benet values ('4','zhang','this_is_master');

     

    但是在客户端查询不到,但是在master上查询到新数据,说明我们已经将数据写入到了master3.100)上

     

     

     

  • 相关阅读:
    POJ-1502-MPI Maelstrom
    POJ-3259-Wormholes
    【BZOJ4399】—膜法少女LJJ(线段树合并)
    省选模板复习—【计算几何】
    【BZOJ2115】【WC2011】—Xor(线性基)
    【洛谷P5290】【十二省联考2019】春节十二响(贪心+启发式合并)
    【BZOJ5461】 【PKUWC2018】—Minimax(线段树合并优化dp)
    【LOJ#3043】【洛谷P5280】【ZJOI2019】—线段树(计数dp+线段树)
    【省选模拟】—猎人杀(概率dp)
    【BZOJ4828】【HNOI2017】—大佬(LmyAKIOI!)
  • 原文地址:https://www.cnblogs.com/pangbing/p/6535147.html
Copyright © 2011-2022 走看看