MySQL+Amoeba+MySQLMMM高可用群集
发表于:2025-11-08 作者:千家信息网编辑
千家信息网最后更新 2025年11月08日,一、MySQL-MMM(Master-Master MySQL)MMM概述双主故障切换和日常管理的脚本程序由多个mysql主服务器和多个mysql从服务器组成虽然叫做双主复制,但是业务上同一时刻只允许
千家信息网最后更新 2025年11月08日MySQL+Amoeba+MySQLMMM高可用群集
一、MySQL-MMM(Master-Master MySQL)
MMM概述
- 双主故障切换和日常管理的脚本程序
- 由多个mysql主服务器和多个mysql从服务器组成
- 虽然叫做双主复制,但是业务上同一时刻只允许对一个主进行写入,另一台备选主上提供部分读服务,
- MMM使用Perl语言开发,主要用来监控和管理MySQL Master-Master(双主)复制
- 其内部附加的工具脚本也可以实现多个slave的read负载均衡。
注:
同一时刻只允许一个主进行写入,额外主提供部分读的服务
- 不适用于要求数据一致性很高的场合(可替换产品为:Heartbeat+DRBD+MySQL高可用方案)
MMM组成
- mmm_mond:监控进程,负责所有的监控、决定和处理所有节点
- mmm_agentd:运行在每个MySQL数据库的代理进程,完成监控本地状态并于监控端通信
- mmm_control:一个脚本,提供mmm_mond进程的命令
二、案例
实验环境:
六台Centos6,两台主mysql(master01、master02),两台从mysql(slave01、slave02),一台监控(mmm_mond),一台读写调度器(amoeba)
先部署主主(master01与master02)复制
Master01
1.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.10 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4vim /etc/sysconfig/network HOSTNAME=db1reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repoyum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 log-slave-updates/etc/init.d/mysqld restart4.授权并主主同步
mysql -u root -pmysql> grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123';mysql> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 647 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)mysql> change master to master_host='192.168.1.20',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=481;//所跟IP、log、pos等信息都为第二台主的信息mysql> start slave;mysql> show slave status\G;//查看同步状态,I/0和SQL线程状态为yes则正确Master02
1.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.20 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4vim /etc/sysconfig/networkHOSTNAME=db2reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repoyum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 log-slave-updates 58 server-id = 2/etc/init.d/mysqld restart4.授权并主主同步
mysql -u root -pmysql> grant replication slave on *.* to 'slave'@'192.168.1.%' identified by '123';mysql> show master status;+------------------+----------+--------------+------------------+| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |+------------------+----------+--------------+------------------+| mysql-bin.000001 | 481 | | |+------------------+----------+--------------+------------------+1 row in set (0.00 sec)mysql> change master to master_host='192.168.1.10',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=647;//所跟IP、log、pos等信息都为第一台主的信息mysql> start slave;mysql> show slave status\G;再部署两对主从复制(m1与s1,m2与s2)
Slave01
1.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.30 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4vim /etc/sysconfig/network HOSTNAME=db3reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repoyum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 relay-log=relay-log-bin 51 relay-log-index=slave-relay-bin.index 59 server-id = 3/etc/init.d/mysqld restart4.授权并主从同步(m1,s1)
mysql -u root -pmysql> change master to master_host='192.168.1.10',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=647;//所跟IP、log、pos等信息都为第一台主的信息mysql> start slave;mysql> show slave status\G;Slave02
1.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.40 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db42.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repoyum -y install epel-releaseyum -y install mysql-mmm* mysql mysql-server mysql-devel3.MySQL配置
/etc/init.d/mysqld start && chkconfig --level 35 mysqld onmysqladmin -uroot password "123"cp /usr/share/doc/mysql-server-5.1.73/my-medium.cnf /etc/my.cnfvim /etc/my.cnf [mysqld] 50 relay-log=relay-log-bin 51 relay-log-index=slave-relay-bin.index 59 server-id = 4/etc/init.d/mysqld restart4.授权并主从同步(m2,s2)
mysql -u root -pmysql> change master to master_host='192.168.1.20',master_user='slave',master_password='123',master_log_file='mysql-bin.000001',master_log_pos=647;//所跟IP、log、pos等信息都为第二台主的信息mysql> start slave;mysql> show slave status\G;配置高可用MySQL-MMM
Master01
1.新建授权用户
mysql> grant super,replication client,process on *.* to 'mmm_agent'@'192.168.1.%' identified by '123';//主服务器授权,从服务器自动同步mysql> grant replication client on *.* to 'mmm_monitor'@'192.168.1.%' identified by '123'; //主服务器授权,从服务器自动同步mysql> grant all on *.* to 'test'@'192.168.1.%' identified by '123'; //新建测试用户2.配置MMM_COMMON
vim /etc/mysql-mmm/mmm_common.conf active_master_role writer cluster_interface eth0 //集群IP承载的接口 pid_path /var/run/mysql-mmm/mmm_agentd.pid //PID文件位置(存放MMM的进程号) bin_path /usr/libexec/mysql-mmm/ //运行命令位置 replication_user slave //需使用主从同步时授权用户 replication_password 123 agent_user mmm_agent //代理连接 agent_password 123 ip 192.168.1.10 mode master peer db2 //当db1主机不能使用,自动切换到db2 ip 192.168.1.20 mode master //当前服务器作为主服务器(写) peer db1 //当db2主机不能使用,自动切换到db1 ip 192.168.1.30 mode slave ip 192.168.1.40 mode slave //当前主机作为从服务器(读) hosts db1, db2 ips 192.168.1.250 //写服务器VIP mode exclusive //只有一个host可以writer hosts db3, db4 ips 192.168.1.251, 192.168.1.252 //读服务器VIP mode balanced //多个host可以reader 3.配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.confinclude mmm_common.confthis db14.拷贝文件给其余主机
scp /etc/mysql-mmm/mmm_common.conf root@192.168.1.20:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf root@192.168.1.30:/etc/mysql-mmm/scp /etc/mysql-mmm/mmm_common.conf root@192.168.1.40:/etc/mysql-mmm//etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent onMaster02
配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.confthis db2/etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent onSlave01
配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.confthis db3/etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent onSlave02
配置MMM_AGENT
vim /etc/mysql-mmm/mmm_agent.confthis db4/etc/init.d/mysql-mmm-agent restart && chkconfig --level 35 mysql-mmm-agent on监控配置(mmm_mon)
1.准备工作
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.50 NETMASK=255.255.255.0vim /etc/sysconfig/network-scripts/ifcfg-eth2 DEVICE=eth2 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=dhcpvim /etc/hosts 192.168.1.10 db1 192.168.1.20 db2 192.168.1.30 db3 192.168.1.40 db4reboot2.YUM源配置并安装MMM
rm -rf /etc/yum.repos.d/*wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repoyum -y install epel-releaseyum -y install mysql-mmm* mysql3.配置MMM_COMMON
scp 192.168.1.10:/etc/mysql-mmm/mmm_common.conf /etc/mysql-mmm/4.配置MMM_MON
vim /etc/mysql-mmm/mmm_mon.conf include mmm_common.conf ip 127.0.0.1 ping_ips 192.168.1.10,192.168.1.20,192.168.1.30,192.168.1.40 monitor_user mmm_monitor monitor_password 123 debug 05.启动服务并验证
/etc/init.d/mysql-mmm-monitor restart && chkconfig --level 35 mysql-mmm-monitor on //监控端启动mmm_control show //查看节点状态mysql -u test -p -h 192.168.1.250报错解决方案:
[root@localhost ~]# mysql -u test -p -h 192.168.1.250Enter password:ERROR 2003 (HY000): Can't connect to MySQL server on '192.168.1.254' (113)主服务器:
grant super,replication client,process on *.* to 'mmm_agent'@'db1' identified by '123';grant super,replication client,process on *.* to 'mmm_agent'@'db2' identified by '123';grant super,replication client,process on *.* to 'mmm_agent'@'db3' identified by '123';grant super,replication client,process on *.* to 'mmm_agent'@'db4' identified by '123';日志查看:
tail -f /var/log/mysql-mmm/mmm_agentd.log //MySQL端的Agent日志tail -f /var/log/mysql-mmm/mmm_mond.log //监控机端的Monitor日志部署读写调度器Amoeba
1.环境准备
vim /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 TYPE=Ethernet ONBOOT=yes NM_CONTROLLED=no BOOTPROTO=static IPADDR=192.168.1.254 NETMASK=255.255.255.02.安装jdk与amoeba
yum -y erase java-*chmod +x jdk-6u14-linux-x64.bin./jdk-6u14-linux-x64.binmv jdk1.6.0_14/ /usr/local/jdk1.6vim /etc/profileexport JAVA_HOME=/usr/local/jdk1.6export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/libexport PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin/:$PATH:$HOME/binexport AMOEBA_HOME=/usr/local/amoebaexport PATH=$PATH:$AMOEBA_HOME/binsource /etc/profile && java -versionmkdir /usr/local/amoebatar zxvf amoeba-mysql-binary-2.2.0.tar.gz -C /usr/local/amoeba/chmod -R 755 /usr/local/amoeba/3.在主Mysql数据库新建授权用户
mysql -u root -p mysql> grant all on *.* to haha@'192.168.1.%' identified by '123';4.编辑amoeba配置文件
vim /usr/local/amoeba/conf/amoeba.xml 30 hehe //设置连接Amoeba用户 31 32 123 //设置连接Amoeba用户115 slaves 116117 master 注意删除的注释118 slaves //定义读服务器池vim /usr/local/amoeba/conf/dbServers.xml 25 26 haha //设置连接Mysql的用户 27 28 123 //设置连接mysql的密码注意删除的注释 43 44 45 46 192.168.1.254 //定义写服务器IP 47 48 49 50 51 52 192.168.1.30 //定义读服务器IP 53 54 55 56 57 58 192.168.1.40 //定义读服务器IP 59 60 61 62 68 slave1,slave2 //定义输入slaves读服务器池的主机 69 amoeba start &netstat -utpln | grep 80665.连接测试
client:mysql -u hehe -p -h 192.168.1.254 -P 8066
服务
配置
服务器
监控
信息
同步
用户
准备
主机
工作
主从
多个
状态
进程
数据
文件
日志
脚本
切换
位置
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
鹏达软件开发有限公司
服务器安全系统实施
路由器的服务器名
数据库的图片是什么
2020年网络安全大会时间
12306服务器ip
联想中国2020年服务器营收
河南税务网络安全宣传周知识题
拱墅区管理软件开发
瓜州区网络安全培训
数据库原理第五版课后习题答案
学计算机网络技术要花多少钱
屏幕共享软件开发贵吗
甘肃数据网络技术服务资费
福州闽剧团数据库
安装华为云服务器
陕西crm软件开发公司
安腾网络安全儿童画
定制软件开发项目流程
四年级学生网络安全心得体会
学校招生网络技术
城市服务软件开发
编办网络安全工作汇报
ado连接远程数据库
云教室管理系统服务器时间修改
成都编译分布式存储服务器
丢失数据库连接文件
郑州管理软件开发
服务器机房制作
生物饮食与表型数据库