Amoeba实现数据库读写分离
admin
2023-05-08 17:22:04
0次

一 环境以及软件版本:
系统: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

3306   #设置amoeba监听的端口,默认是8066
    10.0.0.159  #设置amoeba监听的ip地址
root    #设置连接amoeba的用户
123456  #设置连接amoeba的密码
    #(这里的账号密码和amoeba连接后端数据库服务器的密码无关)
    master  #设置amoeba默认的池,这里设置为matster
    #这两个选项默认是注销掉的,需要取消注释,这里用来指定写库和读库
 master   
  multiPool #这给的是一个组,如果这个组里有多个dbServers则可以负载均衡,此组在 dbServers.xml中设置

设置mysql库的信息,在当前目录下的dbServers.xml文件里

vim dbServers.xml

             #设置amoeba连接后端mysql的端口
       3306

         #设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式,不支持 use dbname指定缺省库,因为操作会调度到各个后端dbserver
         test

            #设置amoeba连接后端mysql的用户名和密码
           amoeba

            123456

   #设置一个后端的dbServer,这里设置连接可写的master库,此名字可自定义,但要和amoeba.xml中调用的名字一致即可。
            
                      #后端mysql的ip地址
                    10.0.0.176
            
    

     #设置一个后端的dbServer,这里设置连接可读的salve,此名字可自定义,但要和amoeba.xml中调用的名字一致即可。
            
                      #后端mysql的ip地址
                    10.0.0.193
            
    

  #定义一个dbserver组
            
                    
                                            ##选择调度算法,1表示轮询负载均衡,2表示权重,3表示HA, 这里选择1
                    1

                    
                    slave #组成员,当有多个时用逗号分隔
            
    

三 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...
 log4j:WARN log4j config load completed from file:/usr/local/amoeba/conf/log4j.xml
 2018-01-02 23:34:22,152 INFO  context.MysqlRuntimeContext - Amoeba for Mysql current versoin=5.1.45-           mysql-amoeba-proxy-3.0.4-BETA
log4j:WARN ip access config load completed from file:/usr/local/amoeba/conf/access_list.conf
2018-01-02 23:34:22,520 INFO  net.ServerableConnectionManager - Server listening on /10.0.0.159:3306.
    #启动成功

    # ss -tanlp
    LISTE    128     ::ffff:10.0.0.159:3306     :::*

五 测试:用另外的mysql客户端连接amoeba,测试时我暂停了主从同步,以便更直接的看出效果

mysql -uroot -p123456 -h20.0.0.159

Amoeba实现数据库读写分离
主库上新增一条数据
Amoeba实现数据库读写分离
从库上加入一条数据
Amoeba实现数据库读写分离
回到mysql连接的客户端验证:
Amoeba实现数据库读写分离
只能查看从库的数据,说明基本成功,进一步验证,在客户端插入一条数据
Amoeba实现数据库读写分离
并且客户端在从库上没有查询到新插入的数据,回到主库确认下:
Amoeba实现数据库读写分离

到此验证成功,开启主从同步即可实现读写分离(开始同步前,请自行清理掉有差异的数据,以便主从能正常运行)

相关内容

热门资讯

空调连续工作多久需要停机休息 空调连续工作的时间取决于多个因素,包括空调的型号、功率、使用环境和维护情况等。一般来说,空调可以连续...
空调哪个符号是除湿的 空调除湿功能通常用一个水滴形状的符号表示。不同品牌和型号的空调遥控器可能会有所差异,但一般来说,除湿...
格力空调多长时间加一次氟利昂 1、一般情况下,空调对氟利昂的使用量是非常小的,所以在空调使用了四年左右的时候再考虑加也没问题。2、...
空调用多长时间需要加氟一次 一般情况下是五年。当出现以下这几种情况时,空调才需要加氟。1、空调的室内机和室外机各有两个接口,当接...
格调生活·C标思享荟:卡萨帝在... 9月12日的郑州龙湖金融岛,夜风轻拂,灯光璀璨。“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑...
品牌价值破千亿、高端份额持续领... 9月12日,“C标时刻共传奇——卡萨帝思享荟暨20周年品牌盛典郑州站”在郑州龙湖金融岛举办。2026...
空调主板坏了修800还是换新的 空调主板坏了是修还是换新,需要考虑多个因素,以下是一些建议:1. 维修成本:如果维修费用较低,比如 ...
空调开多久需要休息多长时间 问题:空调开多久需要休息多长时间回答:1、在使用空调的过程中,一般空调开7~8个小时左右需要休息2~...
中央空调多长时间清洗一次 1、一般空调开机前清洗一次即可,空调开机中间时段再清洗一次,空调关机时清洗一次,这样比较合理。2、空...
中央空调氟利昂多久加一次 看空调制热和制冷程度,很多人的观点认为氟利昂必须一年放一次,其实这个观点是错误的,理解上面有点偏差,...