欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  数据库

基于amoeba+keepalived+mmm实现mysql读写分离高可用架构

程序员文章站 2022-06-03 22:53:04
...

更多博文请关注:没有伞的孩子必须努力奔跑(www.xuchanggang.cn)在上一篇已经通过mysql-mmm实现对mysql数据库的动态监控,这一篇我们将结合amoeba实现对数据库访

1.将需要的包传送到服务器并解压[我这里默认安装包已经上传到服务器家目录]

# 在192.168.1.112/192.168.1.113上分别解压如下几个包 [root@client112 ~]# tar -xf keepalived-1.2.9.tar.gz [root@client112 ~]# tar -xf jdk-7u15-linux-x64.tar.gz -C /usr/local/ # 在192.168.1.113 [root@client113 ~]# tar -xf keepalived-1.2.9.tar.gz [root@client113 ~]# tar -xf jdk-7u15-linux-x64.tar.gz -C /usr/local/

2.分别到192.168.1.112/192.168.1.113上配置java环境[这里只演示在112上的操作,113上重复此操作即可]

[root@client112 ~]# cd /usr/local/ [root@client112 local]# mkdir java # 将解压出来的内容移到java目录 [root@client112 local]# mv jdk1.7.0_15/* java # 设置java环境变量 [root@client112 local]# echo $JAVA_HOME [root@client112 local]# vim /etc/profile # 在末尾添加 JAVA_HOME=/usr/local/java AMOEBA_HOME=/usr/local/amoeba export PATH=$PATH:$AMOEBA_HOME/bin:$JAVA_HOME/bin:$JAVA_HOME/jre/bin # 使变量生效 [root@centos local]# source /etc/profile

3.分别到192.168.1.112/192.168.1.113上配置amoeba[这里只演示在112上的操作,113上重复此操作即可]

(1).配置amoeba中的dbServer.xml(后端mysql 服务器连接配置)

# 建立相应amoeba目录 [root@client112 local]# mkdir /usr/local/amoeba # 将压缩包解压到指定目录 [root@client112 local]# tar -xf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba [root@client112 local]# cd /usr/local/amoeba/ [root@client112 local]# cd conf/ # 配置后端mysql 服务器连接[dbServer.xml] [root@client112 conf]# vim dbServers.xml .........................(省略) ${defaultManager}64128 # 设置 mysql 数据库的端口 3306 # 设置缺省的数据库,当连接amoeba时,操作表必须显式的指定数据库名,即采用dbname.tablename的方式, # 不支持 use dbname指定缺省库,,因为操作会调度到各个后端dbserver kongzhong # 设置amoeba连接后端数据库服务器的账号和密码,需在后端数据库器上创建该用户,并授权amoeba连接 # 此处需要特别注意:**** 密码默认是注释掉,需要去掉注释!!! kongzhongkongzhong # 最大连接数[默认] 500 # 最大空闲连接数[默认] 50010600000600000truetruetrue # 设置一个后端的dbServer,名为master ,这个可以随便取,但是为了明确其含义,最好给予特殊含义的单词 # 下面指定的数据库IP地址,为mmm提供给对外访问的虚拟IP地址 192.168.1.12192.168.1.13192.168.1.14192.168.1.15192.168.1.16 # 指定一个虚拟的dbServer,将上面定义的dbserver加入这个虚拟的dbserver,相当于组成一个组[这里我们将读的数据库组成一个组] # 这里 需要将 改成自己想要取的名字,这个名字也需要有含义,后面会用到 # 选择调度算法 1 是轮询 2 是权重 3 是HA 这里选择1 轮询 1 # 负载均衡,slave1,slave2当成2个服务器进行调度,这模拟量加权的调度算法。 # 注意这里使用的dbserver必须是已经定义了的,可以写多个,如slave1,slave2 slave1,slave2,slave3,slave4


(2).配置 Amoeba 监听端口[amoeba.xml]

[root@client112 conf]# vim amoeba.xml .........................(省略) # 设置amoeba监听的端口(这里如果默认,后面测试需要指定端口,就是这里的端口) 3306 .........................(省略) # 提供客户端连接amoeba时需要使用这里设定的账号 (这里的账号密码和amoeba连接后端数据库服务器的密码无关) kongzhong123 # 提供客户端连接amoeba时需要使用这里设定的密码 kongzhong123${amoeba.home}/conf/access_list.conf .........................(省略) ${amoeba.home}/conf/rule.xml${amoeba.home}/conf/ruleFunctionMap.xml${amoeba.home}/conf/functionMap.xml1500master # 把默认注释掉的读写分离选项,把注释去掉并readpool修改成virtualslave(这个名字,我们前面在dbServer.xml里设置一个读数据库组,这里是作为只读池) mastervirtualslavetrue