amoeba安装及读写分离配置(windows版)_amoeba操作系统-程序员宅基地

技术标签: 数据库  

在做体系结构作业时,需要实现一个大数据量,对响应速度要求比较高的网站,类似于淘宝。需要使用分布式数据库,负载均衡和读写分离技术。我经过搜索,发现开源的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 start|stop 就代表安装成功了(注意:如果是amoeba 3.0及3.0以上的版本,输入此命令会显示不存在该命令,因为3.0的版本的命令不是amoeba,而是launcher。我这里的版本是amoeba 2.0,所以可以用amoeba命令。)



二、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对客户端的透明。.




版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/huanghanqian/article/details/50916988

智能推荐

爱贝支付 - 服务端 - nodejs实现_export const generatesign = (signstr) => { let sig-程序员宅基地

文章浏览阅读591次。爱贝支付nodejs实现,完整的代码,复制即可执行总结几个小坑:1. 使用私钥进行签名的问题,爱贝支付的签名规则是采用RSA MD5数字签名算法,私钥签名、公钥验签 所以本案例中用的是 nodejs 的 crypto 模块// 签名crypto.createSign('md5WithRSAEncryption');//验签crypto.createVerify('..._export const generatesign = (signstr) => { let sign = crypto.createsign('md5

VS2017使用scanf_s函数报错: (ucrtbased.dll)写入位置 0x00F6B000 时发生访问冲突。_vs2017写入位置时发生访问冲突-程序员宅基地

文章浏览阅读1.5w次,点赞46次,收藏59次。#include <stdio.h>#include <malloc.h>int main(){ char *str= (char *)malloc(20*sizeof(char)); scanf_s("%s", str); printf("%s\n",str);} 在使用VS2017时,应编译器要求需使用更加安全的..._vs2017写入位置时发生访问冲突

2048游戏的实现用C语言_2048游戏的实现用c语言studying one-程序员宅基地

文章浏览阅读118次。#include<stdlib.h>#include<stdio.h>#include<time.h>#define ROW 4#define LINE 4//这个数组为 全局数组--全局数组可以被该文件内任意函数调用//调用的前提--出现在任何函数之前int array_2048[ROW][LINE] = { 0 };//现在设定一个函数,功能是设置某个位置的随机值void position()//随机产生4或2{ int i..._2048游戏的实现用c语言studying one

毕业设计springboot宿舍管理系统-程序员宅基地

文章浏览阅读479次,点赞6次,收藏8次。1.1 研究背景近些年,随着中国经济发展,人民的生活质量逐渐提高,对网络的依赖性越来越高,通过网络处理的事务越来越多。随着宿舍管理的常态化,如果依然采用传统的管理方式,将会为工作人员带来庞大的工作量,这将是一个巨大考验,需要投入大量人力开展对宿舍管理等相关工作进行管理,单一且反复的操作容易出错且不易被察觉,工作人员对此风险并不能完全归避。利用现代信息技术,设计开发一款宿舍管理系统,能够极大的节省人力物力、提高工作效率、降低工作成本。1.2研究目的及意义。

【网络流24题----14】孤岛营救问题-程序员宅基地

文章浏览阅读94次。孤岛营救问题Time Limit:1 SecMemory Limit:128 MBDescription1944年,特种兵麦克接到国防部的命令。要求马上赶赴太平洋上的一个孤岛,营救被敌军俘虏的大兵瑞恩。瑞恩被关押在一个迷宫里,迷宫地形复杂,但幸好麦克得到了迷宫的地形图。迷宫的外形是一个长方形,其南北方向被划分为 N行,东西方向被划分为 M列,于是整个迷宫被划分为 N×M...

RDD 转化为 DataFrame_spark java rdd转dataframe-程序员宅基地

文章浏览阅读685次。DataFrame:读取和执行查询都会返回DataFrame,是一个由ROW 对象组成的RDD,附带包括每列数据类型的结构信息。ROW对象是支队基本数据类型的数组的封装。 ROW对象:表示DataFrame中的记录。本质是一个定长的字段数组。Spark将RDD转换成DataFrame的两种方式一、通过反射指定结构类型 通过反射的方式来推断RDD元素中的元数据。因为RDD本身一条数据本身是没有元数_spark java rdd转dataframe

随便推点

经不住逝水流年-程序员宅基地

文章浏览阅读69次。活着,为了什么?陈老师这样问我们。许久,我都没找到答案。整天沉醉与周公与网络的世界。一天又一天,早已忘却时间与烦恼。你说,举杯消愁。你说,明天再来。可我,明明习惯了自己的世界,为何心中总有些不安与惶恐。是体弱多病的爷爷奶奶,还是年少童真的小妹,亦或是整日奔劳在外的父母。那份期待,那份盼望,那份心安与放下。。。路,是自己选的,如何...

BUUCTF cmcc_simplerop_mo77.tup/501-程序员宅基地

文章浏览阅读871次。这道题打开ida又是那么一大堆一大堆的函数,也没有外部引用的段,所以就是静态链接把好多函数都链接进来了所以就和 BUU上另一道 inndy_rop 一样,直接用ROPgadget 去找rop链 from struct import pack # Padding goes here p = '' p += pack('<I', 0x0806e82a) # pop edx ..._mo77.tup/501

CMMI入门 - 心理准备-程序员宅基地

文章浏览阅读54次。市场需要CMMI的认证,我们现在要开始做CMMI 了。大概的过程,就在《CMMI 的认证流程、时间段、预备、费用》中有一些简短的介绍。从这个文章,大家可以知道一些步骤,制定一个预算。有人也提到过,在那篇文章里的费用可能太高了。我知道有很多单位可以用更少的费用,就成功通过评估,达到某一个CMMI的级别。这个在中国很普遍。但是我不希望大家这样做。短期、低成本通过认证应该是符合...

Bootstrap使用插件时jQuery.min.js文件的导入方法_如何导入bootstrap的css和js文件、jquery文件-程序员宅基地

文章浏览阅读1.9k次。这几天在使用bootstrap框架的插件时突然忘记了jQuery文件时怎么导入的,接下来就详细讲解以下导入过程。_如何导入bootstrap的css和js文件、jquery文件

Java实现文件上传和下载的方法详解_用java实现文件的上传下载-程序员宅基地

文章浏览阅读4.2k次,点赞2次,收藏26次。参考文章:http://blog.ncmem.com/wordpress/2023/09/27/java%e5%ae%9e%e7%8e%b0%e6%96%87%e4%bb%b6%e4%b8%8a%e4%bc%a0%e5%92%8c%e4%b8%8b%e8%bd%bd%e7%9a%84%e6%96%b9%e6%b3%95%e8%af%a6%e8%a7%a3/编写文件上传的方法, 通过MultipartFile类型的参数即可接收上传的文件, 方法形参的名称需要与页面的file域的name属性一致。_用java实现文件的上传下载

MySQL分区管理-程序员宅基地

文章浏览阅读95次。以下是我看MySQL官方文档的时候整理的笔记,仅作参考保留。RANGE,LIST分区管理1:为未分区表创建分区ALTER TABLE trb3 PARTITION BY KEY(id) PARTITIONS 2;2:删除某个分区的数据ALTER TABLE tr DROP PARTITION p2;3:为分区表添加一个分区ALTE..._mysql分区权限

推荐文章

热门文章

相关标签