mysql读写分离
 静态分离:直接将服务器地址写入程序
 动态分离:通过代理服务器对数据进行读写操作,由代理服务器判定读写操作,在主服务器上写数据,在
         从服务器上读数据。

 
  1、使用mysql-proxy实现读写分离
 # ./mysql-proxy --proxy-backend-addresses=10.0.5.150:3306 --proxy-read-only-backend-addresses=10.0.5.151:3306 --proxy-lua-script=/usr/local/mysql-proxy/share/doc/mysql-proxy/rw-splitting.lua --daemon --user=mysql --log-level=warning --log-file=/var/log/mysql-proxy.log --max-open-files=2048 --event-threads=4 --proxy-address=10.0.5.152:3306
 
 --proxy-backend-addresses            指定主服务器地址(写数据)
 --proxy-read-only-backend-addresses  指定从服务器地址(读数据)
 --proxy-lua-script                   指定用于读写分离的脚本程序
 --daemon                             指定以守护进程的方式运行
 --user=mysql                         指定运行的用户
 --log-level                          指定日志记录级别
 --log-file                           指定日志文件位置
 --max-open-files                     指定最大课打开的文件数,受操作系统限制
 --event-threads                      设置工作线程数
 --proxy-address                      设置监听的本机地址和端口
 
 
 获取mysql-proxy帮助
 # ./mysql-proxy --help         \\基本选项帮助
 # ./mysql-proxy --help-proxy   \\代理选项帮助
 
 
 在所有服务器上进行授权
 mysql> grant replication slave on *.* to 'repuser'@'10.0.5.151' identified by 'aixocm';
 mysql> flush privileges;
 (2)使用amoeba实现读写分离
  安装jdk
    # tar xf jdk-7u51-linux-x64.tar.gz -C /usr/local/
    # mv jdk1.7.0_51 java
   
  编辑/etc/profile文件,设置java环境变量
    # vim /etc/profile
      JAVA_HOME="/usr/local/java"
      CLASS_PATH="/usr/local/java/jre:/usr/local/java/lib"
      export JAVA_HOME CLASS_PATH
      PATH="$PATH:/usr/local/mysql/bin:/usr/local/java/bin"
    # source /etc/profile
   
  查看和调整java的默认版本
    # java -version
    # alternatives --install /usr/local/java/bin/java java /usr/local/java/bin/java 100  \\在系统中登记java版本和设置优先级
    # alternatives --display java   \\显示java信息
    # alternatives --config java    \\设置java的默认版本
 安装和配置amoeba实现读写分离
    # unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/
    # mv amoeba-mysql-3.0.5-RC amoeba
   
    # vim dbServers.xml    \\定义后端服务器信息
     256    \\设置发送缓冲区大小
     256 \\设置接收缓冲区大小
     3306       \\设置后端服务器端口
     sxjy     \\设置代理默认连接的数据库
     root
     aixocm  \\设置连接后端服务器的密码
     
       \\定义后端服务器
       
          10.0.5.150
       

     


       \\定义后端服务器
       
          10.0.5.151
       

     


        \\定义服务器池
     
       1  \\定义负载均衡算法
      master1 \\添加服务器,多个用逗号隔开
     

     


     \\定义服务器池
       
          1
          slave1
       

   

    # vim amoeba.xml       \\定义代理信息
    3306   \\设置代理服务器监听的端口
    10.0.5.152 \\设置代理监听的地址
    root  \\设置代理服务器使用的用户名
    aixocm  \\设置代理服务器使用的密码
    master  \\设置默认的服务器池,一般除
       select,insert,update,delete等的其它操作都在默认的服务器进行

    master  \\执行写操作的服务器池
    slave    \\执行读操作的服务器池
    true
   
    # vim jvm.properties   \\设置java内存分配信息
    JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss512k -XX:PermSize=32m -XX:MaxPermSize=128m"
 
    # vim access_list.conf  \\定义访问控制列表
    10.0.5.100:no
    10.0.*.*:yes
   
    # vim dbServers.xml    \\定义后端服务器信息
    # vim amoeba.xml       \\定义代理信息
    # vim jvm.properties   \\设置java内存分配信息
    JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss512k -XX:PermSize=32m -XX:MaxPermSize=128m"
 
    # vim access_list.conf
    10.0.5.100:no
    10.0.*.*:yes

(5)实现数据分割
 # vim rule.xml
   
               
                       id
                       
                       master1
                       slave1
                       master1
               

               
               
                       id
                       
                       master2
                       master2
                       slave2
               

   
   

 
   
   垂直分割