代码改变世界

Ubuntu10下MySQL搭建Amoeba_基础

2012-04-09 20:00  听风吹雨  阅读(5358)  评论(3编辑  收藏  举报

一、背景知识

Amoeba 是阿里巴巴的技术陈思儒开始的一个开源项目,它是分布式数据库Proxy解决方案。Amoeba框架是基于Java SE 1.5开发的,在安装Amoeba之前需要先安装Java环境。经验证,Amoeba在Java SE 1.5和Java SE 1.6上能正常运行。

(一) Amoeba包括3个产品:Amoeba From Sourceforge

1.      Amoeba for MySQL是Amoeba开源社区发布的一款MySQL数据库中间层代理软件,致力于数据库的切分整合、负载均衡、高可用性等;

2.      Amoeba for Aladdin支持所有提供jdbc驱动的数据库(Oracle、SQL Server、MySQL等) ;

3.      Amoeba for MongoDB支持NoSQL数据库MongoDB;

(二) 其他的MySQL分布式数据库系统的中间层软件还有MySQL Proxy,HiveDB。Amoeba for MySQL相较于其他软件有以下优势

1.      基于XML的配置文件,用SQLJEP语法编写规则,配置比较简单(MySQL Proxy需要编写大量Lua脚本才能实现),有比较完善的使用帮助文档

2.      同时支持水平切分和垂直切分(HiveDB只支持水平切分)

3.      目前的版本已经比较稳定,已有很多企业用于生产环境

4.      支持HA机制、支持活动连接数均衡、支持权重配置

相较于其他软件有以下劣势

1.      Amoeba for MySQL不支持事务:其实,分布式事务的问题是所有数据库中间层普遍面临的问题,不是Amoeba独有的问题;目前通常的解决办法是,将事务拆分成几个单数据库内的小事务,由应用程序进行总控。

2.      Amoeba for MySQL不支持跨节点JOIN:同样,这个问题也不是Amoeba独有的,通常的解决办法是由应用程序先从一个节点取出数据,然后由应用程序去其他节点JOIN。

3.      Amoeba for MySQL不支持跨节点排序:这个问题也不是Ameoba独有的,通常的解决办法是由应用程序从多个节点中取出数据,然后进行排序。

4.      Amoeba for MySQL不适合返回大量(超过10万)数据的查询。

5.      Amoeba for MySQL不支持分库分表,只能做到分数据库实例。

 

二、配置过程

下面是Amoeba for MySQL的基础搭建(不包含读写分离和数据分片):

(一) 下载JDK:jdk-6u30-linux-i586.bin(解压版安装)

(二) 安装和验证JDK:Ubuntu10下安装JAVA JDK

(三) 下载Amoeba for MySQL:amoeba-mysql-binary-2.1.0-RC5.tar.gz

(四) 安装和验证Amoeba for MySQL:

1.      拷贝文件到/tmp目录:E:\>pscp.exe amoeba-mysql-binary-2.1.0-RC5.tar.gz chen@192.168.1.147:/tmp/

2.      /usr/local创建文件夹:#mkdir amoeba

3.      进入文件夹:#cd amoeba

4.      解压文件到/usr/local/amoeba

#tar -zxvf /tmp/amoeba-mysql-binary-2.1.0-RC5.tar.gz

5.      验证Amoeba是否安装成功的命令(如下图):/usr/local/amoeba/bin/amoeba


(图1:安装成功)

6.      启动amoeba:/usr/local/amoeba/bin/amoeba start


(图2:启动成功)

7.      修改/usr/local/amoeba/conf/dbServers.xml文件:(需要根据自己的情况)

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

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

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

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

8.      只要上面的参数对了,amoeba.xml是不需要修改的,直接输入下面的命令,密码为空(默认为空),直接回车就可以进入了:

#mysql -u root -p -h 192.168.1.147 -P 8066

或者#mysql -u root -p -h 127.0.0.1 -P 8066

如果开启的amoeba的终端没有报错,恭喜你,搭建amoeba for mysql成功了!!下面是对配置的一些不错测试:

9.      使用SQLyog进行测试:


(图3:测试空密码)

10.   可以尝试修改amoeba.xml:

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

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

登陆应该改为:#mysql -u testuser -p -h 192.168.1.147 -P 8066,密码为password,这样一样能登陆成功。

11.   可以尝试使用SQLyog进行登陆


(图4:测试帐号密码)

 

三、注意事项

(一) 验证Amoeba是否安装成功的命令:/usr/local/amoeba/bin/amoeba 要全部输入,如果是进入到bin执行amoeba是不行的。

(二) #mysql -u root -p -h 127.0.0.1 -P 8066其中root和密码表示的是在amoeba.xml中配置的帐号密码。

(三) Amoeba主要配置文件:#/usr/local/amoeba/conf/*.xml

1.      amoeba.xml用来配置Amoeba服务的基本参数,如Amoeba主机地址、端口、认证方式、用于连接的用户名、密码、线程数、超时时间、其他配置文件的位置等。

2.      dbServers.xml用来存储和配置Amoeba所代理的数据库服务器的信息,如:主机IP、端口、用户名、密码等。

3.      rule.xml用来配置切分规则。

4.      ruleFunctionMap.xml用来配置切分规则中使用的用户自定义函数的处理方法。

5.      functionMap.xml用来配置数据库函数的处理方法,Amoeba将使用该配置文件中的方法解析数据库函数。

6.      access_list.conf用来授权或禁止某些服务器IP访问Amoeba。

7.      log4j.xml,用来配置Amoeba输出日志的级别和方式。

(四) dbServers.xml中的loadbalance标签选项的3个定义:

1=ROUNDROBIN round robin

2=WEIGHTBASED weight based

3=HA high availability

 

四、错误与疑问

1.      amoeba start之后,再用终端连接上mysql,出现了下面的错误:


(图5:错误信息)

这个错误是dbServers.xml中配置的mysql的连接存在问题,可以先使用里面的帐号测试登陆,进一步排除问题。

2.      下面两个图是启动amoeba的不同界面,为什么会有区别呢?用于调试:


(图6:有及时信息输出)


(图7:回到命令行了)

3.      Amoeba的启动用户,需要是root嘛?

4.      如果你修改了配置,不要以为重启amoeba就可以了,如果你还是使用之前遗留的链接到MySQL的操作界面,那么你修改的文件是不会生效的,需要重新登录数据库,比如我是在IP147的机器上搭建amoeba的,如果是在本机打开终端的就需要关掉终端,重新打开,如果还是使用SQLyog的,那就需要断开,重新链接。

5.      Amoeba Monitor Server的使用?

6.      什么是tar.gz

解压:$ tar zxvf FileName.tar.gz

压缩:$ tar zcvf FileName.tar.gz DirName

 

五、参考文献

Amoeba使用指南

通过Amoeba对一个数据库实例进行操作

Amoeba for MySQL学习研究之介绍

Amoeba for MySQL学习研究之安装

Amoeba for MySQL学习研究之配置

UBUNTU11.10下安装 JDK-6U30-LINUX-I586.BIN

linux解压 tar命令

tar.gz