原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://skyson.blog.51cto.com/2497647/623449
 
官方简介
Amoeba的中文意思是变型虫
主要解决:

• 降低 数据切分带来的复杂多数据库结构
• 提供切分规则并降低 数据切分规则 给应用带来的影响
• 降低db 与客户端的连接数

• 读写分离
 
个人简单描述
可能你还没明白Amoebla这鬼东西主要干麻的呢!比方说PHP环境众所周知,PHP没有数据连接池,如果PHP环境下MYSQL访问量大时会蹦掉,除非配置Cluster集群,而Amoeba就是在PHP程序和MYSQL之间,充当一个缓冲的作用。
 
准备工作
  • Server:192.168.1.208 #Amoeba
  • Server:192.168.1.11  #NDBD1(主)
  • Server:1921.68.1.13  #NDBD2(从)
  • 注:11和13两台服务器上,事先请安装好MYSQL单向步,不会配置访问http://skyson.blog.51cto.com/2497647/556600
  • 另请安装MYSQL版本必须5.1以上,因为新版的Amoeba2.10对5.1以下版本不稳定。
 
 
 
结构图
 
 
 
 
Step 1:配置Amoeba192.168.2.8读写分离  
  1. 1:解压安装包
  2. [root@Management down]# mkdir /usr/local/amoeba 
    [root@Management down]# tar -zxf amoeba-mysql-binary-2.1.0-RC5.tar.gz -C /usr/local/amoeba/
  1. 2:进入配置目录,浏览文件
  2. [root@Management down]# cd /usr/local/amoeba/ 
    [root@Management amoeba]# ll 
    total 88 
    drwxr-xr-x 2 root root    4096 Jul 26 11:57 benchmark 
    drwxr-xr-x 2 root root    4096 Feb 28 09:25 bin 
    -rw-r--r-- 1 root root    3983 May 18 13:43 changelogs.txt 
    drwxr-xr-x 2 root root    4096 Jul 26 11:57 conf 
    drwxr-xr-x 3 root root    4096 Jul 26 11:57 lib 
    -rw-r--r-- 1 root root 34520 May 18 13:43 LICENSE.txt 
    -rw-r--r-- 1 root root    2031 May 18 13:43 README.html
  3. 3:进入主配置文件目录
  4. [root@Management amoeba]# cd conf/ 
    [root@Management conf]# ls 
    access_list.conf    amoeba.xml        dbServers.xml    functionMap.xml    log4j.xml    ruleFunctionMap.xml 
    amoeba.dtd                dbserver.dtd    function.dtd     log4j.dtd                rule.dtd     rule.xml
  1. 在这里我主要介绍配置  amoeba.xml、    dbServers.xml、 log4j.xml 三个主要的配置文件,其它文件没有特殊需要默认就可以了夺
  2. 4:vi amoeba.xml 修改主配置文件
  • 4.1)把默认端口8066改成3306
  • <property name="port">3066</property>
  • 4.2)把默认连接用户名和密码改成自己的
  • <property name="user">sky</property>

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

  • 4.3)把默认的客户端线程数,请求数及服务端回应数改成200,300,300
  • <property name="readThreadPoolSize">200</property>

    <!-- proxy server client process thread size --> 
                                                    <property name="clientSideThreadPoolSize">300</property>

    <!-- mysql server data packet process thread size --> 
                                                    <property name="serverSideThreadPoolSize">300</property

  • 4.4)把默认注释掉的读写分离选项,把注释去掉并readpool修改成server2
  • <!-- 
                                    --> 
                                    <property name="writePool">server1</property> 
                                    <property name="readPool">server2</property>

  1.  5:vi dbServers.xml 增加SEVER2模块,里面的连接用户名密码及地址都表示两台MYSQL的物理机器,192.168.1.11和192.168.1.13 另SERVER1是写,SERVER是读
  2. 需要手动增加SERVER2代码如下:
  3.   <dbServer name="abstractServer" abstractive="true">

    <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

    <property name="manager">${defaultManager}</property>

    <property name="sendBufferSize">64</property>

    <property name="receiveBufferSize">128</property>

    <!-- mysql port -->

    <property name="port">3306</property>

    <!-- mysql schema -->

    <property name="schema">test</property>

    <!-- mysql user -->

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

    <!--    mysql password

    -->

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

    </factoryConfig>

    <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">

    <property name="maxActive">500</property>

    <property name="maxIdle">500</property>

    <property name="minIdle">10</property>

    <property name="minEvictableIdleTimeMillis">600000</property>

    <property name="timeBetweenEvictionRunsMillis">600000</property>

    <property name="testOnBorrow">true</property>

    <property name="testWhileIdle">true</property>

    </poolConfig>

    </dbServer>

    <dbServer name="server1"    parent="abstractServer">

    <factoryConfig>

    <!-- mysql ip -->

    <property name="ipAddress">192.168.2.11</property>

    </factoryConfig>

    </dbServer>

 
 
  1. 最终改变成如下:
  1. <?xml version="1.0" encoding="gbk"?>

    <!DOCTYPE amoeba:dbServers SYSTEM "dbserver.dtd">

    <amoeba:dbServers xmlns:amoeba="http://amoeba.meidusa.com/">

    <!--

    Each dbServer needs to be configured into a Pool,

    If you need to configure multiple dbServer with load balancing that can be simplified by the following configuration:

    add attribute with name virtual = "true" in dbServer, but the configuration does not allow the element with name factoryConfig

    such as 'multiPool' dbServer

    -->

    <dbServer name="abstractServer" abstractive="true">

    <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

    <property name="manager">${defaultManager}</property>

    <property name="sendBufferSize">64</property>

    <property name="receiveBufferSize">128</property>

    <!-- mysql port -->

    <property name="port">3306</property>

    <!-- mysql schema -->

    <property name="schema">test</property>

    <!-- mysql user -->

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

    <!--    mysql password

    -->

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

    </factoryConfig>

    <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">

    <property name="maxActive">500</property>

    <property name="maxIdle">500</property>

    <property name="minIdle">10</property>

    <property name="minEvictableIdleTimeMillis">600000</property>

    <property name="timeBetweenEvictionRunsMillis">600000</property>

    <property name="testOnBorrow">true</property>

    <property name="testWhileIdle">true</property>

    </poolConfig>

    </dbServer>

    <dbServer name="server1"    parent="abstractServer">

    <factoryConfig>

    <!-- mysql ip -->

    <property name="ipAddress">192.168.2.11</property>

    </factoryConfig>

    </dbServer>

    <!-- ########################把如上的内容复制到下面,来增加SERVER2############################ -->

    <dbServer name="abstractServer" abstractive="true">

    <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">

    <property name="manager">${defaultManager}</property>

    <property name="sendBufferSize">64</property>

    <property name="receiveBufferSize">128</property>

    <!-- mysql port -->

    <property name="port">3306</property>

    <!-- mysql schema -->

    <property name="schema">test</property>

    <!-- mysql user -->

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

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

    </factoryConfig>

    <poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">

    <property name="maxActive">500</property>

    <property name="maxIdle">500</property>

    <property name="minIdle">10</property>

    <property name="minEvictableIdleTimeMillis">600000</property>

    <property name="timeBetweenEvictionRunsMillis">600000</property>

    <property name="testOnBorrow">true</property>

    <property name="testWhileIdle">true</property>

    </poolConfig>

    </dbServer>

    <dbServer name="server2"    parent="abstractServer">

    <factoryConfig>

    <!-- mysql ip -->

    <property name="ipAddress">192.168.2.13</property>

    </factoryConfig>

    </dbServer>

    <dbServer name="multiPool" virtual="true">

    <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

    <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->

    <property name="loadbalance">1</property>

    <!-- Separated by commas,such as: server1,server2,server1 -->

    <property name="poolNames">server1</property>

    </poolConfig>

    </dbServer>

    </amoeba:dbServers>

 
 
  • 6:修改log4j.xml 取消日志文件生成(太大了,磁盘很容易满)
  • <param name="file" value="${amoeba.home}/logs/project.log"/> 
    改成 
    <param name="file" value="<![CDATA[${amoeba.home}/logs/project.log>/dev/null]]>"/>
  • 7:性能优化,打开bin/amoeba
  • DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k" 
    改成 
    DEFAULT_OPTS="-server -Xms512m -Xmx512m -Xmn100m -Xss1204k"
  • 8:启动amoeba
  • nohup /usr/local/amoeba/bin/amoeba start 2>&1 >/dev/null &
 
 
 
 

本文出自 “Newbie's World” 博客,请务必保留此出处http://skyson.blog.51cto.com/2497647/623449

Amoeba新版本MYSQL读写分离配置的更多相关文章

  1. Amoeba for MySQL读写分离配置

    一.      安装和运行Amoeba 1. Amoeba for MySQL 架构: 2. 验证Java的安装Amoeba框架是基于Java SE1.5开发的,建议使用Java SE1.5以上的版本 ...

  2. amoeba实现MySQL读写分离

    amoeba实现MySQL读写分离 准备环境:主机A和主机B作主从配置,IP地址为192.168.131.129和192.168.131.130,主机C作为中间件,也就是作为代理服务器,IP地址为19 ...

  3. 使用amoeba实现mysql读写分离

    使用amoeba实现mysql读写分离 1.什么是amoeba? ​ Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明. ...

  4. mysql读写分离配置(整理)

    mysql读写分离配置 环境:centos7.2 mysql5.7 场景描述: 数据库Master主服务器:192.168.206.100 数据库Slave从服务器:192.168.206.200 M ...

  5. 使用Amoeba实现mysql读写分离机制

    Amoeba的实用指南 http://docs.hexnova.com/amoeba/ 如何实现mysql读写分离 : 通常来说有两种方式: 1,应用程序层实现 2,中间件层实现 应用层实现 应用层实 ...

  6. amoeba安装与实现amoeba for mysql读写分离

    运行环境 l  CentOS6.3 l  Jdk1.6.0_30 l  amoeba-mysql-binary-2.2.0 l  amoeba:192.168.88.17 l  master1:192 ...

  7. mysql中间件amoeba实现mysql读写分离

    Amoeba是一个以MySQL为底层数据存储,并相应用提供MySQL协议接口的proxy.它集中地响应应用的请求,根据用户事先设置的规则.将SQL请求发送到特定的数据库上运行.基于此能够实现负载均衡. ...

  8. Amoeba 实现MySQL读写分离

    Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy,它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡. ...

  9. mysql读写分离配置,利用mybatis实现,解释为什么dynamicDataSource不行

    之前发布了mysql主从配置的博客,配置完成之后,那么我们肯定要拿主从来做点什么. 我第一想到的就是mysql的读写分离,让读写分离之后可以大大的提供mysql的性能,比单纯用mysql主从做备份好很 ...

随机推荐

  1. win10系统下使用EDGE浏览器找不到Report Builder 启动图标

    Win10系统下如果要使用Report Builder,可能存在EDGE浏览器或者Chrome找不到ReportBuilder的启动图标的情况,此时,应以管理员权限运行IE浏览器,即可看到图标.

  2. electron打包整理

    最近在折腾把项目打包成桌面应用程序,发现一个工具electron,可以讲项目打包成一个跨平台的应用程序,很方便,来学习一下. 1.先安装electron.electron-packager,安装方法可 ...

  3. WPF学习08:MVVM 预备知识之COMMAND

    WPF内建的COMMAND是GOF 提出的23种设计模式中,命令模式的实现. 本文是WPF学习07:MVVM 预备知识之数据绑定的后续,将说明实现COMMAND的三个重点:ICommand  Comm ...

  4. MySQL多表

    一.外键 1.外键:链接两张表的字段,通过主表的主键和从表的外键来描述主外键关系,呈现的是一对多的关系.例如:商品类别(一)对商品(多),主表:商品类别表,从表:商品表. 2.外键的特点:从表外键的值 ...

  5. absolute元素水平居中

    原始(未居中): .con{ width:200px; height:200px; background:#ccc; position:relative; } .abs{ width:40px; he ...

  6. Android Studio 导入新工程项目

    1 导入之前先修改工程下相关文件 1.1 只需修改如下三个地方1.2 修改build.gradle文件 1.3 修改gradle/wrapper/gradle-wrapper.properties 1 ...

  7. React全家桶之一 react-router之高级

    使用query获取URL中的参数 //引入相关的依赖 const Page = props => <div> <h1>{props.location.query.mess ...

  8. 关于Farseer.net轻量级ORM开源框架 V1.0 概念版本开发的消息

    V0.2版的开源距离今天(05年03月)已有近3年的时间.可以说这个版本已经有点落伍的感觉了,呵呵. V0.2版至今一直处于BUG的修复及一些细小功能的增加,所以版本号上一直没有变化. 其实在这1.2 ...

  9. codeforces_D. Social Circles

    http://codeforces.com/contest/1060/problem/D 题意: n个客人,每个客人希望自己左边空li个座位,右边空ri个座位,可以形成任意个圆,问最少多少个座位. 思 ...

  10. 取消input聚焦时的边框,去除ios点击时,自动添加的底色效果

    /*去除ios点击时,自动添加的底色效果*/ -webkit-tap-highlight-color: rgba(, , , ); /*去除焦点框*/ outline:none;