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

58次阅读
没有评论

共计 3875 个字符,预计需要花费 10 分钟才能阅读完成。

这篇文章将为大家详细讲解有关 Amoeba 中怎么实现 MySQL 负载均衡和故障转移,文章内容质量较高,因此丸趣 TV 小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。

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 负载均衡和故障转移就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-03发表,共计3875字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)