本文收集整理自:

一、Amoeba 是什么

Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发。座落与Client、DB Server(s)之间。对客户端透明。具有负载均衡、高可用性、sql过滤、读写分离、可路由相关的query到目标数据库、可并发请求多台数据库合并结果。

主要解决:

• 降低 数据切分带来的复杂多数据库结构

• 提供切分规则并降低 数据切分规则 给应用带来的影响

• 降低db 与客户端的连接数

• 读写分离

目前可以有三种解决方式实现mysql读写分离

1 程序修改mysql操作类

优点:直接和数据库通信,简单快捷的读写分离和随机的方式实现的负载均衡,权限独立分配

缺点:自己维护更新,增减服务器在代码处理

2 amoeba

参考官网:http://amoeba.meidusa.com/

优点:直接实现读写分离和负载均衡,不用修改代码,有很灵活的数据解决方案

缺点:自己分配账户,和后端数据库权限管理独立,权限处理不够灵活

3 mysql-proxy

参考 mysql-proxy。

优点:直接实现读写分离和负载均衡,不用修改代码,master和slave用一样的帐号

缺点:字符集问题,lua语言编程,还只是alpha版本,时间消耗有点高

如果你不能安装软件来解决读写分离,那可以尝试阿权的项目解决思路。

如果你可以安装软件,那amoeba是不错的,mysql-proxy不太建议,目前只有alpha版本,效率还不太理想,amoeba目前在阿里巴巴是内部项目,正在生产环境使用的。

三、快速架设amoeba,实现mysql主从读写分离

假设amoeba的前提条件:

n         Java SE 1.5 或以上 Amoeba 框架是基于JDK1.5开发的,采用了JDK1.5的特性。

n         支持Mysql 协议版本10(mysql 4.1以后的版本)。

n         您的网络环境至少运行有一个mysql 4.1以上的服务

1.首先配置主从库:这里不做介绍,《Amoeba搞定mysql主从读写分离》有介绍。

2.amoeba安装:

rpm -ivh jdk-8-linux-x64.rpm  默认安装到了/usr/java下

查看是否安装成功:java -version 会看到版本信息

配置环境变量:vi /etc/profile

在文件中追加:

JAVA_HOME=/usr/java/jdk1.7.0

JRE_HOME=/usr/java/jdk1.7.0/jre

PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin

CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

export JAVA_HOME JRE_HOME PATH CLASSPATH

使修改生效:source /etc/profile

查看系统环境状态:

[root@admin ~]# echo $PATH

/usr/local/cmake/bin:/usr/lib64/qt-3.3/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/usr/java/jdk1.7.0/bin:/usr/java/jdk1.7.0/jre/bin:/root/bin

接下来就是安装amoeba-mysql

这里用 《Amoeba搞定mysql主从读写分离》给的链接下载下来的conf文件好像有修改,可以直接从Amoeba在SourceForge的主页下载Amoeba,http://sourceforge.net/projects/amoeba/files/。

我第一下下载了3.X版本,总是报错。后来下载了2.x.tar.gz的版本,直接解压就OK!

tar -zxpf amoeba-mysql-binary-2.1.0-RC5.tar.gz -C /usr/local/amoeba-mysql

运行很简单 bin/amoeba 即可,后台运行 bin/amoeba &

如果没有配置JAVA_HOME,则会有如下提示:

[root@aslibra amoeba-mysql]# bin/amoeba

Error: JAVA_HOME environment variable is not set.

如果你是比1.5低,比如1.4的,运行会有错误提示,下载jdk1.5以上的版本,压缩版解压后设置好环境变量即可。

我的启动时报错:

The stack size specified is too small, Specify at least 160k

Error: Could not create the Java Virtual Machine.

Error: A fatal exception has occurred. Program will exit.

解决:

打开bin/amoeba

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

改成

DEFAULT_OPTS="-server -Xms2048m -Xmx2048m -Xmn1000m -Xss2048k"

配置文件位于conf目录下,执行文件位于bin目录下,解压后发现bin目录下的启动文件没有可执行权限,请执行:chmod -R +x /usr/local/amoeba/bin/

Amoeba For MySQL 的使用非常简单,所有的配置文件都是标准的XML 文件,总共有四个配置文件。分别为:

◆ amoeba.xml:主配置文件,配置所有数据源以及Amoeba 自身的参数设置;实现主从的话配置这个文件就可以了;

◆ rule.xml:配置所有Query 路由规则的信息;

◆ functionMap.xml:配置用于解析Query 中的函数所对应的Java 实现类;

◆ rullFunctionMap.xml:配置路由规则中需要使用到的特定函数的实现类;

conf/amoeba.xml 配置mysql数据库,简单说明一下:(以下的配置来自《Amoeba非常好用的mysql集群软件》,完全按照这个配置就OK!)

Amoeba配置文件修改

1 server节点定义amoeba为接受client访问的数据库,可以当作是mysql看待的,用户名和密码是访问时使用的,这个似乎不能定义多个用户名密码,也就是只有一个权限控制,这个对于多应用似乎不大方便。

2 dbServerList里面可以定义很多实际的mysql数据库,增加dbServer节点即可,这里的用户名密码是作为amoeba操作数据库使用 的,要有足够权限。dbServer可以是虚拟的,比如要做负载均衡时可用定义多个数据库归属到此虚拟数据库。2.1RC版的dbServer已移到 dbServers.xml文件中配置。

3 queryRouter节点定义读写的分配情况,也就是读写该发往那个dbServer。

vi amoeba.xml 修改主配置文件

4.1)把默认端口8066改成3306

3066

4.2)把默认连接用户名和密码改成自己的

sky

123456

4.3)把默认的客户端线程数,请求数及服务端回应数改成200,300,300

200

300

300

4.4)把默认注释掉的读写分离选项,把注释去掉并readpool修改成server2

server1

server2

提示:readPool或writePool可以是dbServers中的multiPool名称,用multiPool来设置负载均衡。

***************************************

***************************************

此处如果有两个以上的从库做负载均衡的话,可指定:

server1  //写池不变

multiPool  //server2 =》multiPool

在修改dbServers.xml 时增加

192.168.2.13

有几个从server增加几个,然后在 中添加从的server名server2,server3,server4,server5

配置方式在dbServers.xml注释中有提到:

*******************************************

**********************************************

5.vi dbServers.xml 增加SEVER2模块,里面的连接用户名密码及地址都表示两台MYSQL的物理机器,192.168.1.11和192.168.1.13 另SERVER1是写,SERVER是读

${defaultManager}

64

128

3306

test

root

123456

500

500

10

600000

600000

true

true

192.168.2.11

192.168.2.13

1

server1

6:修改log4j.xml 取消日志文件生成,如做pdf时(太大了,磁盘很容易满)

改成

注意:我在2.1-rc5版本下第6条的设置JAVA运行时报警,无法通过。

这个确实不能通过!

7:性能优化,打开bin/amoeba

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss128k"

改成

DEFAULT_OPTS="-server -Xms2048m -Xmx2048m -Xmn1000m -Xss2048k"

8:启动amoeba

nohup /usr/local/amoeba/bin/amoeba start 2>&1 >/dev/null &

amoeba for mysql配置_amoeba-mysql配置安装(收集整理)相关推荐

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

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

  2. mysql安装好需要优化配置一下_Mysql的安装、配置、优化

    Mysql的安装.配置.优化 安装步骤 1.先单击中的安装文件,如果是win7系统,请选择以管理员的方式运行. 2.大概需要30秒的时间,开始进入安装界面.请先把标红的打勾,好进行下一步的动作. 3. ...

  3. cacti系列(一)之cacti的安装及配置监控mysql服务

    简介 Cacti是通过 snmpget来获取数据,使用 RRDtool绘画图形,而且你完全可以不需要了解RRDtool复杂的参数.它提供了非常强大的数据和用户管理功能,可以指定每一个用户能查看树状结构 ...

  4. Apache+php+mysql在windows下的安装与配置(图文)

    先准备好软件: 一.安装Apache,配置成功一个普通网站服务器 运行下载好的"apache_2.0.55-win32-x86-no_ssl.msi",出现如下界面: 出现Apac ...

  5. mysql的介绍;安装及基本配置;mysql数据库运行必备技能

    一.MySQL的介绍 1. 数据库:数据库集中存放位置 1) 常见的数据库类型:关系型(mysql.oracle.SQLserver2008,DB2),树型(windows注册表).非关系型(NoSQ ...

  6. mysql压缩配置_MySQL压缩版安装配置

    mysql-5.7.11默认的配置文件是在mysql/my-default.ini,或者自己建立一个my.ini文件 ----------------------------------------- ...

  7. mysql多实例安装配置_MySQL多实例安装配置

    MySQL进行多实例配置再生产环境中非常常见,比如一些高配置数据库服务器,就会跑多个MySQL实例,借助多实例绑定的方式提高服务器的整体资源利用率.另外在MySQL5.7以上版本还不支持多源复制时,当 ...

  8. MySQL数据库学习笔记(一)----MySQL 5.6.21的安装和配置(setup版)

    [正文] [开发环境] 物理机版本:Win 7旗舰版(64位) MySQL版本:5.5.40MSI版(64位) 一.数据库类型: (1)关系数据库 (2)面向对象数据库 (3)XML数据库 现在的主流 ...

  9. linux安装mysql字符_Linux下MySQL的彻底卸载和安装配置字符集

    前言: Linux环境下MySQL的安装和配置在网上已经有很多教程了.之所以写这篇文章是因为在配置字符集的时候找了网上的一些教程发现并不能用导致折腾了一阵子.下面的教程均是亲自实践. MySQL的彻底 ...

最新文章

  1. php stream 系列函数,PHP stream 系列函数使用遇到的问题??
  2. Apple首篇AI文章,SimGAN
  3. 制备pdms膜的方法_四川大学杨伟团队JMCC:实现柔性压阻式压力传感器的规模化制备...
  4. 雷卷 java,阿里巴巴资深技术专家雷卷:值得开发者关注的 Java 8 后时代的语言特性...
  5. CentOS 终端显示中文异常解决办法
  6. VNC viewer远程连接linux桌面
  7. 1.2 决策树代码实现
  8. windows下SecureCRT无法使用backspace(空格键)和上下左右键
  9. mitmproxy抓包 | Python实时生成接口自动化用例(三)
  10. window下Python2.7和3.5共存以及两个版本下使用pip
  11. python回测函数_Python事件化回测双均线
  12. 不显示BOM清单的版本
  13. 一个算法解决所有英文起名问题
  14. nvidia卸载程序无法继续运行_nvidia安装程序无法继续 不兼容怎么办 nvidia安装程序无法继续安装怎么办...
  15. 调停者模式 java_《JAVA与模式》之调停者模式
  16. β冲刺第二周第二次例会报告
  17. android滑屏效果,Android使用ViewFlipper和GestrueDetector共同实现滑屏效果实例
  18. uniapp(微信小程序)上传图片到阿里oss
  19. Docker下ELK三部曲之三:K8S上的ELK和应用日志上报
  20. 等保2.0 Windows主机测评过程

热门文章

  1. 根据不同情况给孩子取名的方法
  2. 结合ChatGPT的微软New Bing体验到底如何?
  3. 原来卓越亚马逊购物也很爽
  4. 02_MySQL数据库导入——source指令以及Navicat导入数据库方法
  5. 汉诺塔代码执行的流程图
  6. 排序-如何修改EXCEL排序
  7. MySQL-proxy代理导致PHP PDO::ATTR_EMULATE_PREPARES的预处理出错,MySQL报General error: 1243错误...
  8. HP打印机查看耗材余量
  9. 泰山OFFICE技术讲座:叶视图的边框效果确定
  10. 将Ubuntu 16.04系统语言改为简体汉字