返回列表 回复 发帖

amoeba-Mysql数据库的安装应用和读写分离

amoeba真的是不错的稳定而灵活的数据库解决方案,阿里巴巴的技能陈思儒开端的一个的开源工程,它是分布式数据库Proxy解决方案。

有关 Amoeba  引用:
Amoeba(变形虫)工程,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客源
端透明。具有负载均衡、高可用性、sql滤掉、读写分离、可路由相关的query到目的数据库、可并发请
求多台数据库合并结果。
主要解决:
* 降低 数据切分带来的复杂多数据库FRAME
* 帮助切分规则并降低 数据切分规则 给实际运用带来的效果
* 降低db 与客源端的连接数
* 读写分离
* 制定一种规则可支持DB线性扩容

目前在amoeba FRAME上面已经出现了 amoeba for Mysql数据库.找寻到amoeba是出于想要做读写分离,目前有三种解决方法:

1 程式改正Mysql数据库操作类
参考PHP编程出现的Mysql数据库读写分离,阿权开端的本工程,以PHP编程程式解决此需求。
优点:直接和数据库通信,简单快捷的读写分离和随机的方法出现的负载均衡,权限独立分配
缺点:本人MAIntenance更新,增减服务器在代码处理

2 amoeba
参考官网:http://amoeba.meidusa.com/
优点:直接出现读写分离和负载均衡,不用改正代码,有很灵活的数据解决方案
缺点:本人分配账户,和后端数据库权限管理独立,权限处理不够灵活

3 Mysql数据库-proxy
参考 Mysql数据库-proxy。
优点:直接出现读写分离和负载均衡,不用改正代码,master和slave用相同的帐号
缺点:char集疑难问题,lua句子语言编程,还只是alpha版本,日期消耗有点高

假如你不能安装软件来解决读写分离,那尝试阿权的工程解决思维。
假如你安装软件,那amoeba是不错的,Mysql数据库-proxy不太意见,目前只有alpha版本,效率还不太理想,amoeba目前在阿里巴巴是内部工程,正在生产环境应用的。


amoeba的安装应用

1 安装Java编程环境,需求Java SE 1.5 或以上
2 配置xml编程文档

下载到本地地址: http://www..cc/projects/amoeba
解压就应用的,顺便说一下,打包的习惯似乎怎么太好,最好解压后是本人的文档夹

运行很简单 bin/amoeba 即可,后台运行 bin/amoeba &
假如没有配置Java编程_HOME,则会有如下提示: 复制内容 内容到剪贴板
代码:
[root@aslibra amoeba-Mysql数据库]# bin/amoeba
Error: Java编程_HOME environment variable is not set.假如你是比1.5低,比如1.4的,运行会有错误提示: 复制内容 内容到剪贴板
代码:
[root@aslibra amoeba-Mysql数据库]# bin/amoeba
Exception in thread "main" Java编程.lang.UnsupportedClassVersionError: com/meidusa/amoeba/Mysql数据库/server/Mysql数据库ProxyServer (Unsupported major.minor version 49.0)
        at Java编程.lang.ClassLoader.defineClass0(Native Method)
        at Java编程.lang.ClassLoader.defineClass(ClassLoader.Java编程:539)
        at Java编程.security.SecureClassLoader.defineClass(SecureClassLoader.Java编程:123)
.....安装配置Java编程环境对于不玩Java编程的人不太熟悉,我也怎么行家,把本人的配置过程作一下共享:

首先根据你的操作系统下载到本地相应的文档,比如jdk-1.5.0,文档下载到本地地址:
http://Java编程.sun.com/Java编程se/downloads/index.JSP编程

下载到本地回来的是bin文档,加运行属性,然后运行后就能有一个的rpm文档,然后安装即可: 复制内容 内容到剪贴板
代码:
[root@aslibra amoeba-Mysql数据库]# rpm -ivh jdk-1_5_0_15-linux-i586.rpm
Preparing...                ########################################### [100%]
        package jdk-1.5.0_15-fcs is already installed配置Java编程_HOME变量: 复制内容 内容到剪贴板
代码:
[root@aslibra amoeba-Mysql数据库]# cd /usr/Java编程/
[root@aslibra Java编程]# ll
total 16
drwxr-xr-x  8 root root 4096 Apr 27 17:50 j2sdk1.4.2_15
lrwxrwxrwx  1 root root   13 Apr 27 17:52 jdk -> j2sdk1.4.2_15
drwxr-xr-x  9 root root 4096 May 13 09:14 jdk1.5.0_15
[root@aslibra Java编程]# rm jdk
rm: remove symbolic link `jdk'? y
[root@aslibra Java编程]# ln -s jdk1.5.0_15/ jdk
[root@aslibra Java编程]# ll
total 16
drwxr-xr-x  8 root root 4096 May 13 09:20 j2sdk1.4.2_15
lrwxrwxrwx  1 root root   12 May 13 09:21 jdk -> jdk1.5.0_15/
drwxr-xr-x  9 root root 4096 May 13 09:14 jdk1.5.0_15编辑 /etc/profile以便启动时变量生效,末尾加上 复制内容 内容到剪贴板
代码:
##############  Java编程  ###########
Java编程_HOME=/usr/Java编程/jdk
PATH=$PATH:Java编程_HOME/bin
export Java编程_HOME PATH依次运行此三句,配置好xml编程后,即可立刻应用amoeba: 复制内容 内容到剪贴板
代码:
[root@aslibra amoeba-Mysql数据库]# bin/amoeba
log4j:WARN log4j config load completed from file:/数据/apps/amoeba-Mysql数据库/conf/log4j.xml编程
log4j:WARN 网站地址 Access数据库 config load completed from file:/数据/apps/amoeba-Mysql数据库/conf/Access数据库_list.conf
二零零九-05-13 09:22:04,306 INFO  cc.ServerableConnectionManager - Server listening on /192.168.1.5:9306.配置amoeba:

conf/amoeba.xml编程 配置Mysql数据库数据库,简单说明一下:

1 server节点定义amoeba为接受client来访的数据库,当作是Mysql数据库看待的,用户名和密码是来访时应用的,这个似乎不能定义多个用户名密码,也那是只有一个的权限控制,这个对于多实际运用似乎不大方便。
2 dbServerList里面定义很多实际的Mysql数据库数据库,渐增dbServer节点即可,那里的用户名密码是作为amoeba操作数据库应用的,要有足够权限。dbServer是虚拟的,比如要做负载均衡时可用定义多个数据库归属到此虚拟数据库。
3 queryRouter节点定义读写的分配情况,也那是读写该发往这个dbServer。

读写分离的配置示例片段: 复制内容 内容到剪贴板
代码:
<dbServerList>
  <dbServer name="master">
  ....
  </dbServer>
  <dbServer name="slave1">
  ....
  </dbServer>
  <dbServer name="slave2">
  ....
  </dbServer>
  <dbServer name="slave3">
  ....
  </dbServer>   
  <dbServer name="multiPool" virtual="true">
    <poolConfig class="com.meidusa.amoeba.server.Mult网站地址leServerPool">
      <property name="loadbalance">1</property>
      <property name="poolNames">slave1,slave2,slave3</property>
    </poolConfig>
  </dbServer>
</dbServerList>  
<queryRouter class="com.meidusa.amoeba.Mysql数据库.parser.Mysql数据库QueryRouter">
  <property name="LRUMapSize">1500</property>
  <property name="defaultPool">master</property>
  <property name="writePool">master</property>
  <property name="readPool">multiPool</property>
</queryRouter>另外一个的需求改正一下的是 conf/log4j.xml编程,定义日志内容 内容: 引用:
在可用性测试已经完成的情况下,意见将log4j.xml编程 中涉及日志输出level为debug的全部设置成warn或者error 级别。
日志是非比寻常消耗系统技能的,在没有必要的情况下不应用debug。参考:涉及amoeba 技能测试留意的几点

不算复杂的处理就完成了amoeba的配置和应用了,更加复杂的实际运用请参考官网介绍资料:
amoeba 汉文文档下载到本地地址:http://amoeba.meidusa.com/amoeba.pdf

本文出自阿权的书房:
4006业务是中国联通为客户提供的一种主被叫分摊付费业务,主要应用于为政府、企业、事业单位提供号码统一的呼叫中心或自动语音平台。

中国联通向4006业务客户提供接入号码优选分配、整体解决方案、全国业务快速开通、电信级 通信服务保障、专家级业务分析、一站收费、一站结算等一条龙服务,帮助客户在全国范围内建立低成 、快速覆盖和任意延伸的业务网络。 网址 http://www.4006.cn
返回列表