暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Amoeba中间件实现MySQL读写分离、负载均衡

运愁维卧 2021-07-02
978
点击上方【运愁维卧】关注,回复消息“0101”,获取职场N多简历模板、面试经验以及IT资料包~在通过GTID构建主从环境后(GTID方式构建MySQL主从环境并排障),在主库10.234中先安装gcc环境
    [root@web etc]# yum install gcc* -y

    上传jdk和amoeba包到主库10.234的/目录下。

    解压jdk包安装jdk环境并配置相应的环境变量

      [root@web ~]# mkdir amoeba
      [root@web ~]# tar -zxf jdk-8u281-linux-x64.tar.gz -C amoeba/
      [root@web ~]# cd amoeba/
      [root@web amoeba]# ll
      total 0
      drwxr-xr-x 8 10143 10143 273 Dec 9 2020 jdk1.8.0_281
      [root@web amoeba]# ln -s jdk1.8.0_281/ jdk
      [root@web amoeba]# ll
      total 0
      lrwxrwxrwx 1 root root 13 Jun 28 13:15 jdk -> jdk1.8.0_281/
      drwxr-xr-x 8 10143 10143 273 Dec 9 2020 jdk1.8.0_281


      [root@web amoeba]# export JAVA_HOME=/amoeba/jdk
      [root@web amoeba]# export PATH=$JAVA_HOME/bin:$PATH
      [root@web amoeba]# source /etc/profile

      解压、安装amoeba

        [root@web amoeba]# unzip amoeba-mysql-3.0.5-RC-distribution.zip 
        [root@web amoeba]# ll
        total 0
        drwxrwxrwx 7 root root 91 Apr 13 2017 amoeba-mysql-3.0.5-RC
        lrwxrwxrwx 1 root root 13 Jun 28 13:15 jdk -> jdk1.8.0_281/
        drwxr-xr-x 8 10143 10143 273 Dec 9 2020 jdk1.8.0_281
        [root@web amoeba]# mv amoeba-mysql-3.0.5-RC amoeba

        Amoeba配置读写分离、负载均衡

        需要修改dbServers.xml和amoeba.xml两个配置文件(在/amoeba/amoeba/conf目录下)

        修改dbServers.xml如下

          [root@web conf]# vim dbServers.xml
          <!-- mysql port -->
          <property name="port">3306</property>
          #端口
          <!-- mysql schema -->


          <property name="schema">tianyi</property>
          #指定连接的数据库
          <!-- mysql user -->


          <property name="user">root</property>
          #使用的用户名
          <property name="password">root123</property>
          #用户对应的密码
          ……
          <dbServer name="server234" parent="abstractServer">
           #server234相当于定义一个名称
          <factoryConfig>
          <!-- mysql ip -->
          <property name="ipAddress">192.168.10.234</property>
                                  #主库的IP
          <property name="user">root</property>
          <property name="password">root123</property>
          </factoryConfig>
          </dbServer>


                  <dbServer name="server233"  parent="abstractServer">
          <factoryConfig>
          <!-- mysql ip -->
          <property name="ipAddress">192.168.10.233</property>
          <property name="user">root</property>
          <property name="password">root123</property>
          </factoryConfig>
          </dbServer>


          <dbServer name="write" virtual="true">
                  #定义一个dbServer的组名是write
          <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
          <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
          <property name="loadbalance">1</property>
                                  #负载均衡方式为轮询
          <!-- Separated by commas,such as: server1,server2,server1 -->
          <property name="poolNames">server234</property>
          #write组的成员
          </poolConfig>
          </dbServer>
          <dbServer name="read" virtual="true">
          <poolConfig class="com.meidusa.amoeba.server.MultipleServerPool">
          <!-- Load balancing strategy: 1=ROUNDROBIN , 2=WEIGHTBASED , 3=HA-->
          <property name="loadbalance">1</property>
          <!-- Separated by commas,such as: server1,server2,server1 -->
          <property name="poolNames">server234,server233</property>
          </poolConfig>
          </dbServer>

          根据上面的配置在主从都授权数据库root用户密码为root123

            db01 [(none)]>grant all on *.* to 'root'@'192.168.10.%' identified by 'root123';

            修改amoeba.xml如下

              [root@web conf]# vim amoeba.xml
              <property name="port">8806</property>
              #默认监听端口
              <property name="ipAddress">192.168.10.234</property>
              #安装amoeba的服务器IP地址


              <property name="user">amoeba</property>
              <property name="password">amoeba123</property>
              #设置客户端连接amoeba所需的用户名和密码


              <property name="defaultPool">write</property>
              #设置amoeba默认池
              <property name="writePool">write</property>
              #设置amoeba写池
              <property name="readPool">read</property>
              #设置amoeba读池

              在主从都创建amoeba用户,并授权设置密码为amoeba123

                db01 [(none)]>  grant all on *.* to 'amoeba'@'192.168.10.%' identified by 'amoeba123';

                修改amoeba启动文件中的JAVA_HOME的位置

                  [root@web conf]# vim amoeba/amoeba/bin/launcher
                  JAVA_HOME=/amoeba/jdk

                  启动amoeba

                    [root@web conf]# /amoeba/amoeba/bin/launcher &


                    [root@web ~]# netstat -ntpl | grep 8806
                    tcp6 0 0 :::8806 :::* LISTEN 22755/java
                    [root@web ~]#

                    测试

                    从另一台服务器10.184上使用amoeba用户登陆MySQL,在tianyi库(amoeba指定连接的数据库,没有的话要先创建)中创建t1和t2两个表

                      [root@backup_rsync ~]# mysql -uamoeba -pamoeba123 -P8806 -h192.168.10.234


                      此时去主库和从库上查看都可以看到t1和t2的表,因为默认写库是写到的主库10.234中,又因为配置了主从同步,所以会同步到从库中。

                      如果此时在从库中stop slave后,那么通过amoeba再创建一个表t3,那么只有主库中有,而从库中不会有t3这个表。而通过select @@server_id;可以轮询的获取到主库、从库的server_id,说明读的操作是在主库和从库之间轮询执行的,达到了读写分离、负载均衡的目的。

                      当在从库10.233再使用start slave;后,就又恢复主从复制关系了,t3就会同步到从库中了。

                      往期回顾 点击即可阅读
                      每日10句超实用日常英语口语
                      ★Full Stack 运 维 从 0 到 1

                      收藏 | 《实战网络设计手写笔记》

                      收藏 | 《Linux基础入门手写笔记》

                      延时从库的配置及删库恢复案例

                      MySQL多实例配置

                      收藏 | 常用正则表达式速查手册

                      收藏 | 运维常见故障及分析处理28计

                      ★收藏 | 网络设备巡检命令整理

                      基本/高级ACL实验配置

                      SAN存储网络交换机系列之初始化

                      华为 | GRE over IPSec的组网

                      IPSecVPN介绍 & IPSecVPN实验演示

                      JumpServer堡垒机,预防飞来之“锅”

                      文章转载自运愁维卧,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                      评论