• ADADADADAD

    Amoeba中怎么实现MySQL负载均衡和故障转移[ mysql数据库 ]

    mysql数据库 时间:2024-11-28 13:24:33

    作者:文/会员上传

    简介:

    Amoeba(变形虫,读:阿米巴)项目,专注分布式数据库proxy开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    Amoeba(变形虫,读:阿米巴)项目,专注分布式数据库proxy开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。
    主要解决:
    • 降低数据切分带来的复杂多数据库结构
    • 提供切分规则并降低数据切分规则给应用带来的影响
    • 降低db 与客户端的连接数[@more@]

    1.3安装Amoeba
    Amoeba 框架是基于JDK1.5开发的,采用了JDK1.5的特性。支持Mysql 协议版本10(mysql 4.1以后的版本),因此,使用Amoeba需要安装JDK1.5或以上版本,MySQL需要4.1以上版本。
    系统及环境版本:
    Linux版本:Linux localhost.localdomain 2.6.9-67.ELsmp #1 SMP Fri Nov 16 12:48:03 EST 2007 i686 i686 i386 GNU/Linux
    JDK版本:jdk-6u16-linux-i586-rpm.bin

    1.到sun公司网站下载包jdk1.6.0_16-linux-i586.rpm
    2.安装:rpm -ivh jdk1.6.0_16-linux-i586.rpm
    3.安装后之后需要配置环境变量。
    vi /etc/profile
    JAVA_HOME=/usr/java/jdk1.6.0_16
    JAVA_BIN=/usr/java/jdk1.6.0.16/bin
    PATH=$PATH:$JAVA_HOME/bin
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH
    使之生效
    source /etc/profile

    注意,需要把jdk名字修改成您所下载的JDK当前版本。
    下一步是必须的,不然它总是调用FC6自带的jdk1.4

    创建链接
      #cd /usr/bin
      #ln -s -f /usr/local/jdk1.5.0_05/jre/bin/java
      #ln -s -f /usr/local/jdk1.5.0_05/bin/javac

    查看java版本:java -version
    vi Hello.java
    再编一个java小程序:
    public class Hello{
    public static void main(String[] args){
    System.out.println("hello"); }
    }
    >javac Hello.java
    >java Hello
    出现 Hello即表明成功

    安装好JDK后,再运行amoeba for mysql。

    1.到amoeba开发者博客下载最新版本amoeba-mysql-1.0.2-BETA
    2.配置amoeba.xml和rule.xml文件,具体参考相关资料
    3.切换到amoeba-mysql-1.0.2-BETA目录,输入
    >./bin/amoeba
    即可(后台运行)
    1.4配置Amoeba
    Amoeba的配置文件是XML格式的,使用起来很方便。主要有4个文件:
    Amoeba.xml是主配置文件,配置所有数据源及Amoeba自身的参数。
    rule.xml,配置所有Query路由规则的信息:
    functionMap.xml,配置用于解析Query中的函数所对应的Java实现类。
    nullFunctionMap.xml,配置路由规则中需要使用到的特定函数的实现类。

    详细的配置说明请查看官方文档。

    1.5测试Amoeba对性能的影响
    Amoeba需要分析MySQL协议数据包,因此在性能上必定会有折损。以下针对Amoeba的性能折损情况做个测试,测试方法是对单机直接访问与通过Amoeba对单机访问做个对比。
    Amoeba只配置一台server,如Router部分配置如下



    1500
    master1


    master1
    master1

    true


    直接访问:
    sysbench --num-threads=20 --max-requests=10000
    --test=oltp --oltp-read-only=on --db-ps-mode=disable --oltp-skip-trx
    --mysql-table-engine=innodb --oltp-table-size=100000
    --mysql-host=192.168.100.2 -mysql-port=3306 --mysql-db=configdb run

    OLTP test statistics:
    queries performed:
    read:140000
    write:0
    other:0
    total:140000
    transactions:10000 (751.32 per sec.)
    deadlocks:0 (0.00 per sec.)
    read/write requests: 140000 (10518.52 per sec.)
    other operations:0 (0.00 per sec.)

    Test execution summary:
    total time: 13.3099s
    total number of events: 10000
    total time taken by event execution: 265.8874
    per-request statistics:
    min: 4.61ms
    avg: 26.59ms
    max: 80.70ms
    approx. 95 percentile: 45.12ms

    Threads fairness:
    events (avg/stddev):500.0000/7.78
    execution time (avg/stddev):13.2944/0.01



    sysbench --num-threads=20 --max-requests=10000
    --test=oltp --oltp-read-only=on --db-ps-mode=disable --oltp-skip-trx
    --mysql-table-engine=innodb --oltp-table-size=100000
    --mysql-host=192.168.100.2 -mysql-port=8066 --mysql-db=configdb run

    OLTP test statistics:
    queries performed:
    read:140000
    write:0
    other:0
    total:140000
    transactions:10000 (303.17 per sec.)
    deadlocks:0 (0.00 per sec.)
    read/write requests: 140000 (4244.42 per sec.)
    other operations:0 (0.00 per sec.)

    Test execution summary:
    total time: 32.9845s
    total number of events: 10000
    total time taken by event execution: 658.9933
    per-request statistics:
    min: 6.59ms
    avg: 65.90ms
    max: 10229.09ms
    approx. 95 percentile: 109.86ms

    Threads fairness:
    events (avg/stddev):500.0000/66.18
    execution time (avg/stddev):32.9497/0.01

    从测试结果来看,Amoeba对性能的折损60%左右。如果再加上rule和functionMap的配置,我相信性能折损会更高。不过Amoeba对机器的性能要求很高,如果把Amoeba独立部署在一台性能较强的机器上,相信会有很大提升,另外,我们也可以同时使用多台Amoeba,用LVS来实现Amoeba自身的负载均衡和故障转换。

    Amoeba中怎么实现MySQL负载均衡和故障转移.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: amoebamysql