MySQL-amoeba-读写分离

读写分离:客户端访问amoeba服务器,写操作在master,读操作在slave(可以做均衡负载)
这里写图片描述

环境:redhat6.5 firewall selinux disabled
amoeba: server3 172.25.67.3
master: server1 172.25.67.1
slave: server2 172.25.67.2

配置好MySQL的主从复制
主从都执行以下操作:

mysql>grant all on *.* to redhat@172.25.67.3 identified by '密码';

以下在amoeba服务器上操作:

cd /root # 仅用于测试,软件安装目录随意,这儿在/root目录下
安装软件:
unzip amoeba-mysql-3.0.5-RC-distribution.zip
tar -zxf jdk-7u79-linux-x64.tar.gz
ln -s jdk1.7.0_79/ java
ln -s amoeba-mysql-3.0.5-RC amoeba
配置环境:
vim /etc/profile

export JAVA_HOME=/root/java 
export CLASSPATH=:$JAVA_HOME/lib
export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile
java -version
java version “1.7.0_79” #查看java

Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)

配置amoeba:

vim /root/amoeba/conf/amoeba.xml # 前端定义配置文件

<service name="Amoeba for Mysql" class="com.meidusa.amoeba.net.ServerableConnectionManager">
    <property name="port">8066</property>       # 代理服务器端口,默认端口是8066
# 修改连接amoeba接口的认证信息
<property name="authenticator">
    <bean class="com.meidusa.amoeba.mysql.server.MysqlClientAuthenticator">   
        <property name="user">root</property>           # 添加登录用户
        <property name="password">redhat</property>     # 添加登录密码
# 查询路由设置
<queryRouter class="com.meidusa.amoeba.mysql.parser.MysqlQueryRouter">
    <property name="ruleLoader">       
        <bean class="com.meidusa.amoeba.route.TableRuleFileLoader">
            <property name="ruleFile">${amoeba.home}/conf/rule.xml</property>
            <property name="functionFile">${amoeba.home}/conf/ruleFunctionMap.xml</property>
        </bean>
    </property>
    <property name="sqlFunctionFile">${amoeba.home}/conf/functionMap.xml</property>
    <property name="LRUMapSize">1500</property>
    <property name="defaultPool">server1</property> # 设定默认服务器节点
    <property name="writePool">server1</property>       # 设定可写服务器节点,节点定义见dbServers.xml文件
    <property name="readPool">multiPool</property>  # 设定只读池,可配置多个slave节点
    <property name="needParse">true</property>
</queryRouter>

vim /root/amoeba/conf/dbServers.xml # 后端节点配置文件

# 定义抽象服务器,为每个后端MySQL服务器提供默认连接配置
<dbServer name="abstractServer" abstractive="true">
    <factoryConfig class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
        <property name="manager">${defaultManager}</property>
        <property name="sendBufferSize">64</property>
        <property name="receiveBufferSize">128</property>
        <property name="port">3306</property>       # MySQL服务器端口
        <property name="schema">wang</property> # 连接服务器后默认在哪个库
        <property name="user">redhat</property>     # 连接MySQL的用户
        <property name="password">*****</property>  # 连接MySQL的密码
    </factoryConfig>
# 定义后端MySQL的IP地址,一个master,一个slave
<dbServer name="server1"  parent="abstractServer">
    <factoryConfig>
        <property name="ipAddress">172.25.67.1</property>
    </factoryConfig>
</dbServer>
<dbServer name="server2"  parent="abstractServer">
    <factoryConfig>
        <property name="ipAddress">172.25.67.2</property>
    </factoryConfig>
</dbServer>
# 定义负载均衡及虚拟服务器组-即只读池
<dbServer name="multiPool" virtual="true">
    <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
        <property name="loadbalance">1</property>
        <property name="poolNames">server2</property>
    </poolConfig>
</dbServer>

启动amoeba:
cd /root/amoeba
bin/launcher

若报错
The stack size specified is too small, Specify at least 228k
Error: Could not create the Java Virtual Machine.
Error: A fatal exception has occurred. Program will exit.

vim /root/amoeba/jvm.properties # 修改

JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss256k....

bin/launcher
查看端口
netstat -antlp | grep 8066

tcp        0      0 :::8066                     :::*                        LISTEN      1197/java

客户端读写分离测试:

关闭master端的mysql后:
mysql -h 172.25.67.3 -uroot -predhat -P8066

这里写图片描述

关闭slave端的mysql后:

这里写图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值