amoeba

MySQL基于Amoeba实现读写分离

瘦欲@ 提交于 2019-12-01 12:31:12
在实际的生活环境中,如果对数据库的读和写都在同一个数据库服务中操作,无论是在安全性,高可用还是高并发等各个方面都不能完全满足实际需求的,因此一般来说都是通过主从复制的方式来同步数据,再通过读写分离来提升数据的高并发负载能力这样的方案来进行部署。 读写分离就是只在主服务器上写,只在从服务器上读,基本的原理是让主数据库处理事务性查询,而从数据库处理select查询,数据库复制被用来把事务性查询导致的改变更新同步到集群中的从数据库。 目前较为常见的MySQL读写分离方案有两种: 1.基于程序代码内部实现: 根据select,insert进行路由分类,是目前生产环境应用最广泛的,优点是性能好,因为在代码中实现,不需要增加额外的设备作为硬件开支,缺点是需要开发人员来实现,运维人员无从下手。 2.基于中间代码层实现: 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库,代表性程序: ( 1 ) mysql-proxy 为 mysql 开发早期开源项目,通过其自带的 lua 脚本进行 SQL 判断,虽然是 mysql 的官方产品,但是 mysql 官方不建议将其应用到生产环境。 ( 2 ) Amoeba (变形虫)由陈思儒开发,曾就职与阿里巴巴,该程序由 java 语言进行开发,阿里巴巴将其应用于生成环境,它不支持事物和存储过程。 通过程序代码实现 mysql

Amoeba介绍及原理

丶灬走出姿态 提交于 2019-12-01 12:19:32
Amoeba的中文意思是变型虫 Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)。 Amoeba相当于一个SQL请求的路由器, 目的是为负载均衡、读写分离、高可用性提供机制,而不是完全实现它们。用户需要结合使用MySQL的 Replication等机制来实现副本同步等功能。amoeba对底层数据库连接管理和路由实现也采用了可插拨的机制,第三方可以开发更高级的策略类来 替代作者的实现。这个程序总体上比较符合KISS原则的思想。 主要解决: • 降低 数据切分带来的复杂多数据库结构 • 提供切分规则并降低 数据切分规则 给应用带来的影响 • 降低db 与客户端的连接数 • 读写分离 不足之处: a)、目前还不支持事务 b)、暂时不支持存储过程(近期会支持) c)、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合) d)、暂时不支持分库分表

MySQL基于Amoeba实现读写分离

|▌冷眼眸甩不掉的悲伤 提交于 2019-12-01 10:17:13
读写分离应用分析: 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作。解决方法: 配置多台数据库服务器以实现主从复制+读写分离。 1、基于程序代码内部实现 在代码中根据select、 insert 进行路由分类,这种方法目前生产环境中应用最广泛。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员能来实现,运维人员无从下手。 2、基于中间代理层实现 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库。 常见的代理服务器: MySQL-Proxy Amoeba 实验环境: amoeba: 192.168.200.114 master:192.168.200.111 slave1:192.168.200.112 slave2:192.168.200.113 client:192.168.200.123 前提是主从服务器支持主从复制 配置amoeba服务器: 1.安装amoeba软件 准备好jdk-6u14-linux-x64.bin文件 2.给与该文件执行权限 chmod +x jdk-6u14-linux-x64.bin 3.执行该文件 ./jdk-6u14-linux-x64.bin 执行后会进入阅读模式,一直按回车,提示是否安装是输入yes 4.将文件移动 mv jdk1.6.0_14/

mysql主从备份案例—读写分离(异步主从)

徘徊边缘 提交于 2019-12-01 10:07:18
主备配置 主:MySQL 192.168.200.115 从:MySQL 192.168.200.116 从:MySQL 192.168.200.113 主: yum -y install ntp cp -p /etc/ntp.conf /etc/ntp.conf/origin vim /etc/ntp.conf-------------------------- server 127.127.1.0 fudge 127.127.1.0 startum 8------------------- /etc/init.d/ntpd start chkconfig ntpd on 从:yum -y install ntpdate ntpdate 192.168.200.115 ------------------------------------------------------------------------------------------------------------------ 主: vim /etc/my.cnf--------------------------- server-id = 1 log-bin=mysql-bin log-slave-updates=true------------------------------- 重启 /etc/init

mysql读写分离

只愿长相守 提交于 2019-12-01 10:03:29
搭建一个主从复制服务器:192.168.200.111(master) 192.168.200.112 (slave1)192.168.200.113(slave2) AMOEBA服务器:192.168.200.114 上传jdk-6u14-linux-x64.bin包 [root@localhost ~]# chmod +x jdk-6u14-linux-x64.bin [root@localhost ~]# ./jdk-6u14-linux-x64.bin [root@localhost ~]# mv jdk1.6.0_14/ /usr/local/java [root@localhost ~]# vim /etc/profile 添加五行: export JAVA_HOME=/usr/local/java export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin export AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin [root@localhost ~]# source /etc/profile [root

mysql中间件分享(Mysql-prxoy,Atlas,DBProxy,Amoeba,cobar,TDDL)

非 Y 不嫁゛ 提交于 2019-12-01 07:40:49
hello 各位小伙伴大家好,我是小栈君,这期我们分享关于mysql中间件的研究,也就是数据层的读写分离和负载均衡,希望能够在实际的应用中能够帮助到各位小伙伴。 下期我们将继续分享go语言的系列讲解,以及以后的生活中我们也将会分享系列课程包括大数据、人工智能、区块链等等,希望大家能够多多学习和分享给身边的小伙伴,我们一起进步和成长。 mysql-proxy MySQL Proxy就是这么一个中间层代理,简单的说,MySQL Proxy就是一个连接池,负责将前台应用的连接请求转发给后台的数据库,并且通过使用lua脚本,可以实现复杂的连接控制和过滤。 从而实现读写分离和负载平衡。对于应用来说,MySQL Proxy是完全透明MySQL Proxy更强大的一项功能是实现“读写分离”,基本原理是让主数据库处理事务性查询。 它的执行流程如图所示: 让从库处理SELECT查询。数据库复制被用来把事务性查询导致的变更同步到集群中的从库。 mysql-proxy是官方提供的mysql中间件产品可以实现负载平衡,读写分离,failover等,但其不支持大数据量的分库分表且性能较差。 官网: https://downloads.mysql.com/archives/proxy/ 下面介绍几款能代替其的mysql开源中间件产品,Atlas,cobar,tddl,让我们看看它们各自有些什么优点和新特性吧。

MySQL 数据库分库分片梳理解析

时光毁灭记忆、已成空白 提交于 2019-12-01 03:34:25
数据库分库分表Sharding技术 1、基本思想 Sharding的基本思想就要把一个数据库切分成多个部分放到不同的数据库(server)上,从而缓解单一数据库的性能问题。不太严格的讲,对于海量数据的数据库,如果是因为表多而数据多,这时候适合使用垂直切分,即把关系紧密(比如同一模块)的表切分出来放在一个server上。如果表并不多,但每张表的数据非常多,这时候适合水平切分,即把表的数据按某种规则(比如按ID散列)切分到多个数据库(server)上。当然,现实中更多是这两种情况混杂在一起,这时候需要根据实际情况做出选择,也可能会综合使用垂直与水平切分,从而将原有数据库切分成类似矩阵一样可以无限扩充的数据库(server)阵列。下面分别详细地介绍一下垂直切分和水平切分 1.1、垂直切分 垂直切分的最大特点就是规则简单,实施也更为方便,尤其适合各业务之间的耦合度非 常低,相互影响很小,业务逻辑非常清晰的系统。在这种系统中,可以很容易做到将不同业 务模块所使用的表分拆到不同的数据库中。根据不同的表来进行拆分,对应用程序的影响也 更小,拆分规则也会比较简单清晰。(这也就是所谓的”share nothing”)。 1.2、水平切分 水平切分与垂直切分相比,相对来说稍微复杂一些。因为要将同一个表中的不同数据拆分到不同的数据库中,对于应用程序来说,拆分规则本身就较根据表名来拆分更为复杂

mysql主从复制+读写分离

自闭症网瘾萝莉.ら 提交于 2019-11-30 15:50:44
部署环境: 系统环境CentOS release 6.5_x64 主mysql服务器ip:172.18.49.10 从mysql服务器ip:172.18.49.2 开始部署安装: Mysql服务器都已经搭建完成。 l 主mysql上 : # cp /etc/my.cnf /etc/my.cnf.bak # vi /etc/my.cnf log_bin=mysql-bin //开启二进制日志 server_id=1 //server_id 的值主从必须不同 # service mysqld restart 登录mysql后进行授权: mysql> grant all on *.* to 'replication'@'%' identified by 'replication'; mysql> flush privileges; 解释:在master的数据库服务器中建立一个复制的账户,每个slave使用该账户链接master来进行复制,设置所有权限(根据具体情况自定)。上面创建了一个replication用户,密码是replication。只允许在所有段的ip地址的登录。 查看master的状态: # mysql -uroot -p mysql> show master status; 记住file和position的值,配置slave的时候需要用。 l 从mysql上配置 :

实现Mysql主从复制读写分离

故事扮演 提交于 2019-11-27 06:21:17
实现Mysql主从复制读写分离记录 本次研究是通过配置Mysql实现主从复制,使用Amoeba代理实现读写分离。 参照资料 : http://my.oschina.net/u/1169079/blog/390726 Mysql主从复制: 根据查资料发现,只需修改对应的mysql文件目录下的my.ini配置文件,之后在命令行界面执行相关命令后,即可实现主从复制。分工及工具如下 主数据库:董胜燕 IP:192.168.1.102 Mysql版本:5.7 从数据库:高宇飞 IP:192.168.1.103 Mysql版本:5.7 修改主数据库配置 首先,修改主数据库的my.ini配置文件 : 在[mysqld] 下增加如图所示部分语句,其中字段代表含义: binlog-ignore-db 指定忽略复制的数据库 log-bin 指定 数据库操作日志,复制数据读取此日志 server-id Mysql服务id,多个主从时一定不能重复。 symbolic-links 禁用符号链接,防止安全风险 修改完成后,重启Mysql服务,打开命令行窗口,验证是否已打开主数据库: 输入命令登录mysql,输入 show master status\G;查看主数据库状态,出现以下结果,既是配置成功。 此时,需要记住File 与Position的值,修改从数据库配置时需要使用。 启动成功后

amoeba+mmm搭建mysql高可用负载均衡集群

微笑、不失礼 提交于 2019-11-26 12:12:39
架构优点:(1)99%高可用; (2)读写分离,负载均衡; (3)自动故障切换(4)自动切换主从 架构缺点:(1)需要在每一个mysql节点安装mmm-agent,新加入节点之后要修改每一台的mmm_common.conf 配置文件 (2)amoeba目前无人维护,这是最大的安全隐患。 1.架构图 2.所需软件 名称 版本 下载地址 mysql server mysql Ver 14.14 Distrib 5.6.27, for Linux (x86_64) yum源安装,yum源地址:http://dev.mysql.com/get/mysql57-community-release-el6-7.noarch.rpm mysql-mmm 2.2.1 yum源安装 amoeba amoeba-mysql-3.0.5-RC https://sourceforge.net/projects/amoeba/files/ 3.机器配置与ip地址 机器名 ip地址 配置 用途 amoeba1 192.168.2.155/192.168.10.30 4G,4C amoeba+mmm_monitor+keepalived (主) amoeba2 192.168.2.156/192.168.10.31 4G,4C amoeba+mmm_monitor+keepalived (备) db1 192