使用amoeba实现mysql读写分离

(2)使用amoeba实现读写分离

  注意:(首先进行主从复制配置。然后开始在代理服务器上使用amoeba进行读写分离。最后在客户端测试)

    (master,slave,proxy,client服务器各一台)



 

代理服务器上进行的操作(10.0.199.3)

# iptables -F


      (1)安装jdk

       # tar -xvf  jdk-7u51-linux-x64.tar.gz  -C  /usr/local/

       # mv jdk1.7.0_51 java


      (2)编辑/etc/profile文件,设置java环境变量
        # vim /etc/profile
        JAVA_HOME="/usr/local/java"  \\指定jdk的安装目录
        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  使生效


               QQ截图20150724111752.png

    

       (3)查看和调整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的默认版本


          (4)安装和配置amoeba实现读写分离
                  amoeba-mysql-3.0.5-RC-distribution.zip

         # unzip amoeba-mysql-3.0.5-RC-distribution.zip -d /usr/local/
         # mv amoeba-mysql-3.0.5-RC amoeba
         # cd /usr/local/amoeba/conf/

         # vim dbServers.xml    \\定义后端服务器信息(主从服务器的信息)

          <property name="sendBufferSize">256</property>  \\设置发送缓冲区大小
          <property name="receiveBufferSize">256</property> \\设置接收缓冲区大小

                

                 <property name="port">3306</property>  \\设置后端服务器端口

         <property name="schema">sxjy</property>  \\设置代理默认连接的数据库

                \\ 在客户端查询数据库中数据时 如果是查询sxjy下的数据,则不用加数据库名即sxjy。

        \\ 如果是查询别的数据库下的数据,则需要加数据库名,如:test.stu 

               \\服务器上必须要创建该数据库 而且需要在里面创建几个表,然后同步到从服务器上。     

        

           <property name="user">root</property> (可以随意写一个用户 但是在授权的时候一定要用在此处设置的用户)

      <property name="password">aixocm</property>

               \\设置数据库、登陆MySQL的帐号和密码 \\设置连接后端服务器的密码

            注释:上面两项配置root aixocm

       是在主从服务器上对代理服务器进行授权时,使代理服务器能够使用主从服务器上的此用户进行连接主从。

       mysql> grant replication slave on *.* to 'repuser'@'10.0.199.3' identified by 'aixocm';

      mysql> flush privileges;                   root                                aixocm


              <dbServer name="master1"  parent="abstractServer"\\定义后端服务器

                 <factoryConfig>

       <property name="ipAddress">10.0.199.1</property>   \\10.0.199.1是主服务器Ip

               <dbServer name="slave1"  parent="abstractServer"\\定义后端服务器

                <factoryConfig>      

           <property name="ipAddress">10.0.199.2</property>   \\199.2 从服务器Ip

                 </factoryConfig>

     </dbServer>

             注释:主从服务器的名字分别是master1、slave1

       

          <dbServer name="master" virtual="true">   \\定义服务器池

        <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

       <property name="loadbalance">1</property>  \\定义负载均衡算法

       <property name="poolNames">master1</property> \\添加服务器,多个用逗号隔开

               </poolConfig>

     </dbServer>

 注释:主服务器池的名字是master。池子中可以包括很多个主服务器,而这里只有一个主服务器master1,所以只写了一个

 

      <dbServer name="slave" virtual="true>   \\定义服务器池

              <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">

       <property name="loadbalance">1</property>

       <property name="poolNames">slave1</property>

              </poolConfig>
     </dbServer>


   # vim amoeba.xml       \\定义代理信息

         <property name="port">3306</property>   \\设置代理服务器监听的端口
     <property name="ipAddress">10.0.199.3</property>  (本机ip)  \\设置代理监听的地址

           

     <property name="sendBufferSize">256</property>

     <property name="receiveBufferSize">256</property>

      

     <property name="user">root</property>     \\设置代理服务器使用的用户名
     <property name="password">aixocm</property> \\设置代理服务器使用的密码

         注释:上面两项配置root aixocm

         是在客户端进行测试时使客户端能够代理服务器上的该用户 连接代理服务器 操作数据库数据

      # mysql -u repuser -h 10.0.199.3 -paixocm  -e "select * from sxkj.stu"

                                 root                    aixocm 


      <property name="LRUMapSize">1500</property>

      <property name="defaultPool">master</property>

           \\设置默认的服务器池,一般除select,insert,update,delete等的其它操作都在默认的服务器进行


     <property name="writePool">master</property>  \\执行写操作的服务器池 释:主服务器池的名字
     <property name="readPool">slave</property>   \\执行读操作的服务器池  

     <property name="needParse">true</property>

     注释:该处 writePool  一定要与 dbServer.xml文件中的主服务器池名字必须是一样的 

            readPool = 从服务器池     


       

    # vim jvm.properties   \\设置java内存分配信息

          # cd /usr/local/amoeba/

     JVM_OPTIONS="-server -Xms256m -Xmx1024m -Xss512k -XX:PermSize=32m -XX:MaxPermSize=128m"  
    # vim access_list.conf  \\访问列表
     10.0.199.100:no
     10.0.*.*:yes
      

         

在主从服务器上进行的操作(10.0.199.1、2):

# iptables -F

        在主从服务器上对代理服务器进行授权(谨记要和配置中的用户名和密码一致)

           使代理服务器能够使用主从服务器上的此用户进行连接主从。

      mysql> grant all on *.* to 'root'@'10.0.199.3' identified by 'aixocm';

      mysql> flush privileges;



在代理服务器上进行的操作:

     启动amoeba

      # cd /usr/local/amoeba/bin

   # ./launcher


在客户端进行的操作(10.0.199.4):

      测试:(谨记要和配置中的用户名和密码一致)

         客户端 # mysql -u root -h 10.0.199.3 -paixocm  -e "select * from sxkj.stu"

                          或:# mysql  -u  root  -h  10.0.199.3  -p

         插入更新查询数据等,查看主从服务


你可能感兴趣的:(配置详解)