Amoeba实现mysql的读写分离 CentOS6.5下

Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy。它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行。基于此可以实现负载均衡、读写分离、高可用性等需求。与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便(基于XML的配置文件,用SQLJEP语法书写规则,比基于lua脚本的MySQL Proxy简单)

不足

a)、目前还不支持事务b)、暂时不支持存储过程(近期会支持)

c)、不适合从amoeba导数据的场景或者对大数据量查询的query并不合适(比如一次请求返回10w以上甚至更多数据的场合)

d)、暂时不支持分库分表,amoeba目前只做到分数据库实例,每个被切分的节点需要保持库表结构一致:

Amoeba:阿米巴原虫

实验环境:ip

master:192.168.122.26

slave:192.168.122.165

client:192.168.122.62

第一步:两台mysql实现主从复制。从可以有多台(不再赘述)

第二部:安装Amoeba


    安装Amoeba需要java环境,

    yum localinsatll jdk-7ull-linux-x64.rpm

    A. JAVA环境
[[email protected] ~]# java -version         //查看java安装高本版的
java version "1.7.0_09-icedtea"
OpenJDK Runtime Environment (rhel-2.3.4.1.el6_3-x86_64)
OpenJDK 64-Bit Server VM (build 23.2-b09, mixed mode)

d第三部:

        vim/etc/profile

         


     source /etc/profile


Amoeba 不许要安装,只需要解压即可

    mkdir /usr/local/amoeba

    # tar xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/

    在master端授权一个用户给读写权限

mysql> grant select, insert, update,delete on *.* to [email protected]‘192.168.122.%‘     identified by ‘123‘;

mysql> flush privileges;

查看slave服务器用户

mysql> select user host from mysql.user;

mysql> delete from mysql.user where user=‘amoeba‘;  删除自动同步的用户

mysql>grant select on *.* to [email protected]‘192.168.122.%‘identified by ‘123‘;  创建一个只读用    户

mysql> flush privileges;

mysql> show grants for ‘amoeba‘@‘192.168.122.%‘;   查询授权用户

配置数据库的连接池

vim dbServers.xml

vim amoeba.xml 的修改

提示:
defaultPool:配置了默认的数据库节点,一些除了SELECTUPDATE INSERT DELETE的语句都会在defaultPool执行。
writePool:配置了数据库写库,通常配为Master,如这里就配置为之前定义的Master数据库。
readPool:配置了数据库读库,通常配为Slave或者Slave组成的数据库池,如这里就配置之前的virtualSlave数据库池。

四、启动并测试
1. 启动
[[email protected] conf]# /usr/local/amoeba/bin/amoeba start
The stack size specified is too small, Specify at least 160k    //提示栈太小128k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

[[email protected] conf]# vim /usr/local/amoeba/bin/amoeba
DEFAULT_OPTS="-server -Xms256m -Xmx256m -Xss256k"

测试的讨论

1,在master端新建一个库,他会被同时复制到slave端。

2,在slave端,停掉主从复制 ( mysql>slave stop;)

3在master端,新建的库里插入一张表1,(slave端不会有)

4,在slave端的新库里插入一张表2 (master端不会有)

5,mysql>slave start; 开启复制

6.在client端插入一张表3,在master端查看,slave端没有,成功。

时间: 2024-12-26 07:06:57

Amoeba实现mysql的读写分离 CentOS6.5下的相关文章

Amoeba for MySQL的读写分离配置

一.Amoeba概述 1.amoeba简介 Amoeba是一个类似MySQL Proxy的分布式数据库中间代理层软件,是由陈思儒开发的一个开源的java项目.其主要功能包括读写分离,垂直分库,水平分库等,经过测试,发现其功能和稳定性都非常的不错,如果需要构架分布式数据库环境,采用Amoeba是一个不错的方案.目前Amoeba一共包括For aladdin,For MySQL和For Oracle三个版本,本文主要关注For MySQL版本的一个读写分离实现. Amoeba处于在应用和数据库之间,

使用Amoeba 实现MySQL DB 读写分离

Amoeba(变形虫)项目是一个开源框架,于2008年开始发布一款 Amoeba for Mysql软件: 这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发:位于 Client.DB Server(s)之间,对客户端透明: =================================================================== 1 简介 2 准备 2.

利用amoeba实现mysql主从复制读写分离

一般大型网站为了缓解大量的并发访问,会在web端实现负载均衡,但是这是远远不够的.到了数据存储层.数据访问层,如果还是传统的架构,或者只是依靠一台服务器,大量的数据库连接操作,会导致数据库面临崩溃的危险.进而造成数据丢失,后果不堪设想.所以我们会考虑如何减少数据库的连接,一方面进行代码的优化,采用优秀的数据缓存技术如memcached,如果资金丰厚的话,必然会想到假设服务器群,来分担主数据库的压力.今天我们就利用MySQL主从配置,实现读写分离,分散数据库的压力.这种方式,很多网站都有应用,今天

Amoeba实现mysql主从读写分离

架设amoeba,实现mysql主从读写分 安装amoeba前需要先安装jdk,因为amoeba是JAVA编写的,所以需要JDK环境的支持,至于版本需要在JAVA1.5以后,mysql数据库需要在4.1以后的版本. 以下是我的实验环境. System:    CentOS 6.5 Master mysql:192.168.88.133 Slave mysql:192.168.88.135 Amoeba server:   192.168.88.131 安装mysql及配置mysql主从这里省略,

【实战】Amoeba 代理 MySQL 主从复制 + 读写分离 【提供源码包】

目录简介: 1· Amoeba 的介绍2· MySQL 主从复制原理3· MySQL 读写分离原理4· 实战案例5· 总结归纳 Amoeba 的介绍 1)Amoeba 是什么: 1·Amoeba 的中文名是:变形虫.它是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡.读写分离.高可用性等需求. 2·Amoeba相当于一个SQL请求的路由器,目的是为负载均衡.读

MySQL的读写分离的几种选择

MySQL的读写分离的几种选择 MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践 原址如下: http://heylinux.com/archives/1004.html Mysql作为目前世界上使用最广泛的免费数据库,相信所有从事系统运维的工程师都一定接触过.但在实际的生产环境中,由单台Mysql作为独立的数据库是完全不能满足实际需求的,无论是在安全性,高可用性以及高并发等各个方面. 因此,一般来说都是通过 主从复制(Master-Slave)的方式来同步

amoeba:关于mysql的读写分离

今天用amoeba做了次读写分离,下面总结下步骤: 三台linux: 1.192.168.1.213    用于做amoeba服务器 2.192.168.1.184    用于mysql数据库 3.192.168.1.185    用于mysql数据库 #service iptables stop #setenforce 0 一.运行amoeba需要java运行环境,所以先安装jdk环境 rpm –ivh jdk-7u45-linux-i586.rpm vim /etc/profile tomc

搭建基于MySQL的读写分离工具Amoeba

搭建基于MySQL的读写分离工具Amoeba: Amoeba工具是实现MySQL数据库读写分离的一个工具,前提是基于MySQL主从复制来实现的: 实验环境(虚拟机): 主机 角色 10.10.10.20 多实例加主从复制 10.10.10.30 Amoeba服务器 10.10.10.40 客户端(最后测试使用) 1.首先搭建MySQL的主从复制(不在多提):需要注意的是:在主从库上需要创建一个用户,在主库上创建的用户为amoeba,权限是create,update,insert,delete:

利用amoeba(变形虫)实现mysql数据库读写分离

关于mysql的读写分离架构有很多,百度的话几乎都是用mysql_proxy实现的.由于proxy是基于lua脚本语言实现的,所以网上不少网友表示proxy效率不高,也不稳定,不建议在生产环境使用:amoeba是阿里开发的一款数据库读写分离的项目(读写分离只是它的一个小功能),由于是基于java编写的,所以运行环境需要安装jdk: 前期准备工作:1.两个数据库,一主一从,主从同步:master: 172.22.10.237:3306 :主库负责写入操作:slave: 10.4.66.58:330