amoeba 实现读写分离

中文官网参考地址:http://docs.hexnova.com/amoeba/

下载地址(amoeba-mysql-1.2.0-GA.zip):http://sourceforge.net/projects/amoeba/files/

解压到 C:\wnmp\amoeba 下

dos命令启动amoeba 执行 C:\wnmp\amoeba\bin\amoeba

提示要安装jdk  并设置环境变量 ,设置相关环境变量

  

配置amoeba.conf

<?xml version="1.0" encoding="gbk"?>

<!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
<amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/">

<server>
<!-- proxy server绑定的端口 -->
<property name="port">8066</property>

<!-- proxy server绑定的IP -->

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

<!-- proxy server net IO Read thread size -->
<property name="readThreadPoolSize">20</property>

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

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

<!-- socket Send and receive BufferSize(unit:K) -->
<property name="netBufferSize">128</property>

<!-- Enable/disable TCP_NODELAY (disable/enable Nagle‘s algorithm). -->
<property name="tcpNoDelay">true</property>

<!-- 对外验证的用户名 -->
<property name="user">root</property>

<!-- 对外验证的密码 -->

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

</server>

<!--
每个ConnectionManager都将作为一个线程启动。
manager负责Connection IO读写/死亡检测
-->
<connectionManagerList>
<connectionManager name="defaultManager" class="com.meidusa.amoeba.net.MultiConnectionManagerWrapper">
<property name="subManagerClassName">com.meidusa.amoeba.net.AuthingableConnectionManager</property>

<!--
default value is avaliable Processors
<property name="processors">5</property>
-->
</connectionManager>
</connectionManagerList>

<dbServerList>
<!--
一台mysqlServer 需要配置一个pool,
如果多台 平等的mysql需要进行loadBalance,
平台已经提供一个具有负载均衡能力的objectPool:com.meidusa.amoeba.mysql.server.MultipleServerPool
简单的配置是属性加上 virtual="true",该Pool 不允许配置factoryConfig
或者自己写一个ObjectPool。
-->
<dbServer name="server1">

<!-- PoolableObjectFactory实现类 -->
<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
<property name="manager">defaultManager</property>

<!-- 真实mysql数据库端口 -->
<property name="port">3306</property>

<!-- 真实mysql数据库IP -->
<property name="ipAddress">192.168.80.129</property>
<property name="schema">think_ceshi</property>

<!-- 用于登陆mysql的用户名 -->
<property name="user">admin</property>

<!-- 用于登陆mysql的密码 -->
<property name="password">admin</property>

</factoryConfig>

<!-- ObjectPool实现类 -->
<poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
<property name="maxActive">200</property>
<property name="maxIdle">200</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">

<!-- PoolableObjectFactory实现类 -->
<factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
<property name="manager">defaultManager</property>

<!-- 真实mysql数据库端口 -->
<property name="port">3306</property>

<!-- 真实mysql数据库IP -->
<property name="ipAddress">192.168.80.130</property>
<property name="schema">think_ceshi</property>

<!-- 用于登陆mysql的用户名 -->
<property name="user">admin</property>

<!-- 用于登陆mysql的密码 -->
<property name="password">admin</property>

</factoryConfig>

<!-- ObjectPool实现类 -->
<poolConfig class="com.meidusa.amoeba.net.poolable.PoolableObjectPool">
<property name="maxActive">200</property>
<property name="maxIdle">200</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="multiPool" virtual="true">
<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
<!-- 负载均衡参数 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
<property name="loadbalance">1</property>

<!-- 参与该pool负载均衡的poolName列表以逗号分割 -->
<property name="poolNames">server1,server2</property>
</poolConfig>
</dbServer>

</dbServerList>

<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
<property name="ruleConfig">${amoeba.home}/conf/rule.xml</property>
<property name="functionConfig">${amoeba.home}/conf/functionMap.xml</property>
<property name="ruleFunctionConfig">${amoeba.home}/conf/ruleFunctionMap.xml</property>
<property name="LRUMapSize">1500</property>
<property name="defaultPool">server1</property>

<property name="writePool">server1</property>
<property name="readPool">server2</property>

<property name="needParse">true</property>
</queryRouter>
</amoeba:configuration>

再次dos启动amoeba

用用dos   mysql命令登录amoeba实例对象  mysql -uroot -proot -h192.168.80.129 -P8066

use think_ceshi

就可以读写分离  操作相关数据库了

时间: 2024-08-29 01:37:19

amoeba 实现读写分离的相关文章

mysql基于amoeba配置读写分离

                     Mysql高级集群-读写分离Amoeba                          mysql在配置好主从复制之后,已经达到双机热备和容灾的效果.此博客是建立在主从复制的前提上 ,mysql基于amoeba的配置读写分离在我看来:就是为了达到数据库高可用性,安全性以及高并发,达到 负载均衡的效果.说简单点,我个人觉得意思就是让主服务器轻松点,不易挂掉.还有就是充分利用从服务器.  本人水平有限,望各位大神多多指点指点.我非常乐意听取意见. 此版本

Amoeba mysql读写分离搭建及介绍

Amoeba mysql读写分离搭建及介绍 推荐: http://blog.chinaunix.net/uid-20639775-id-154600.html

基于主从复制的Mysql双机热备+amoeba实现读写分离、均衡负载

读写分离指的是客户只能在主服务器上写,只能在从服务器上读,当然了,这也是要看配置,你可以在主服务器配置读的功能,但是在从服务器上只能读不能写,因为从服务器是基于binlog对主服务器的复制,如果在从服务器上写的话,会造成主从不一致的结果.mysql实现读写分离,写的压力虽然没有减少,但是读的压力瞬间就减少了一半. Amoeba的中文意思是阿米巴.变型虫Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy代理服务器.它集中地响应应用的请求,依据用户事先设置的规则

Amoeba实现读写分离

一.Amoeba工作原理 二.Amoeba安装及配置详解 下载:     wget  http://iweb.dl.sourceforge.net/project/amoeba/Amoeba%20for%20mysql/3.x/amoeba-mysql-3.0.5-RC-distribution.zip 解压后可直接使用 本人主要测试读写分离 配置文件 amoeba.xml关键点配置: <service name="Amoeba for Mysql" class="co

mysql基于amoeba的读写分离

如何实现mysql读写分离 : 通常来说有两种方式:                      master<--->master  (前读,后写)                                                                          | 1,应用程序层实现                                                                                          

amoeba实现读写分离简要笔记

首先,要做数据库主从,略过. 2.  下载amoeba,解压到某个目录,一般是解压到/usr/local/amoeba/目录 3.  配置amoeba,只要实现读写分离的话,需要配置两个文件 (1) dbServers.xml (2) amoeba.xml 在dbServers.xml需要指定通过amoeba能够连接那些数据库,包括这些数据库的IP,具体是哪些库,对应的进入到这些数据库的用户名和密码是什么. 在amoeba里面,要指定用来通过mysql-amoeba代理访问真实数据库的用户名和密

MySQL基于Amoeba实现读写分离

读写分离应用分析: 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作.解决方法: 配置多台数据库服务器以实现主从复制+读写分离.  1.基于程序代码内部实现 在代码中根据select. insert 进行路由分类,这种方法目前生产环境中应用最广泛.优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支.缺点是需要开发人员能来实现,运维人员无从下手. 2.基于中间代理层实现 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库. 常

实现mysql 数据集群的读写分离之 amoeba

服务器配置: amoeba    :192.168.240.130 master写服务器:192.168.240.129 slave读服务器 :192.168.240.128 mysql主从配置............略,可参照:http://752030200.blog.51cto.com/8936921/1853460 Amoeba数据库代理 前提条件应该把所有数据库节点的密码进行统一,并允许将要配置的amoeba的IP进行连接. 以下说明和配置文件信息引用自https://my.oschi

Amoeba for MySQL的读写分离配置

一.Amoeba概述 1.amoeba简介 Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目.其主要功能包括读写分离,垂直分库,水平分库等,经过测试,发现其功能和稳定性都非常的不错,如果需要构架分布式数据库环境,采用Amoeba是一个不错的方案.目前Amoeba一共包括For aladdin,For MySQL和For Oracle三个版本,本文主要关注For MySQL版本的一个读写分离实现. Amoeba处于在应用和数据库之间,