Amoeba达成数据库读写分离:

  一 环境以及软件版本:
  系统:CentOS Linux release 7.2.1511 (Core)
  mysql:Server version: 5.6.33
  Amoeba:amoeba-mysql-3.0.5-RC-distribution
  JDK:1.7.0_80-b15 (Amoeba的运行需要jdk)
 
  二 安装Amoeba:
  1 下载好所需软件:
 
  ls
  amoeba-mysql-3.0.5-RC-distribution.zip    jdk-7u80-linux-x64.rpm
  2 安装jdk
 
  yum -y install jdk-7u80-linux-x64.rpm
  #  java -version
      java version "1.7.0_80"
  Java(TM) SE Runtime Environment (build 1.7.0_80-b15)
  Java HotSpot(TM) 64-Bit Server VM (build 24.80-b11, mixed mode)
  3 解压Amoeba
 
  unzip amoeba-mysql-3.0.5-RC-distribution.zip
   # mv amoeba-mysql-3.0.5-RC /usr/local/amoeba
   # mv amoeba-mysql-3.0.5-RC /usr/local/amoeba
   # cd /usr/local/amoeba/conf/
   # vim amoeba.xml
 
  <property name="port">3306</property>   #设置amoeba监听的端口,默认是8066
      <property name="ipAddress">10.0.0.159</property>  #设置amoeba监听的ip地址
  <property name="user">root</property>    #设置连接amoeba的用户
  <property name="password">123456</property>  #设置连接amoeba的密码
      #(这里的账号密码和amoeba连接后端数据库服务器的密码无关)
      <property name="defaultPool">master</property>  #设置amoeba默认的池,这里设置为matster
      #这两个选项默认是注销掉的,需要取消注释,这里用来指定写库和读库
   <property name="writePool">master</property>   
    <property name="readPool">multiPool</property> #这给的是一个组,如果这个组里有多个dbServers则可以负载均衡,此组在 dbServers.xml中设置
  设置mysql库的信息,在当前目录下的dbServers.xml文件里
 
  vim dbServers.xml
              <!-- mysql port --> #设置amoeba连接后端mysql的端口
         <property name="port">3306</property>
 
          <!-- mysql schema --> #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver
           <property name="schema">test</property>
 
             <!-- mysql user --> #设置amoeba连接后端mysql的用户名和密码
             <property name="user">amoeba</property>
 
              <property name="password">123456</property>
 
     <dbServer name="master"  parent="abstractServer">#设置一个后端的dbServer,这里设置连接可写的master库,此名字可自定义,但要和amoeba.xml中调用的名字一致即可。
              <factoryConfig>
                      <!-- mysql ip -->  #后端mysql的ip地址
                      <property name="ipAddress">10.0.0.176</property>
              </factoryConfig>
      </dbServer>
 
      <dbServer name="slave"  parent="abstractServer"> #设置一个后端的dbServer,这里设置连接可读的salve,此名字可自定义,但要和amoeba.xml中调用的名字一致即可。
              <factoryConfig>
                      <!-- mysql ip -->  #后端mysql的ip地址
                      <property name="ipAddress">10.0.0.193</property>
              </factoryConfig>
      </dbServer>
 
   <dbServer name="multiPool" virtual="true"> #定义一个dbserver组
              <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
                      <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
                                              ##选择调度算法,1表示轮询负载均衡,2表示权重,3表示HA, 这里选择1
                      <property name="loadbalance">1</property>
 
                      <!-- Separated by commas,such as: server1,server2,server1 -->
                      <property name="poolNames">slave</property> #组成员,当有多个时用逗号分隔
              </poolConfig>
      </dbServer>
  三 mysql授权amoeba用户登录(此处我的两台mysql服务器master和slave已经做好了主从同步,并且已经验证成功,需要做主从同步请看https://blog.51cto.com/zengzeyang/1911173)
  master上授权:
  mysql> grant select,insert,update,delete on . to 'amoeba'@'10.0.0.%' identified by '123456';
  mysql> flush privileges;
  slave上授权:
  mysql> grant select on . to 'amoeba'@'10.0.0.%' identified by '123456';
  mysql> flush privileges;
  注意:此处授权的用户密码要和dbServers.xml中配置的一致。如果你的mysql开启所有库主从同步则你在主上授权的用户会同步到从库,解决方法是:1在从库上降权;2主从同步时不让mysql库同步
 
  四 启动amoeba:
  #cd /usr/local/amoeba/bin
 
  vim launcher
  添加JAVA_HOME:
  JAVA_HOME=/usr/java/jdk1.7.0_80
 
      # cd /usr/local/amoeba/
   # vim jvm.properties
   修改VM_OPTIONS:
   JVM_OPTIONS="-server -Xms1024m -Xmx1024m -Xss256k -XX:PermSize=16m -XX:MaxPermSize=96m"
 
         #   /usr/local/amoeba/bin/launcher
          2018-01-02 23:34:21 [INFO] Project Name=Amoeba-MySQL, PID=48981 , starting...
   l

dawei

【声明】:郑州站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。