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/
很明显 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也不例外;
现在可以启动了:
启动后就可以看到本机的8066端口:
这时,你只需要通过本机ip的8066端口和你配置文件中设置的账号密码来连接数据库就行了,写入的数据都会到master里,读取的数据都会从slave中读取;
测试:
关闭master数据库,依然可以读取:执行 select 查看命令;
或者
关闭slave数据库,依然可以写入: 执行 update、inster命令;
mysql数据库字段变形_详解如何利用amoeba(变形虫)实现mysql数据库读写分离相关推荐
- python从random生成列表_详解Python利用random生成一个列表内的随机数
详解Python利用random生成一个列表内的随机数 首先,需要导入random模块: import random 随机取1-33之间的1个随机数,可能重复: random.choice(range ...
- mysql通配符escape使用_详解MySQL like如何查询包含'%'的字段(ESCAPE用法)
在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...
- mysql通配符escape使用_详解MySQL like如何查询包含#39;%#39;的字段(ESCAPE用法)-MySQL教程-Web开发者网...
在SQl like语句中,比如 SELECT * FROM user WHERE username LIKE '%luchi%' SELECT * FROM user WHERE username L ...
- mysql数据库的函数_详解数据库_MySQL: mysql函数
一.内置函数 1.数学函数 rand() round(num) ceil(num) floor(num) 随机 四舍五入 向上取整 向下取整 2.字符串函数 length() 字节长度 char_le ...
- java获取mysql数据定时执行_详解SpringBoot 创建定时任务(配合数据库动态执行)...
序言:创建定时任务非常简单,主要有两种创建方式:一.基于注解(@Scheduled) 二.基于接口(SchedulingConfigurer). 前者相信大家都很熟悉,但是实际使用中我们往往想从数据库 ...
- mysql 修改时间段内_详解mysql数据库MyISAM存储引擎如何转为Innodb及其中的注意点...
概述 mysql数据库存储引擎为MyISAM的时候,在大访问量的情况下数据表有可能会出现被锁的情况,这就会导致用户连接网站时超时而返回502,此时就需要MySQL数据库MyISAM存储引擎转为Inno ...
- mysql 的dcl语句_详解MySQL第三篇—DCL语句
DCL(Data Control Language)语句:数据控制语句,用于控制不同数据段直接的许可和访问级别的语句.这些语句定义了数据库.表.字段.用户的访问权限和安全级别.主要的语句关键字包括 g ...
- qt4.7 mysql 6.3 版本_详解Qt 4.7编译和访问Mysql驱动
Qt4.7编译和访问Mysql驱动是本文要介绍的内容,不多说,我们来看内容.今天摸索了一上午,终于用qt连上mysql了 1.安装一个mysql5.0以上版本*** 要求:(1)安装路径不要有空格和点 ...
- mysql内置变量_详解MySQL注入利用的变量
MySQL注入数据库时,我们可以利用内置的变量来得到更多的mysql信息,下面就让我们一起来了解MySQL注入利用的变量. 当我们注射mysql库的输入点的时候,可以通过version()/user( ...
最新文章
- div自己移除自己/移除div下面的所有子元素
- [基础题]2.(*)利用接口做参数,写个计算器,能完成加减乘除运算。
- 145. Binary Tree Postorder Traversal 二叉树的后序遍历
- list agg cause ORA-06502 PL/SQL: numeric or value error
- flashcom网址收集
- l洛谷P4779 【模板】单源最短路径(标准版)(dijkstra)
- Java SE 7 Update 25 –发行说明进行了解释。
- 天地一体化信息网络发展与拟态技术应用构想
- Java基础 系统注解 @Override @Deprecated @SuppressWarnings 使用的方法及原因
- php 反转一个整数,LeetCode PHP 整数反转
- Android 解析JSON
- SpringBoot之AOP之基本使用
- Docker安装MongoDB管理工具nosqlclient
- LeetCode 67. Add Binary
- 爬取美女图片信息并保存(无图系列)
- C语言程序设计孙家啸第一版,广东(年4月自考各专业课程使用教材.doc
- 深度学习之卷积神经网络中常用模型评估指标(混淆矩阵,精确率,召回率,特异度计算方法)——python代码
- 蚂蚁金服宫孙:guava探究系列之优雅校验数据
- C++中“map和set”相关内容整理分析
- JAVA网络编程、正则表达式
热门文章
- java response.write_@ResponseBody与response.getWriter .write()区别
- rpgmvp图片怎么看_拼多多商城图片和视频下载不了怎么办,看这里。。。。
- c++对数函数_DS-K1T105M-C 海康威视考勤门禁一体机 支持刷卡+密码 DS-K1T105E/M/C-C
- mysql 删除另一个表中的_mysql – 在一个查询SQL中删除两个表中的记录
- win10子系统ubuntu图形界面_win10系统中安装ubuntu子系统及图形界面
- python messagebox弹窗退出_python 弹窗提示警告框MessageBox的实例
- python目标检测答案_入门指南:用Python实现实时目标检测(内附代码)
- android 3.0单元测试,Android Studio 3.0 gradle 3.0.0-beta2打破了Kotlin单元测试覆盖率?
- java面向对象结课总结_java面向对象课程总结
- 【LeetCode笔记】5.最长回文子串(Java、动态规划、字符串)