zoukankan      html  css  js  c++  java
  • MySQL基于Amoeba实现读写分离

    读写分离应用分析:
    在企业用户中,在大量的数据请求下,单台数据库将无法承担所有读写操作。解决方法:
    配置多台数据库服务器以实现主从复制+读写分离。

     1、基于程序代码内部实现

    在代码中根据select、 insert 进行路由分类,这种方法目前生产环境中应用最广泛。优点是性能较好,因为在程序代码中实现,不需要增加额外的设备作为硬件开支。缺点是需要开发人员能来实现,运维人员无从下手。
    2、基于中间代理层实现
    代理一般位于客户端和服务器之间,代理服务器接到客户端请求后通过判断后转发到后端数据库。
    常见的代理服务器:
    MySQL-Proxy
    Amoeba
    实验环境:
    amoeba: 192.168.200.114
    master:192.168.200.111
    slave1:192.168.200.112
    slave2:192.168.200.113
    client:192.168.200.123
    前提是主从服务器支持主从复制
     
    配置amoeba服务器:
    1.安装amoeba软件
    准备好jdk-6u14-linux-x64.bin文件
    2.给与该文件执行权限
     
    chmod +x jdk-6u14-linux-x64.bin
    3.执行该文件
    ./jdk-6u14-linux-x64.bin
    执行后会进入阅读模式,一直按回车,提示是否安装是输入yes
    4.将文件移动
    mv jdk1.6.0_14/ /usr/local/jdk1.6
    5.修改配置文件
    vim /etc/profile
    在最后末行添加以下信息:
    export JAVA_HOME=/usr/local/jdk1.6
    export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export PATH=$PATH:$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$HOME/bin
    export AMOEBA_HOME=/usr/local/amoeba
    export PATH=$PATH:$AMOEBA_HOME/bin
    6.查看java版本信息(不建议安装1.7以上的版本,推荐使用1.6及以下)
    java -version

     显示1.7的版本

    7.删除java文件

    rm -rf /usr/bin/java

    8.重新加载文件信息

    source /etc/profile

    9.再次查看版本信息

    java -version

    10.安装配置amoeba

    事先准备amoeba包

    amoeba-mysql-binary-2.2.0.tar.gz

    11创建文件目录

    mkdir /usr/local/amoeba

    解包:

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

    12.给与755的权限

    chmod -R 755 /usr/local/amoeba/

     13.执行amoeba

    /usr/local/amoeba/bin/amoeba

     #出现amoeba start|stop证明配置没有问题

    在MySQL数据库服务器上对amoeba授权:

    1.在每一台服务器上登录数据库执行:

    grant all on *.* to 'admin'@'192.168.200.%'identified by'123123';

    2.刷新授权表:

    flush privileges;

    在amoeba服务器上编辑amoeba.xml配置文件,设置读写分离:

    cd /usr/local/amoeba/conf/

    cp amoeba.xml amoeba.xml.origin

    vim amoeba.xml

     设置一个用户,后面的客户端访问时使用

     设置登录密码

    将注释去掉,设置默认的服务器池||写服务器池||读服务器池

    在amoeba服务器上编辑配置文件,设置登录MySQL服务器的用户及密码、MySQL服务器节点的IP地址、负载均衡的算法:

    cd /usr/local/amoeba/conf/

    cp dbServers.xml dbServers.xml.origin

    vim dbServers.xml

     默认端口为3306,设置访问MySQL数据库的所用的用户名和密码

     依次为:主MySQL服务器的名称和IP地址

        从MySQL服务器1的名称和IP地址

        从MySQL服务器2的名称和IP地址

    与主从MySQL服务器对应

     设置readpool

     负载均衡算法值为1,轮询算法

     前面定义的服务器节点名

    测试环境:

    启动amoeba

    1.检查配置是否出错

     /usr/local/amoeba/bin/amoeba

    amoeba start|stop表示没出错

    2.起服务

    /usr/local/amoeba/bin/amoeba &

    3.检查端口8066

     netstat -lnpt|grep java

  • 相关阅读:
    MySQL 复制表结构和表数据
    学习使用Guava Retryer
    Maven 常用工具类整理
    转 全面理解Javascript闭包和闭包的几种写法及用途
    Python的全局变量
    python的内存管理机制
    Python 隔离沙箱 virtualenv
    <script> 的defer和async
    高性能Javascript(2) DOM编程
    高性能Javascript(1)
  • 原文地址:https://www.cnblogs.com/990114-jhc/p/11678338.html
Copyright © 2011-2022 走看看