e2

滴滴侠,fai抖

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

在做体系结构作业时,需要实现一个大数据量,对响应速度要求比较高的网站,类似于淘宝。需要使用分布式数据库,负载均衡和读写分离技术。我经过搜索,发现开源的amoeba非常轻便好用。而且是淘宝的某个大牛研发的,支持国产哈哈!主要是中文文档看上去很方便,而且文档写得也挺清晰详细的,易上手。

 

一、amoeba的安装

 

1.准备环境

电脑必须已安装并配置好jdk目前Amoeba经验证在JavaTM SE 1.5和Java SE 1.6能正常运行,(可能包括其他未经验证的版本),文档上是这么说,不过我用的是最新的jdk1.8也是完全可行的。所以1.5版本之后应该都是可以的。本文所使用操作系统为Windows7 64位,amoeba版本为2.2.0,anoeba所在服务器ip为192.168.1.102,后端数据库为MySQL-5.6.24,两台mysql数据库所在服务器ip分别为127.0.0.1和192.168.1.104


2.下载安装

到此网址下载amoeba:http://sourceforge.NET/projects/amoeba/files/,下载后是压缩包形式,在电脑目录中创建一个文件夹命名为amoeba,将压缩包解压到此文件夹中,解压后的文件如下图所示:



 

3.启动amoeba

打开cmd,进入amoebabin目录,运行输入命令amoeba

(说来也奇怪,我一开始下的amoeba 3.0以上的版本,在这里输入命令时会显示不存在该命令,直到我换用了amoeba 2.0的版本之后才好了,真是奇怪。好想找到amoeba的作者问一下哦,不过估计本菜鸟遇不上此等大牛了哭

如果看到:amoeba start|stop 就代表安装成功了



 

二、amoeba的配置

 

#/*  Amoeba总共有7个配置文件,分别如下:

#/*  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输出日志的级别和方式。

# 配置后端mysql 服务器连接[dbServer.xml]

 

 

配置amoeba中的dbServer.xml(后端mysql 服务器连接配置)

打开conf文件夹下的dbServer.xml,需要更改的有以下几个地方:

1.设置abstractserver,里面定义了要代理的mysql服务器的用户名和密码(密码遮住不给你们看啦!)



 

2.添加两个dbServer,继承自abstractserver,一个代表主数据库,一个代表从数据库。



 

3.配置数据库池。



 

dbServer.xml配置完毕。

 

4. 配置 Amoeba 监听端口[amoeba.xml]

配置监听IP,登录账户和密码(密码不给看)



读写分离配置:



 

amoeba.xml配置完毕。

5. 配置 Amoeba 插入规则[rule.xml]

 

rule.xml配置完毕。

三、amoeba启动与读写分离测试

1.启动amoeba

首先,确认对被代理的Mysql数据库拥有有远程登录权限,没有的话通过以下命令赋予权限:(密码设置的123)

GRANT ALL PRIVILEGES ON *.* TO 'root'@'192.168.1.102' IDENTIFIED BY '123' WITH GRANT OPTION;


在命令行中进入当前目录,输入amoeba start启动amoeba



 

2.新开一个命令行,输入以下命令登录>mysql -uroot -h 192.168.1.102 -P8066 -p,密码是123,如果可以正常登录,则amoeba配置成功。



3.分别在两台后端数据库服务器的test数据库中新建一个test表,插入不同数据,这里分别插入的是100,101和102,在登录amoeba的命令提示符中输入

insert into test.test (id) values (100);

insert into test.test (id) values (101);

insert into test.test (id) values (102);

插入3次,发现第一次插入了master服务器的数据库表,第二次插入了slave服务器的数据库表,第三次又插入了master的数据库表。id为偶数插入master,id为奇数插入slave,与我们之前在rule.xml中配置的一致。

插入之后,再输入语句:

select * from test.test;

会出现100,101,102,所有服务器中数据库里数据。

所以之前插入的三条数据虽然被分片到了不同的数据库节点,但Amoeba的合并工作使得它们看起来像在一个库里,也因此可见Amoeba对客户端的透明。.




posted on 2017-08-07 13:47  纯黑Se丶  阅读(268)  评论(0编辑  收藏  举报