原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。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. Class.getResourceAsStream()与ClassLoader.getResourceAsStream()获取资源时的路径说明

    Class.getResourceAsStream(): com.xusweeter.iot.ws.vodafone.config.VodafoneServiceConfig.class.getRes ...

  2. Java中的流(3)字符流-Reader和Writer

    java中提供了处理以16位的Unicode码表示的字符流的类,即以Reader和Writer 为基类派生出的一系列类.  1.Reader和Writer  这两个类是抽象类,只是提供了一系列用于字符 ...

  3. jmeter(十)JMeter 命令行(非GUI)模式

    前文 讲述了JMeter分布式运行脚本,以更好的达到预设的性能测试(并发)场景.同时,在前文的第一章节中也提到了 JMeter 命令行(非GUI)模式,那么此文就继续前文,针对 JMeter 的命令行 ...

  4. 【图片匹配】--- SIFT_Opencv3.1.0_C++_ubuntu

    最近在捣鼓图片相似性匹配算法.这里先说一点必要的题外话: 如果是在同一个object不同角度拍摄的多张图片中,使用SIFT可以有不错的效果: 如果是寻找类别相同的图片(可能不是同一object),SI ...

  5. PHP + ORACLE 远程连接数据库环境配置

    在ORACLE官网下载instantclient_11_2,放在D盘 把instantclient_11_2目录下的所有dll文件复制到C:\Windows\SysWOW64   和  D:\phpS ...

  6. vue报错-Error: Cannot find module '@babel/core'

    vue之webpack实战的时候遇到报错,Error: Cannot find module '@babel/core' 这报错,我百度了很久,后来发现报错里面有提示,发现是我的 babel-load ...

  7. Swift protocol extension method is called instead of method implemented in subclass

    Swift protocol extension method is called instead of method implemented in subclass protocol MyProto ...

  8. Discuz3.1登录QQ互联显示redirect uri is illegal(100010)的解决

    QQ互联最近也是BUG不断,引起了很多用户的不满,从早前关闭群组功能,到发布2.0接口标准,引发系列站长用户的连锁反应.而Discuz从X3开始,为了应对QQ互联的2.0接口标准,采用了云平台来整合Q ...

  9. asp 读取 另外一个带参数的asp文件(服务器不支持!放弃吧!骚年!)

    (服务器不支持!放弃吧!骚年!) 主要作用是为了分离数据库,灵感是这样的:收到json影响,把asp里的数据,用一个页面输出,然后用另外一个页面读取,这样就不用有数据库位置的烦恼了 代码 网上有很多, ...

  10. 19Web服务

    Web服务 Web服务 Micosoft.Net平台架构中的分布式系统主要包括两部分:用ASP.Net技术构建服务器端动态网页,以及Web服务(Web Service或XML Web Service) ...