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,一经查实,立即删除!

相关文章

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

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

Weex系列-项目工程

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

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

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

spring以及json,fastjson和jackson

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

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语言当中,内存又是如…

微抖动,繁忙的等待和绑定CPU

性能分析新机器 当我在新机器上工作时,我想了解它的局限性。 在这篇文章中,我将研究机器的抖动以及忙于等待本周末构建的新PC的影响。 机器的规格很有趣,但不是发布目的。 永远不要少: i7-3970X六核,运行频率为4.5 GH…

Python快速搭建HTTP服务器

<wiz_tmp_tag id"wiz-table-range-border" contenteditable"false" style"display: none;"> 来自为知笔记(Wiz)转载于:https://www.cnblogs.com/linux-wang/p/8142848.html

再见了古诺。 你好Drools工作台。

Drools 6.0发生了许多变化。 随着功能和功能的变化&#xff0c;我们对Guvnor github存储库进行了重组&#xff0c;以更好地反映我们的新架构。 历史上&#xff0c;Guvnor一直是Drools的Web应用程序。 它由Drools专用的编辑器&#xff0c;后端存储库和简化的资产管理系统组成。 …

接口聚合

1.设置pc ip 192.168.1.1 192.168.1.2 2.设置端口聚合&#xff08;两个交换机设置相同&#xff09; Switch(config)#inter range f 0/1-3 Switch(config-if-range)#channel-g 1 mode act Switch(config-if-range)#sw mode trunk Switch(config-if-range)#sw trunk allow vlan …

JAVA 框架-Spring

一.准备工作 1.下载spring工具插件&#xff0c;在STS官网找到与eclipse对应版本的下载链接地址&#xff0c;复制该地址打开eclipse里的Help菜单&#xff0c;选择Install new Software选项&#xff0c;将地址粘贴到work with输入框中&#xff0c;点击add按钮&#xff0c;此时Loc…

HTML中三种定位relative,absolute,fixed后,盒子的百分比宽度及位置易错点

1 . 相对定位relative:顾名思义,相对定位是相对于自己的位置来进行偏移,如下图: 以盒子中心为基准,为每条边的正方向,例: 向右移动20px :  代码为left:20px;或者right:-20px; 向下移动20px : 代码为top:20px;或者bottom:-20px; 2 . 绝对定位:absolute 以其第一个定位的…

JMeter定制功能实现

JMeter提供了可在采样器中使用的功能。 在编写复杂的测试计划时&#xff0c;您会感到JMeter缺少某些方法。 您使用Beanshell脚本定义自己的自定义方法。 JMeter调用Beanshell解释器来运行脚本。 只要您不产生高负载&#xff08;大量线程&#xff09;&#xff0c;此方法就可以正…