Amoeba for mysql 读写分离

Amoeba(变形虫)项目
http://docs.hexnova.com/amoeba/
,该开源框架于2008年 开始发布一款 Amoeba for Mysql软件。这个软件致力于MySQL的分布式数据库前端代理层,它主要在应用层访问MySQL的 时候充当SQL路由功能,专注于分布式数据库代理层(Database Proxy)开发。座落与 Client、DB Server(s)之间,对客户端透明。具有负载均衡、高可用性、SQL 过滤、读写分离、可路由相关的到目标数据库、可并发请求多台数据库合并结果。 通过Amoeba你能够完成多数据源的高可用、负载均衡、数据切片的功能,目前Amoeba已在很多 企业的生产线上面使用,但amoeba目前不支持事务。

环境:数据库master服务器 192.168.32.131

数据库slave服务器 192.168.32.132

amoeba for mysql 192.168.32.130

一、主从配置过程略(见上下文)

二、master 创建读写分离连接用户

mysql > grant all on *.* to ‘proxy‘@‘192.168.32.130‘ identified by ‘proxy‘; #从服务器会自动同步

三、amoeba代理服务器

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

官网最新jdk wget -c 
http://download.oracle.com/otn-pub/java/jdk/8u31-b13/jdk-8u31-linux-i586.rpm

chmod 755 jdk-8u31-linux-i586.rpm

rpm -ivh jdk-8u31-linux-i586.rpm

vim /etc/profile #配置jdk环境变量

# set JAVA declare
JAVA_HOME=/usr/java/jdk1.8.0_31
CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME CLASSPATH PATH

. /etc/profile

java -version #验证版本

2、安装amoeba

官网 
http://sourceforge.net/projects/amoeba/files/

mkdir /usr/local/amoeba

unzip -d /usr/local/amoeba/ amoeba-mysql-3.0.5-RC-distribution.zip #解压

cd /usr/local/amoeba/amoeba-mysql-3.0.5-RC/

配置文件:

amoeba.xml #主配置文件

dbServers.xml #后端服务器配置文件

rule.xml #Query路由规则的信息

access_list.conf #访问控制

vim amoeba.xml

 <property name="port">8066</property>     #监听端口

<!-- bind ipAddress -->
 <property name="ipAddress">192.168.32.130</property>    #监听IP

<property name="user">amoeba</property>     #连接帐号
<property name="password">amoeba</property>

<property name="writePool">server2</property>   #定义写组
<property name="readPool">server1</property>    #定义读组

vim conf/dbServers.xml

 <!-- mysql port -->
 <property name="port">3306</property>   #连接后端数据库使用的用户,密码

<!-- mysql schema -->
 <property name="schema">test</property>  #定义适用数据库
 <property name="schema">testing</property>
 <!-- mysql user -->
 <property name="user">proxy</property>
<property name="password">proxy</property>

<dbServer name="server1"  parent="abstractServer">    #定义后端2台server信息
                <factoryConfig>
                        <!-- mysql ip -->
                        <property name="ipAddress">192.168.32.131</property>
                </factoryConfig>
        </dbServer>

<dbServer name="server2"  parent="abstractServer">
                <factoryConfig>
                        <!-- mysql ip -->
                        <property name="ipAddress">192.168.32.132</property>
                </factoryConfig>
        </dbServer>

<dbServer name="multiPool" virtual="true">    #集群和负载均衡
                <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                        <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
                        <property name="loadbalance">1</property>

<!-- Separated by commas,such as: server1,server2,server1 -->
                        <property name="poolNames">server1</property>
                </poolConfig>
        </dbServer>

/usr/local/amoeba/amoeba-mysql-3.0.5-RC/bin/launcher & #启动服务

四、客户端连接测试

1、读

关闭master数据库

mysql -h 192.168.32.130 -u amoeba -p -P 8066 #连接amoeba

mysql> show databases; #查询的是slave上的数据库

2、写

mysql -h 192.168.32.130 -u amoeba -p -P 8066

写到master后,slave会自动同步

时间: 2024-12-20 01:16:27

Amoeba for mysql 读写分离的相关文章

Amoeba实现Mysql读写分离

环境规划 Amoeba读写分离器 172.16.254.144/16 Mysql服务器(master) 172.16.254.150/16 Mysql服务器(slave) 172.16.254.151/16 一.先实现mysql主从复制,在master上使用yum安装mysql [[email protected] mysql]# yum -y install mysql mysql-server 启用二进制日志,编辑/etc/my.cnf在[mysqld]下添加如下行: log-bin = /

Amoeba实现Mysql读写分离部署文档

以下所有理解纯属个人理解,如若有误欢迎指出,不胜感激--o(∩_∩)o 两台服务器配置MYSQL主从复制实现数据高可用,这时读与写操作都有由master服务器来完成的,而从服务器只是复制了mster服务器的数据,这时可以利用一台服务器配置Amoeba实现mysql读写分离, master负责写,slave负责读取,当然 也可以有多个salve-- 从而减轻master服务器的压力,实现负载分摊: 拓扑图: Mysql主从复制原理: 两台mysql服务器一个作为master一个为slave:mas

使用amoeba实现mysql读写分离

使用amoeba实现mysql读写分离 amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特定的数据库上执行.基于此可以实现负载均衡.读写分离.高可用性等需求.与MySQL官方的MySQL Proxy相比,作者强调的是amoeba配置的方便 amoeba使用java所研发,但是amoeba不支持分布式事物(据说现在最新版本已经支持事物),如果用到分布式事物的话不建议使用amoeba. mys

利用amoeba实现mysql读写分离

参考: http://my.oschina.net/u/1169079/blog/390726 http://douya.blog.51cto.com/6173221/1607493 一 安装环境: 三台centos6.7 64位的系统 192.168.127.130   从数据库 192.168.127.131   主数据库 192.168.127.134  amoeba 二 安装过程 (下面的1-3的所以操作都在amoeba服务器上面) 1 首先安装jdk环境,下载,安装,设置环境变量 vi

使用Amoeba实现mysql读写分离机制

Amoeba的实用指南 http://docs.hexnova.com/amoeba/ 如何实现mysql读写分离 : 通常来说有两种方式: 1,应用程序层实现 2,中间件层实现 应用层实现 应用层实现是指在应用程序内部及连接器中实现读写分离. 例如: com.mysql.jdbc.replicationdriver mysqlnd_ms 优点: 程序内部实现读写分离,安装即可使用 减少部署难度. 访问压力在一定级别以下,性能很好. 缺点: 架构一旦调整,代码要更这变, 不够灵活. 难以实现高级

mysql中间件amoeba实现mysql读写分离

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

使用amoeba配置mysql读写分离

一,背景介绍: Amoeba(变形虫)项目,专注 分布式数据库 proxy 开发.座落与Client.DB Server(s)之间.对客户端透明.具有负载均衡.高可用性.sql过滤.读写分离.可路由相关的query到目标数据库.可并发请求多台数据库合并结果.要想搭建Amoeba读写分离,首先需要知道MySQL的主从配置.具体的架构图如下图: 二,配置所需的环境: Amoeba for mysql:192.168.1.28 Master : 192.168.1.247 Slave : 192.16

Amoeba for MySQL读写分离配置

一.      安装和运行Amoeba 1. Amoeba for MySQL 架构: 2. 验证Java的安装Amoeba框架是基于Java SE1.5开发的,建议使用Java SE1.5以上的版本.#  java  -versionjava version "1.6.0_35"Java(TM) SE Runtime Environment (build 1.6.0_35-b10)Java HotSpot(TM) 64-Bit Server VM (build 20.10-b01,

amoeba实现mysql读写分离+主从复制架构

一.环境 系统:centos6.5 mysql版本:mysql5.6 master服务器:192.168.1.21 slave服务器: 192.168.1.100 master写 slave读 二.实现mysql主从复制 在master的/etc/my.cnf中[mysqld]字段下加入如下内容: server_id=1 log_bin=mysql-bin binlog_format=mixed relay-log=relay-bin relay-log-index=slave-relay-bi