Amoeba框架是居于JDK1.5开发的,采用了JDK1.5的特性,所以还需要安装java环境,建议使用javaSE1.5以上的JDK版本

1、安装java环境

先去官网下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

安装:

命令:
[root@bogon src]# rpm -ivh jdk-8u111-linux-x64.rpm

设置java环境变量

命令:
[root@bogon src]# vim /etc/profile在最后添加:
JAVA_HOME=/usr/java/jdk1.8.0_111
JRE_HOME=/usr/java/jdk1.8.0_111/jre
CLASS_PATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin
export JAVA_HOME JRE_HOME CLASS_PATH PATH环境变量生效:
[root@bogon amoeba]# source /etc/profile环境是否成功:
[root@bogon src]# java -version
java version "1.8.0_111"
Java(TM) SE Runtime Environment (build 1.8.0_111-b14)
Java HotSpot(TM) 64-Bit Server VM (build 25.111-b14, mixed mode)

2、安装Amoeba

可以从https://sourceforge.net/projects/amoeba/下载最新版本的Amoeba,我这里下载的是amoeba-mysql-3.0.5-RC-distribution.zip。Amoeba安装非常简单,直接解压即可使用,这里将Amoeba解压到/usr/local/amoeba目录下,这样就安装完成了

  执行命令:[root@bogon amoeba]# pwd /usr/local/amoeba查看目录:[root@bogon amoeba]# ll总用量 20drwxrwxrwx. 2 root root 4096 7月 5 2013 benchmarkdrwxrwxrwx. 2 root root 4096 7月 5 2013 bindrwxrwxrwx. 2 root root 4096 7月 5 2013 conf-rwxrwxrwx. 1 root root 728 7月 5 2013 jvm.propertiesdrwxrwxrwx. 2 root root 4096 7月 5 2013 lib

3、配置Amoeba

Amoeba的配置文件在本环境下位于/usr/local/amoeba/conf目录下。配置文件比较多,但是仅仅使用读写分离功能,只需配置两个文件即可,分别是dbServers.xml和amoeba.xml,如果需要配置ip访问控制,还需要修改access_list.conf文件,下面首先介绍dbServers.xml

执行命令:
[root@bogon amoeba]# cat conf/dbServers.xml 复制进去:
<?xml version="1.0" encoding="utf-8"?><!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 factoryConfigsuch as 'multiPool' dbServer   --><dbServer name="abstractServer" abstractive="true"><factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory"><property name="connectionManager">${defaultManager}</property><property name="sendBufferSize">64</property><property name="receiveBufferSize">128</property><!-- mysql port --><property name="port">3306</property>  #设置Amoeba要连接的mysql数据库的端口,默认是3306<!-- mysql schema --><property name="schema">testdb</property>  #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver<!-- mysql user --><property name="user">test1</property>  #设置amoeba连接后端数据库服务器的账号和密码,因此需要在所有后端数据库上创建该用户,并授权amoeba服务器可连接<property name="password">111111</property></factoryConfig><poolConfig class="com.meidusa.toolkit.common.poolable.PoolableObjectPool"><property name="maxActive">500</property>  #最大连接数,默认500<property name="maxIdle">500</property>    #最大空闲连接数<property name="minIdle">1</property>    #最新空闲连接数<property name="minEvictableIdleTimeMillis">600000</property><property name="timeBetweenEvictionRunsMillis">600000</property><property name="testOnBorrow">true</property><property name="testOnReturn">true</property><property name="testWhileIdle">true</property></poolConfig></dbServer><dbServer name="writedb"  parent="abstractServer">  #设置一个后端可写的dbServer,这里定义为writedb,这个名字可以任意命名,后面还会用到<factoryConfig><!-- mysql ip --><property name="ipAddress">192.168.2.204</property> #设置后端可写dbserver</factoryConfig></dbServer><dbServer name="slave"  parent="abstractServer">  #设置后端可读dbserver<factoryConfig><!-- mysql ip --><property name="ipAddress">192.168.2.205</property></factoryConfig></dbServer><dbServer name="myslave" virtual="true">  #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave<poolConfig class="com.meidusa.amoeba.server.MultipleServerPool"><!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA--><property name="loadbalance">1</property>  #选择调度算法,1表示复制均衡,2表示权重,3表示HA, 这里选择1<!-- Separated by commas,such as: server1,server2,server1 --><property name="poolNames">slave</property>  #myslave组成员</poolConfig></dbServer></amoeba:dbServers>

另一个配置文件amoeba.xml

执行命令:
[root@bogon amoeba]# cat conf/amoeba.xml 复制配置:
<?xml version="1.0" encoding="utf8"?><!DOCTYPE amoeba:configuration SYSTEM "amoeba.dtd">
<amoeba:configuration xmlns:amoeba="http://amoeba.meidusa.com/"><proxy><!-- service class must implements com.meidusa.amoeba.service.Service --><service name="Amoeba for Mysql" class="com.meidusa.amoeba.mysql.server.MySQLService"><!-- port --><property name="port">8066</property>    #设置amoeba监听的端口,默认是8066<!-- bind ipAddress -->    #下面配置监听的接口,如果不设置,默认监听所以的IP<!-- <property name="ipAddress">127.0.0.1</property>--><property name="connectionFactory"><bean class="com.meidusa.amoeba.mysql.net.MysqlClientConnectionFactory"><property name="sendBufferSize">128</property><property name="receiveBufferSize">64</property></bean></property><property name="authenticateProvider"><bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">#提供客户端连接amoeba时需要使用这里设定的账号 (这里的账号密码和amoeba连接后端数据库服务器的密码无关)<property name="user">root</property>    <property name="password">123456</property><property name="filter"><bean class="com.meidusa.toolkit.net.authenticate.server.IPAccessController"><property name="ipFile">${amoeba.home}/conf/access_list.conf</property></bean></property></bean></property></service><runtime class="com.meidusa.amoeba.mysql.context.MysqlRuntimeContext"><!-- proxy server client process thread size --><property name="executeThreadSize">128</property><!-- per connection cache prepared statement size  --><property name="statementCacheSize">500</property><!-- default charset --><property name="serverCharset">utf8</property><!-- query timeout( default: 60 second , TimeUnit:second) --><property name="queryTimeout">60</property></runtime></proxy><!-- Each ConnectionManager will start as threadmanager responsible for the Connection IO read , Death Detection--><connectionManagerList><connectionManager name="defaultManager" class="com.meidusa.toolkit.net.MultiConnectionManagerWrapper"><property name="subManagerClassName">com.meidusa.toolkit.net.AuthingableConnectionManager</property></connectionManager></connectionManagerList><!-- default using file loader --><dbServerLoader class="com.meidusa.amoeba.context.DBServerConfigFileLoader"><property name="configFile">${amoeba.home}/conf/dbServers.xml</property></dbServerLoader><queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter"><property name="ruleLoader"><bean class="com.meidusa.amoeba.route.TableRuleFileLoader"><property name="ruleFile">${amoeba.home}/conf/rule.xml</property><property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property></bean></property><property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property><property name="LRUMapSize">1500</property><property name="defaultPool">writedb</property>  #设置amoeba默认的池,这里设置为writedb<property name="writePool">writedb</property>  #这两个选项默认是注销掉的,需要取消注释,这里用来指定前面定义好的俩个读写池<property name="readPool">myslave</property>   #<property name="needParse">true</property></queryRouter>
</amoeba:configuration>

4、在masterdb上创建数据库testdb

在主库创建表:testdb
mysql> create database testdb;分别在masterdb和slavedb上为amoedb授权:
mysql> GRANT ALL ON testdb.* TO 'test1'@'192.168.2.203' IDENTIFIED BY '111111';
Query OK, 0 rows affected (0.05 sec)
mysql> privileges;

启动amoeba

命令:
[root@bogon amoeba]# /usr/local/amoeba/bin/launcher异常:
Error: JAVA_HOME environment variable is not set.
[root@bogon amoeba]# vim /etc/profile^C
[root@bogon amoeba]# source /etc/profile
[root@bogon amoeba]# /usr/local/amoeba/bin/launcher
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=16m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=96m; support was removed in 8.0The stack size specified is too small, Specify at least 228k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.#从错误文字上看,应该是由于stack size太小,导致JVM启动失败,要如何修改呢?
#其实Amoeba已经考虑到这个问题,并将JVM参数配置写在属性文件里。现在,让我们通过该属性文件修改JVM参数。
#修改jvm.properties文件JVM_OPTIONS参数。命令:
[root@bogon amoeba]# vim /usr/local/amoeba/jvm.properties 改成:JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
原为:JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss196k -XX:PermSize=16m -XX:MaxPermSize=96m"再次启动:
[root@bogon ~]# /usr/local/amoeba/bin/launcherat org.codehaus.plexus.classworlds.launcher.Launcher.launchStandard(Launcher.java:329)at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:239)at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:127)at org.codehaus.classworlds.Launcher.main(Launcher.java:110)
Caused by: com.meidusa.toolkit.common.bean.util.InitialisationException: default pool required!,defaultPool=writedb invalidat com.meidusa.amoeba.route.AbstractQueryRouter.init(AbstractQueryRouter.java:469)at com.meidusa.amoeba.context.ProxyRuntimeContext.initAllInitialisableBeans(ProxyRuntimeContext.java:337)... 11 more2016-10-24 18:46:37 [INFO] Project Name=Amoeba-MySQL, PID=1577 , System shutdown ....
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option PermSize=16m; support was removed in 8.0
Java HotSpot(TM) 64-Bit Server VM warning: ignoring option MaxPermSize=96m; support was removed in 8.02016-10-24 18:50:19 [INFO] Project Name=Amoeba-MySQL, PID=1602 , starting...
log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml
2016-10-24 18:50:21,668 INFO  context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45-mysql-amoeba-proxy-3.0.4-BETA
log4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf
2016-10-24 18:50:22,852 INFO  net.ServerableConnectionManager - Server listening on 0.0.0.0/0.0.0.0:8066.查看端口:
[root@bogon ~]# netstat -unlpt | grep java
tcp        0      0 :::8066                     :::*                        LISTEN   1602/java    由此可知Amoeba启动正常

5、测试

远程登陆mysql客户端通过指定amoeba配置文件中指定的用户名、密码、和端口以及amoeba服务器ip地址链接mysql数据库

在testdb中创建表test并插入数据分别登陆masterdb和slavedb查看数据停掉masterdb,然后在客户端分别执行插入和查询功能可以看到,关掉masterdb和写入报错,读正常开启masterdb上的msyql 关闭slave上的mysql可以看到插入成功,读取失败开启slavedb上的mysql,查看数据是否自动同步OK 一切正常,到此全部结束

备注:

Amoeba主配置文件($AMOEBA_HOME/conf/amoeba.xml),用来配置Amoeba服务的基本参数,如Amoeba主机地址、端口、认证方式、用于连接的用户名、密码、线程数、超时时间、其他配置文件的位置等。数据库服务器配置文件($AMOEBA_HOME/conf/dbServers.xml),用来存储和配置Amoeba所代理的数据库服务器的信息,如:主机IP、端口、用户名、密码等。切分规则配置文件($AMOEBA_HOME/conf/rule.xml),用来配置切分规则。数据库函数配置文件($AMOEBA_HOME/conf/functionMap.xml),用来配置数据库函数的处理方法,Amoeba将使用该配置文件中的方法解析数据库函数。切分规则函数配置文件($AMOEBA_HOME/conf/ruleFunctionMap.xml),用来配置切分规则中使用的用户自定义函数的处理方法。访问规则配置文件($AMOEBA_HOME/conf/access_list.conf),用来授权或禁止某些服务器IP访问Amoeba。日志规格配置文件($AMOEBA_HOME/conf/log4j.xml),用来配置Amoeba输出日志的级别和方式。

centos7 AMOEBA读写分离配置相关推荐

  1. Mysql一主多从和读写分离配置简记

    Mysql一主多从和读写分离配置简记 标签: mysql数据库服务器class数据库servermanager 2012-05-30 16:44 14981人阅读 评论(1) 收藏 举报  分类: 数 ...

  2. MySQL主从复制与读写分离配置及实操

    MySQL主从复制与读写分离 一.MySQL主从复制 1.复制类型 2.工作过程 二.MySQL读写分离 1.定义 2.存在意义 3.作用时间 4.原理 5.类型 基于程序代码内部实现 基于中间代理层 ...

  3. mysql 配置文件在哪_MySQL+MyCat分库分表 读写分离配置

    一. MySQL+MyCat分库分表 1 MyCat简介 java编写的数据库中间件 Mycat运行环境需要JDK. Mycat是中间件,运行在代码应用和MySQL数据库之间的应用. 前身: corb ...

  4. MySQL的主从配置+SpringBoot的MySQL读写分离配置

    MySQL的主从复制 点击前往查看MySQL的安装 1.主库操作 vim /etc/my.cnf 添加如下配置 log-bin=mysql-bin #[必须]启用二进制日志 server-id=128 ...

  5. SQL Server AlwaysOn读写分离配置

    SQL Server AlwaysOn读写分离配置 pursuer.chen 备注: 作者:pursuer.chen 博客:http://www.cnblogs.com/chenmh 本站点所有随笔都 ...

  6. sqlserver AlwaysOn实现读写分离配置及java/net代码实现

    1.用读写分离的原因: O.读写量很大,为了提升数据库读写性能,将读写进行分离: O.如果多机房下写少读多,同时基于数据一致性考虑,只有一个主库存入所有的数据写入,本地再做从库提供读取,减少多机房间直 ...

  7. MyCat:开源分布式数据库中间件之数据库分片和读写分离配置

    mycat权威文档指南下载 1.   MyCAT介绍 1.1. 什么是MyCAT? 简单的说,MyCAT就是: 一个彻底开源的,面向企业应用开发的"大数据库集群" 支持事务.ACI ...

  8. 读写分离时mycat不能链接mysql_Mycat读写分离配置实践

    Mycat读写分离配置实践 发布时间:2020-08-16 01:08:20 来源:ITPUB博客 阅读:81 作者:jeanron100 工作这些年来,也去了一些地方,有了一些见闻,隐隐感觉很多文化 ...

  9. mysql amoeba 配置_Amoeba新版本MYSQL读写分离配置

    官方简介 Amoeba的中文意思是变型虫 主要解决: • 降低 数据切分带来的复杂多数据库结构 • 提供切分规则并降低 数据切分规则 给应用带来的影响 • 降低db 与客户端的连接数 • 读写分离 个 ...

  10. 001.Amoeba读写分离部署

    一 Amoeba简介 Amoeba(变形虫)项目,该开源框架于2008年 开始发布一款 Amoeba forMysql软件.这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQ ...

最新文章

  1. 中国云计算市场加速发展 今年有望突破3000亿
  2. 计算机系统占有率,微软继续领跑PC操作系统市场 Win10占有率突破25%
  3. 第11课 尼克与强盗 《小学生C++趣味编程》
  4. Android-Activity中的onNewIntent()方法调用简析
  5. c语言求e近似值精度在10e6,中石油2013秋季学期《C语言》补考在线适用于2014年4月...
  6. 如何更新 Ubuntu Linux
  7. [iOS]深入浅出 iOS 之多线程 NSThread
  8. springboot整合JDBC+Druid
  9. php5的程序如何安装在php7,centos安装php5和php7,并在apache里同时使用
  10. 非参数统计的Python实现—— Kruskal-Wallis 单因素方差分析
  11. 转录组测序技术及结果解读(一)——测序样品设置及选择
  12. 2022年31省市数字化转型路线图
  13. 您需要计算机管理员提供的权限才能更改,您需要管理员权限才能删除此文件夹...
  14. 多次重复原生进入RN优化Catalyst Instance has already disappeared
  15. Arduino使用人体红外传感器
  16. 简述PHP是什么?PHP文件是什么?
  17. CAD图纸怎么保存为PDF?几个步骤轻松掌握
  18. Vue搜索框显示最近(历史)搜索记录
  19. c语言windows库函数,C语言访问Windows COM组件函数
  20. 微商红利落幕,互联网创业如何破局?

热门文章

  1. Windows Server 2012 R2添加或删除角色和功能时提示无法打开匿名级安全令牌
  2. 轻松记录南极最美丽风景 有TA就已经足够
  3. 手机应用误删怎么恢复
  4. 修改系统时区 /etc/localtime
  5. linux下搭建L2TP+IPSec服务端,组建异地虚拟局域网
  6. 适合用做公司官网WordPress主题风格免受权版本
  7. 3ds Max Taper、Twist和Bend的运用——点心的制作
  8. 7、Horizon 虚拟桌面登录
  9. 银行卡卡号基于Luhn算法的格式校验
  10. java wav 转 mp3_java,wavToMP3格式转换