MySQL-amoeba-读写分离

读写分离:客户端访问amoeba服务器,写操作在master,读操作在slave(可以做均衡负载)
MySQL-amoeba-读写分离_第1张图片

环境: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 # 前端定义配置文件

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

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

# 定义抽象服务器,为每个后端MySQL服务器提供默认连接配置
name="abstractServer" abstractive="true">
    class="com.meidusa.amoeba.mysql.net.MysqlServerConnectionFactory">
        <property name="manager">${defaultManager}property>
        <property name="sendBufferSize">64property>
        <property name="receiveBufferSize">128property>
        <property name="port">3306property>       # MySQL服务器端口
        <property name="schema">wangproperty> # 连接服务器后默认在哪个库
        <property name="user">redhatproperty>     # 连接MySQL的用户
        <property name="password">*****property>  # 连接MySQL的密码
    
# 定义后端MySQL的IP地址,一个master,一个slave
name="server1"  parent="abstractServer">
    
        <property name="ipAddress">172.25.67.1property>
    

name="server2"  parent="abstractServer">
    
        <property name="ipAddress">172.25.67.2property>
    

# 定义负载均衡及虚拟服务器组-即只读池
name="multiPool" virtual="true">
    class="com.meidusa.amoeba.server.MultipleServerPool">
        <property name="loadbalance">1property>
        <property name="poolNames">server2property>
    

启动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

MySQL-amoeba-读写分离_第2张图片

关闭slave端的mysql后:

这里写图片描述

你可能感兴趣的:(MySQL)