zoukankan      html  css  js  c++  java
  • 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;
    此时写入数据到数据库时,会写入到主服务器,不会写到从服务器上,实现了读写分
  • 相关阅读:
    一个前端的博客
    win10安装redis
    RabbitMQ的基本使用
    SpringMVC 中 @ControllerAdvice 注解的三种使用场景
    在Spring cloud中使用Spring Cloud Alibaba Nacos Discovery报错
    MSBUILD : error MSB3428: 未能加载 Visual C++ 组件“VCBuild.exe”。
    asp.net自定义错误信息处理
    MVC返回值详解
    C#集合
    C#linq查询方法使用简介
  • 原文地址:https://www.cnblogs.com/bnre/p/14184787.html
Copyright © 2011-2022 走看看