mysql基于amoeba的读写分离

如何实现mysql读写分离 :

通常来说有两种方式:                      master<--->master  (前读,后写)                                                                          |

1,应用程序层实现                                                                                                                                   /\

2,中间件层实现                                                                                                                                 slave slave

应用层实现:

应用层实现是指在应用程序内部及连接器中实现读写分离。

例如:

com.mysql.jdbc.replicationdriver

mysqlnd_ms

优点:

程序内部实现读写分离,安装即可使用

减少部署难度。

访问压力在一定级别以下,性能很好。

缺点:

架构一旦调整,代码要更这变, 不够灵活。

难以实现高级应用,如自动分库,分表

无法适用于更大型的应用场景。

中间件层实现:

中间件层实现是指外部中间件程序实现读写分离

mysql-proxy

amoeba

TDDL(TAObao)

CObar(alibaba)

Atlas(qihoo360)

优点:

架构设计上更加灵活、

可在程序上实现一些高级控制,failover,流量控制

依靠一些技术可以实现mysql性能提升,如连接池

对业务代码侵入性少

缺点:

需要有一定的开发实力和运维团队的支持

什么是Amoeba?

Amoeba 2008发布的第一款开源框架

amoeba for mysql,致力于mysql分布式数据库代理层

它主要在应用层访问mysql的时候充当sql路由功能,专注于分布式数据库代理层,坐落于client,DBserver之间,对客户端透明

具有负载均衡,高可用,sql过滤,读写分离,可路由相到目标数据库,可并发请求多台数据库合并结果

通过amoeba您能够完成数据源的高可用,负载均衡,数据切换功能,

目前amoeba目前不支持事务

1,安装amoeba基于Java开发,首先安装jdk

2,安装amoeba .

3,配置amoeba 在proxy 代理层的amoeba服务器上

vim amoeba.xml

<property name="authenticator">

<bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">

<property name="user">tube</property>

<property name="password">tube</property>

vim  vim dbServers.xml

<property name="port">3306</property>

<!-- mysql schema -->

<property name="schema">viewdb</property>

<!-- mysql user -->

<property name="user">tube</property>

<!--  mysql password -->

<property name="password">123456</property>

<dbServer name="server1"  parent="abstractServer">

<factoryConfig>

<!-- mysql ip -->

<property name="ipAddress">192.168.20.238</property>

</factoryConfig>

</dbServer>

<dbServer name="server2"  parent="abstractServer">

<factoryConfig>

<!-- mysql ip -->

<property name="ipAd dress">192.168.20.237</property>

</factoryConfig>

</dbServer>

4,在后端服务器授权amoeba访问mysql服务器 ,此时授权的是dbServe.xml 里的user

mysql> grant all on rwdb.* to [email protected] identified by ‘123456‘

mysql>flush privileges;

5, vim amoeba.xml

property name="defaultPool">server1</property>

<!-- -->  默认注释,现在打开

<property name="writePool">server1</property>

<property name="readPool">server2</property>

<!-- -->

<property name="needParse">true</property>

6,vim  /bin/amoeba

DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"  将最后的值改为大于160K

7,运行amoeba

cd  /usr/bin/amoeba/bin

./amoeba start &

./amoeba stop

时间: 2024-10-11 12:03:24

mysql基于amoeba的读写分离的相关文章

mysql基于amoeba配置读写分离

                     Mysql高级集群-读写分离Amoeba                          mysql在配置好主从复制之后,已经达到双机热备和容灾的效果.此博客是建立在主从复制的前提上 ,mysql基于amoeba的配置读写分离在我看来:就是为了达到数据库高可用性,安全性以及高并发,达到 负载均衡的效果.说简单点,我个人觉得意思就是让主服务器轻松点,不易挂掉.还有就是充分利用从服务器.  本人水平有限,望各位大神多多指点指点.我非常乐意听取意见. 此版本

MySQL基于Amoeba实现读写分离

读写分离应用分析: 在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作.解决方法: 配置多台数据库服务器以实现主从复制+读写分离.  1.基于程序代码内部实现 在代码中根据select. insert 进行路由分类,这种方法目前生产环境中应用最广泛.优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支.缺点是需要开发人员能来实现,运维人员无从下手. 2.基于中间代理层实现 代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库. 常

mysql基于mysql-proxy的读写分离

mysql-proxy:192.168.20.109 master: 192.168.20.135 slave:192.168.20.137 2.下载msql-proxy:wget http://cdn.mysql.com/Downloads/MySQL-Proxy/mysql-proxy-0.8.2-linux-glibc2.3-x86-64bit.tar.gz useradd -g mysql-proxy -s /sbin/nologin    tar zxvf mysql-proxy-0.

mysql基于Amoeba(变形虫)实现读写分离

一.实验环境 1.准备五台主机,其中三台已经实现了Mysql的主从复制(主从复制不再演示,从安装Amoeba开始),一台安装Amoeba,一台用作试验机 mysql-master:192.168.200.111 mysql-slave1:192.168.200.112 mysql-slave2:192.168.200.113 Amoeba:192.168.200.114 Client:192.168.200.115 2.所有主机关闭安全机制和防火墙. [[email protected] ~]#

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上)

基于Mysql-Proxy实现Mysql的主从复制以及读写分离(上) 上周BOSS给分配任务让实现一下Mysql数据库的主从复制以及读写分离,然后花了一盏茶的功夫进行了调研,发现主从复制数据库进行一番配置直接可以实现,而读写分离则需要一些软件的支持,基本上读写分离的实现有两种: Amoeba(变形虫):是由前阿里员工实现的一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.但是由于没人维护了,而且据说作者也不再回答开发者的问题,所以不予考虑. Mysql-Proxy:是一

MySQL5.6基于GTID同步复制,与如何实现MySQL负载均衡、读写分离。

MySQL想必大家都不陌生,之前文章也有介绍同步复制与半同步复制,今天先来了解下什么是GTID. GTID(global transaction ID)全局事务ID,是由服务器的UUID+一段随机数事务ID. 特性:从服务器从主服务器复制过来的事务,GTID不变,也就是说一个事务在全局复制架构中的ID不变. 有什么用: 在MySQL集群中,当Master故障时,需要从Slave中挑选一个提升为Master可以基于GTID对比其他Slave来保证数据的一致性. MySQL主从同步如何配置数据过滤

MySQL/MariaDB基于MMM实现读写分离及高可用

前言 MMM(Master-Master replication managerfor Mysql,Mysql主主复制管理器)是一套灵活的脚本程序,基于perl实现,用来对mysql replication进行监控和故障迁移,并能管理mysql Master-Master复制的配置(同一时间只有一个节点是可写的). MMM 优缺点 优点:高可用性,扩展性好,出现故障自动切换,对于主主同步,在同一时间只提供一台数据库写操作,保证的数据的一致性. 缺点:Monitor节点是单点,可以结合Keepal

实现mysql 数据集群的读写分离之 amoeba

服务器配置: amoeba    :192.168.240.130 master写服务器:192.168.240.129 slave读服务器 :192.168.240.128 mysql主从配置............略,可参照:http://752030200.blog.51cto.com/8936921/1853460 Amoeba数据库代理 前提条件应该把所有数据库节点的密码进行统一,并允许将要配置的amoeba的IP进行连接. 以下说明和配置文件信息引用自https://my.oschi

Mysql高级集群-读写分离Amoeba

一.环境介绍Master-IP:10.0.0.201Slave- IP:10.0.0.202Amobea-IP:10.0.0.203 二.安装JDK# mkdir /Amoeba# tar -xvf jdk-7u40-linux-x64.tar.gz -C /Amoeba/# vim /etc/profileJAVA_HOME=/Amoeba/jdk1.7.0_40export JAVA_HOME PATH=$JAVA_HOME/bin:$PATHexport PATH CLASSPATH=.: