mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离

摘要:这篇MySQL栏目下的“详解如何利用amoeba(变形虫)实现mysql数据库读写分离”,介绍的技术点是“MySQL数据库、数据库读写分离、amoeba、MySQL、读写分离、数据库”,希望对大家开发技术学习和问题解决有帮助。

关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_proxy实现的。由于proxy是基于lua脚本语言实现的,所以网上不少网友表示proxy效率不高,也不稳定,不建议在生产环境使用;

amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk;

前期准备工作:

1.两个数据库,一主一从,主从同步;

master: 172.22.10.237:3306 ;主库负责写入操作;

slave: 10.4.66.58:3306 ; 从库负责读取操作;

amoeba: 172.22.10.237:8066 ; 我把amoeba安装到了主库所在的服务器,当然,你也可以安装到第三台服务器上;

所有服务器操作系统均为centos7;

2.在amoeba所在的服务器上配置安装jdk;

我安装的是jdk1.8;

路径是: JAVA_HOME=/usr/local/java/jdk1.8.0_131

以上务必自己点搭建、配置好,主从正常工作,添加jdk环境变量: /etc/profile ;

安装amoeba的方式有很多,这里就不在安装上面费口舌了,我下载了amoeba-mysql-3.0.5-RC-distribution的安装包,直接解压即可使用;

解压目录: /usr/local/amoeba/

f60d38ec9ed84735576aa99d67404bfa.png

很明显 conf里是配置文件,bin里是启动程序;

刚才说到 amoeba的功能可不止读写分离,但如果只用读写分离功能的话只需要配置这几个个文件即可: conf/dbServers.xml conf/amoeba.xml 和 bin/launcher ;

conf/dbServers.xml :

`3306

#设置Amoeba要连接的mysql数据库的端口,默认是3306

testdb

#设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver

test1

#设置amoeba连接后端数据库服务器的账号和密码,因此需要在所有后端数据库上创建该用户,并授权amoeba服务器可连接

111111

500  #最大连接数,默认500

500    #最大空闲连接数

1    #最新空闲连接数

  #设置一个后端可写的数据库,这里定义为writedb,这个名字可以任意命名,后面还会用到

172.22.10.237 #设置后端可写dbserver的ip

  #设置后端可读数据库

10.4.66.58

  #设置定义一个虚拟的dbserver,实际上相当于一个dbserver组,这里将可读的数据库ip统一放到一个组中,将这个组的名字命名为myslave

1  #选择调度算法,1表示复制均衡,2表示权重,3表示HA, 这里选择1

slave01  #myslave组成员`

conf/amoeba.xml :

8066

#设置amoeba监听的端口,默认是8066

127.0.0.1

#配置监听的接口,如果不设置,默认监听所以的IP

# 提供客户端连接amoeba时需要使用这里设定的账号 (这里的账号密码和amoeba连接后端数据库服务器的密码无关)

root

123456

myslave

#设置amoeba默认的池,这里设置为writedb

master

#这两个选项默认是注销掉的,需要取消注释,这里用来指定前面定义好的俩个读写池

slave01

bin/launcher :

#启动脚本,需要配置jdk环境变量;

#在注释后的第一行添加:

JAVA_HOME=/usr/local/java/jdk1.8.0_131

launcher 是启动脚本,如果不配置JAVA_HOME的话,即便你在/etc/profile中配置了环境变量也可能会报错:没有配置jdk环境变量;

还有一个配置文件: jvm.properties

#占用内存配置文件

# -Xss参数有最小值要求,必须大于228才能启动JVM

#修改:

JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"

有经验的运维都知道,凡是和jdk沾上边的,基本都会和内存的调优有关系,amoeba也不例外;

现在可以启动了:

f3b4837e1c9da0fcc6e7525e2dd235b6.png

启动后就可以看到本机的8066端口:

311633b0563e6dcae5e3a50684b39d60.png

这时,你只需要通过本机ip的8066端口和你配置文件中设置的账号密码来连接数据库就行了,写入的数据都会到master里,读取的数据都会从slave中读取;

测试:

关闭master数据库,依然可以读取:执行 select 查看命令;

或者

关闭slave数据库,依然可以写入: 执行 update、inster命令;

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

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

相关文章

bind blz mysql_MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典...

MySQ DBAL重点剖析课程 企业级MySQL系统安全与DBA运维日常事务管理 运维DBA必备宝典本资源由JAD资源网收集整理丨www.jiuandun.com资源简介MySQ DBAL重点剖析课程,课程的重点在于企业级MySQL系统安全实战,和MySQL DBA运维的日常事务管理,也就…

怎样解决外键约束_《设计心理学》|找寻“设计师”所遇的真正问题与解决之道...

《设计心理学1》作者[美] 唐纳德A诺曼 。此书始终强调以人为本的设计哲学,将认知心理学和行为学等多学科的方法导入到设计之中。不仅着重于反思设计过程中出现的问题给用户带来的困扰,更着重于解决问题,用这些基本原则帮助设计师找到真正的问…

java dumpheap_java程序性能分析之thread dump和heap dump

一.dump基本概念在故障定位(尤其是out of memory)和性能分析的时候,经常会用到一些文件来帮助我们排除代码问题。这些文件记录了JVM运行期间的内存占用、线程执行等情况,这就是我们常说的dump文件。常用的有heap dump和thread dump(也叫javacore&#xf…

json string 格式_GO小知识之如何做JSON美化

经常有些小知识想分享出来,但又构不成体系,一直觉得文章形式发出不太合适。准备以 "知乎想法" 分享出来,但发现代码展示不太友好。还是发文章吧,该类分享将以 "小知识" 为前缀。后端http接口测试常需要打印 J…

java 对象引用 弱引用吗_谈谈Java对象的强引用,软引用,弱引用,虚引用分别是什么...

整体结构java提供了4中引用类型,在垃圾回收的时候,都有自己的各自特点。为什么要区分这么多引用呢,其实这和Java的GC有密切关系。强引用(默认支持模式)把一个对象赋给一个引用变量,这个引用变量就是一个强引用。强引用是我们最常见…

python图像几何变换_Python 图像处理 OpenCV (5):图像的几何变换

前文传送门: 图像缩放 图像缩放只是调整图像的大小,为此, OpenCV 为我们提供了一个函数 cv.resize() ,原函数如下: resize(src, dsize, dstNone, fxNone, fyNone, interpolationNone) src 表示的是输入图像&#xff0c…

linux中python编辑器_Linux下9款最好的Markdown编辑器

首先, Markdown是使用Perl编写的,简单、轻量级的工具,允许用户编写纯文本格式和高效的html或者XHTML。它实际上是一个易于阅读,易于编写纯文本的语言和文本到HTML的转换的软件工具。 希望你有一点了解,Mrakdown是什么&…

java监听数据库操作_第十六篇——JDBC操作数据库之监听器

JavaWeb应用中,很多的地方都和session有关。因此session相关的事件监听器,在日常工作中非常有用。有时候我们需要统计当前在线的人数和访问人数总数,此时就可以使用监听器技术来很简单的实现这种功能。注意:session并不是浏览器关…

加装的硬盘进入后点不了文件夹_在外接移动硬盘上制作win to go教程

有很多使用Mac Book的小伙伴免不了要使用一些Windows下才有的软件(强行暗示Solidworks),这类的大型软件在虚拟机当中运行稳定性又不太好,所以双系统便成了许多人的选择,但boot camp让本就拮据的机身内存雪上加霜,由此win to go便成…

python爬虫动态解析js_Python爬虫实战入门五:获取JS动态内容—爬取今日头条

F12打开网页调试工具:选择“网络”选项卡后,发现有很多响应,我们筛选一下,只看XHR响应。(XHR是Ajax中的概念,表示XMLHTTPrequest)然后我们发现少了很多链接,随便点开一个看看&#x…

openjdk怎么执行java命令_Ubuntu 18.04 上使用 OpenJDK 安装并运行 Tomcat

在Linux上安装与卸载JDK和JRE,两种常用方法:一、通过 apt-get 命令在线进行安装与卸载(会自动配置好环境变量)二、通过下载并解压 .tar.gz 包进行手动安装与手动卸载(需要手动配置环境变量)注:javac命令是JDK中的,java命令是JRE中…

vscode卸载background插件_萌妹程序员鼓励师24小时在线陪你写代码,给我吹爆这个VSCode插件...

开源最前线(ID:OpenSourceTop) 猿妹综合整理项目地址:https://github.com/SaekiRaku/vscode-rainbow-fart最近,Github上有一个名为Rainbow Fart的VSCode 插件被玩坏了,有了这个插件,程序员鼓励师这个物种就要灭绝了。为…

java 获取td_[Java教程]jQuery获取table表中的td标签

[Java教程]jQuery获取table表中的td标签0 2017-07-28 00:00:08首先我来介绍一下我遇到的问题1.当有一个table表包含了标签,标签,大致可以认为是这样的:scene.ID scene.SceneName scene.QRUrl scene.LocalUrl if (!string.IsNullOrWhiteSpace(…

引用另一模板的宏_生信人值得拥有的编程模板Shell

前言“工欲善其事必先利其器”,生信工程师每天写代码、搭流程,而且要使用至少三门编程语言,没有个好集成开发环境(IDE,Integrated Development Environment)那怎么行?本人使用过vim, editplus, ultraedit, notepad, su…

avlib java_fatal error: libavutil/avconfig.h: No such file...

根据这位仁兄的记录,可以在android程序里调用ffmpeg的avcodec_version()函数;下载了最新版的ffmpeg源码(2.4.1),在cygwin里用NDK编译时可能会报错,报错如下;your_nameAP-CHN-LP140129 /cygdrive/c/Workspace_my/TestAp…

python 绘制分布直方图_统计学中常见的4种抽样分布及其分布曲线(Python绘制)...

现代统计学奠基人之一、英国统计学家费希尔(Fisher)曾把抽样分布、参书估计和假设检验看作统计推断的三大中心内容。统计学中,需要研究统计量的性质,并评价一个统计推断的优良性,而这些取决于其抽样分布的性质,所以,抽…

php 文件 不更新,php页面不刷新更新数据

php页面不刷新更新数据php页面不刷新更新数据实现起来很简单,我们可以使用前端的ajax技术。ajax作用:ajax技术的目的是让javascript发送http请求,与后台通信,获取数据和信息。实现前后端分离。ajax技术的原理是实例化xmlhttp对象&…

master节点部署pod_小伙!Kubernetes 部署如此简单,你看完全明白了

将项目迁移到k8s平台是怎样实现的?制作镜像控制器管理PodPod数据持久化暴露应用对外发布应用日志/监控1、制作镜像分为三步第一基础镜像,是基于哪个操作系统,比如Centos7或者其他的第二步中间件镜像,比如服务镜像,跑的像nginx服务…

c++从入门到精通_资料下载:从入门到精通,手把手教你学DSP

学习一个东西首先是了解它,比如DSP到底是什么?用在什么地方?怎么用?和单片机特点有那些相同与不同?开发需要注意什么?想了解清楚这些问题自然就清楚比较清楚的认识DSP。DSP,因为它是用来做数据处…

php mysql存中文,PHP+MySQL存储数据常见中文乱码问题小结

PHPMySQL存储数据常见中文乱码问题小结本文实例总结了PHPMySQL存储数据常见中文乱码问题。分享给大家供大家参考,具体如下:PHPMySQL出现中文乱码的常见原因:1. MYSQL数据库的编码是utf8,与PHP网页的编码格式不一致,就会造成MYSQL中的中文乱码。2. 使用MY…