amoeba mysql读写分离_Mysql 实现读写分离的详细教程(amoeba)

Mysql 实现读写分离的详细教程(amoeba)

发布时间:2018-08-17作者:laosun阅读(2220)

0f9e8264915948f7a1174b4a48c40c63.gif

继上篇文章,mysql实现主从配置之后的读写分离实现方式,文章地址。

amoeba是盛大架构师陈思儒独立完成,除此之外还有很多中间件,比如阿里也出了一款mycat。如果博主时间充裕的话,我会一一实现他们,并且将文章分享出来。

言归正传

博主的主从配置情况如下:

Mac电脑: 192.168.1.2    (master)

win7电脑:192.168.1.3    (slave)

具体情况请跳转到对应的文章页进行查看,这里就不做过多的解释了。

下载完成后,我们解压到D盘根目录。如下图所示:

3af6f7a810fa7effd6be185e2dbb35f2.png

我们用到只有conf目录,修改配置一下即可:

d1afa664e7eb624833a54228f1e31950.png

我们只需要修改一下这两个文件即可实现简单的读写分离操作。

至于里边其他文件是什么意思,博主从网上找了一些说明,贴在下边:1:Amoeba主配置文件($AMOEBA_HOME/conf/amoeba.xml),用来配置Amoeba服务的基本参数,如Amoeba主机地址、端口、认证方式、用于连接的用户名、密码、线程数、超时时间、其他配置文件的位置等。

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

3:切分规则配置文件($AMOEBA_HOME/conf/rule.xml),用来配置切分规则。

4:数据库函数配置文件($AMOEBA_HOME/conf/functionMap.xml),用来配置数据库函数的处理方法,Amoeba将使用该配置文件中的方法解析数据库函数。

5:切分规则函数配置文件($AMOEBA_HOME/conf/ruleFunctionMap.xml),用来配置切分规则中使用的用户自定义函数的处理方法。

6:访问规则配置文件($AMOEBA_HOME/conf/access_list.conf),用来授权或禁止某些服务器IP访问Amoeba。

7:日志规格配置文件($AMOEBA_HOME/conf/log4j.xml),用来配置Amoeba输出日志的级别和方式。

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

我们打开dbServers.xml 来配置后端mysql服务器的连接等配置

设置abstractServer,这里边定义了要mysql服务器的用户名密码等信息

064da595fe16f8731dec59e397c4e07c.png

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

我们看到文件下边已经自动给添加了server1和server2,我们把它修改了即可(如果需要配置多个数据库,直接复制dbServer节点即可,如果端口号或者分配的用户名密码不一样,就把abstractServer节点里的3306或者其他配置信息拿到子节点进行配置即可)。

c7e19e9cba5cb6e7435e0b66cb9ec457.png

配置数据库连接池

818185a18ea3767e7a6e47ffcd740d1d.png

下边我们打开amoeba.xml 来配置监听端口等信息

86e4fc88d025c12e5b7692044e26e716.png

读写分离的配置:

b57c5366c0402cc597126760f3aea460.png

好了,截至到目前为止,简单的读写分离已经配置完毕,下边我们来启动进行测试。

==================================华丽的分割线==================================

1:配置数据库帐号, 到底是什么数据库帐号呢: 是amoeba链接你的master数据库和slave数据库的帐号,上边我也说过了,尽量不要使用root。

GRANT ALL PRIVILEGES ON *.* TO 'am_root'@'192.168.1.3' IDENTIFIED BY 'amd_root' WITH GRANT OPTION;

flush privileges;

在两个数据库分别执行上边的两行语句。

帐号:am_root,密码:am_root 是我们之前在dbServer.xml中配置的。 IP: 是你的amoeba所在的机器ip (这里我怕有人迷糊,我解释一下,我的amoeba和slave服务在同一台机器,所以没关系,咱们正常走,博主就两台电脑,想安装个虚拟机来着,最后放弃了。)

这里创建用户我就不截图了,很简单的,登录mysql -u root -proot ,进去执行这两句就行(记得修改里边的你的电脑ip或者你自己设置的帐号密码)。

2:启动amoeba

4d1d9416dfc9e6eeebff552770681616.png

启动成功了。

博主的主从配置情况如下:

Mac电脑: 192.168.1.2    (master)

win7电脑:192.168.1.3    (slave)

amoba在 192.168.1.2  win7 机器上

我们现在在任意一台电脑上进行测试,为了防止你们看着迷糊,我在mac上测试吧。

3bc937c07e48984134bc365dca7c80cd.png

上边我们的d_sunjs_test数据库中有个表为 t_users, 里边有一条数据。

那么我们的slave从服务器中应该也有相同的一条数据。我们也去看一下。

bad0f1acdba18c2667e57ff3d36cb940.png

另外查看下主从同步是否正常

5887202360470731255ff6ccd2f7f7b0.png

从上图中可以看出,也正常,没毛病。

那么我们现在在mac上系统上使用amoeba登录mysql

c4e50a0bef0eb9f5b3963742309bcd97.png

登录成功了,我们往t_users表中插入一条数据,并且查看结果。

a2ef808a8889fd5567a04d8558d0cb38.png

插入没有问题,我们查看我们的slave服务器,看是否主从同步成功:

18b480fd50c6fc52283e812caae331bd.png

可以看出同步成功了,那么我们如何才能知道读写是分离的呢,别着急,我们可以在win7 也就是slave 中插入一条数据,看是否能查出来。

1fa33160a0b71ce77cdec4d241e8bd43.png

我们现在去查看一下看是否能查询出来。

4492f9d3c6614634d429e73efa4119c0.png

看到了吧,这就证明amoeba查询走的是slave库, 我们可以看下我们的master库中是否也有这条数据。

15341018e2adb27851022c69bd9e1986.png

我想到这里就不用我再继续解释了。 因为最简单的读写分离已经完成了。

我们程序中使用就配置 amoeba 的连接地址就可以了。

ip: 192.168.1.3

端口:8066

帐号:a_root

密码:a_root_123

指令中登录就使用: mysql -h 192.168.1.3 -u a_root -pa_root_123 -P8066

af499b9437efec8e1b25c2bb396e60d7.png

0 +1

版权声明

分享到:

发表评论

请文明留言

发表

共 0 条评论

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/368383.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

z-index的学习整理转述

前言:这是笔者第一次写博客,主要是学习之后自己的理解。如果有错误或者疑问的地方,请大家指正,我会持续更新! z-index属性描述元素的堆叠顺序(层级),意思是A元素可以覆盖B元素&…

十道海量数据处理面试题与十个方法大总结

1. 给定a、b两个文件,各存放50亿个url,每个url各占64字节,内存限制是4G,让你找出a、b文件共同的url? 方案1:可以估计每个文件安的大小为50G64320G,远远大于内存限制的4G。所以不可能将其完全加载…

Spring集成文件轮询和测试

我最近实施了一个小项目,在该项目中,我们必须轮询文件夹中的新文件,然后在文件内容上触发服务流。 Spring Integration非常适合此要求,因为它带有一个通道适配器 ,该适配器可以扫描文件夹中的新文件,然后通…

Spark参数配置总结

转载于:https://www.cnblogs.com/lz3018/p/8128017.html

eclipse mysql生成实体类_Eclipse实现数据库反向生成实体类(pojo)-------(插件安装和实现步骤的说明)...

一、插件安装1.下载插件:http://jaist.dl.sourceforge.net/sourceforge/jboss/HibernateTools-3.2.4.Beta1-R200810311334.zip2.解压压缩包分别将其中的features和plugins放到Eclipse安装目录下对应的这2个文件里,重启Eclipse使其生效3.随便建个project&…

一些小技巧-重构

用box-shadow制造浮雕效果用box-shadow做简单的背景修饰长页面背景图不够用...... 01 用box-shadow制造浮雕效果 demo示例: src"http://demo.zhangruojun.com/static/demo/demo001/" frameborder"0" width"414" height"650&qu…

VM虚拟机显示不能铺满问题

关于使用虚拟机(VMware)时桌面显示不能铺满整个窗口时的设置操作: 步骤:虚拟机菜单下的:编辑-->首选项-->显示(如下图) 可以根据自己需求设置全屏下面的三个选项,确定后如果不…

Spring Data MongoDB中的审核实体

Spring Data MongoDB 1.2.0静默引入了新功能:支持基本审核 。 因为您不会在本文的官方参考中找到太多有关它的信息,所以我将展示它带来的好处,如何配置Spring以进行审计以及如何对文档进行注释以使其可审计。 审核使您可以声明性地告诉Spring…

Weex系列-项目工程

转载于:https://www.cnblogs.com/hacjy/p/8136460.html

MySQL索引效率对比_mysql下普通索引和唯一索引的效率对比

今天在我的虚拟机中布置了环境,测试抓图如下:抓的这几个都是第一次执行的,刷了几次后,取平均值,效率大致相同,而且如果在一个列上同时建唯一索引和普通索引的话,mysql会自动选择唯一索引。谷歌一…

css中的三种基本定位机制

css中的三种基本定位机制 a.普通文档流 b.定位:相对定位 绝对定位 固定定位 c.浮动 1.普通流中,元素位置由文档顺序和元素性质决定,块级元素从上到下依次排列,框之间的垂直距离由框的垂直margin值计算得到,行内元素在…

Mac再建管理员帐户

在Mac上添加用户没有成功, 把原来的管理员的用户群组修改后, 账户类型成为普通用户. 百度如何重新添加管理员: Mac上修改用户名后,无法用管理员账号和密码登录. 按照超过方法下去, 出现问题: 1, Command S之后, 命令行谈话一线转到登录. 重复几次后居然登录后进入命…

spring以及json,fastjson和jackson

(一) RestController 以及 RequestBody spring的这两个注解都需要使用对应的 message-converters 实现 pojo到字符串的转换, 需要配置实现了 GenericHttpMessageConverter 接口的实现类GenericHttpMessageConverter 父接口为HttpMessageConve…

JPA 2 | 动态查询与命名查询

JPA有自己的查询语言,称为JPQL。 JPQL与SQL非常相似,主要区别在于JPQL与应用程序中定义的实体一起使用,而SQL与数据库中定义的表和列名称一起使用。 在定义将对定义的Entity类执行CRUD操作的JPA查询时,JPA为我们提供了多种选择。 …

turtle 函数 方法_学python第十一节:turtle深入 了解

学python第十一节:深入分析turtleTurtle是一个直观有趣的图形绘制函数。这节课对turtle的以下几点进行补充:在蟒蛇绘制代码中提到过import 库引用保留字的函数,是补充python程序功能的方式,使用2种编写格式: 第一种引用…

intellij idea中解决java.lang.VerifyError: Expecting a stackmap frame at branch target的方法

【实习第三周,被生活逼成了全栈hhhh从开发写到测试】 报错如下: 经过查找各类资料博客,针对不同的情况有不同的解决办法:1. java源代码是用jdk1.6下开发的,后来环境上替换安装了jdk1.7编译运行。运行报错。我的错误不属…

ArrayList使用内存映射文件

介绍 内存中的计算由于负担得起的硬件而开始兴起,大多数数据保留在RAM中以满足延迟和吞吐量的目标,但是将数据保留在RAM中会增加垃圾收集器的开销,尤其是在您不预先分配的情况下。 因此,有效地我们需要一种无垃圾/无垃圾的方法来避…

JVM的内存区域划分(转载)

原文链接: http://www.cnblogs.com/dolphin0520/p/3613043.html JVM的内存区域划分 学过C语言的朋友都知道C编译器在划分内存区域的时候经常将管理的区域划分为数据段和代码段,数据段包括堆、栈以及静态数据区。那么在Java语言当中,内存又是如…

css 如何让背景图片拉伸填充避免重复显示

如何让背景图片拉伸填充,这个问题听起来似乎很简单。但是很遗憾的告诉大家。不是我们想的那么简单。 比如一个容器(body,div,span)中设定一个背景。这个背景的长宽值在css2.1之前是不能被修改的。 所以实际的结果是只能重复显示,所…

c语言以空格分割字符串_C语言strtok()函数:用指定的分隔符分解字符串

函数名: strtok头文件:函数原型: char *strtok(char *str1, const char *str2);功能: 用指定的分隔符分解字符串参数: char *str1 为要分解的字符串const char *str2 为分隔符字符串返回值: 返回下一个分割后的字符串指针&am…