Mysql高可用方案-MMM

1.1 简介

MMM 是一套支持双主故障切换以及双主日常管理的第三方软件。MMM 由 Perl 开发,用来管理和监控双主复制,虽然是双主架构,但是业务上同一时间只允许一个节点进行写入操作。

MMM 包含两类角色: writer 和 reader, 分别对应读写节点和只读节点。

使用 MMM 管理双主节点的情况下,当 writer 节点出现宕机(假定是 master1),程序会自动移除该节点上的读写 VIP,切换到 Master2 ,并设置 Master2 为 read_only = 0, 同时,所有 Slave 节点会指向 Master2

除了管理双主节点,MMM 也会管理 Slave 节点,在出现宕机、复制延迟或复制错误,MMM 会移除该节点的 VIP,直到节点恢复正常。

1.2 组件

MMM 由两类程序组成

  • monitor: 监控集群内数据库的状态,在出现异常时发布切换命令,一般和数据库分开部署
  • agent: 运行在每个 MySQL 服务器上的代理进程,monitor 命令的执行者,完成监控的探针工作和具体服务设置,例如设置 VIP、指向新同步节

1.3  服务器

Master

192.168.42.141

Mysql主机

Master

192.168.42.142

Mysql主机

Slave

192.168.42.143

从机

Monitor

192.168.42.143

监控

                 

1.4  Mysql安装

1.4.1  给每一台机器设置主机名

hostnamectl set-hostname mysql01

hostnamectl set-hostname mysql02

hostnamectl set-hostname mysql03

 1.4.2 每一台机器关闭防火墙

systemctl stop firewalld

 1.4.3  每一台机器安装工具

 yum install -y conntrack ntpdate ntp ipvsadm ipset jq iptables curl sysstat libseccomp wget vim net-tools git iproute lrzsz bash-completion tree bridge-utils unzip bind-utils gcc

 1.4.4  安装mysql

 1.4.4.1 每一台机器下载以及安装依赖

wget http://dev.mysql.com/get/mysql57-community-release-el7-8.noarch.rpm
yum localinstall mysql57-community-release-el7-8.noarch.rpm
yum repolist enabled | grep "mysql.*-community.*"

 1.4.4.2 每一台机器安装mysql-community-server

yum install -y  mysql-community-server

 1.4.4.3 启动

 systemctl start mysqld

 1.4.4.4 查看状态

systemctl status mysqld

 1.4.4.5 设置开机启动

systemctl enable mysqld

 1.4.4.6 重新加载配置

systemctl daemon-reload

1.4.4.7  查看初始化密码​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

grep 'temporary password' /var/log/mysqld.log

1.4.4.8  修改密码

设置密码修改策略(校验级别最低,只校验密码长度)

set global validate_password_policy=0;

修改密码长度

set global validate_password_length=6;

设置root密码

set password for 'root'@'localhost'=password('123456'); 

1.4.5  创建mysql用户

Master(192.168.42.141)与Master(192.168.42.142)创建replication 用户

​​​​​​​create user replication identified by '123456';

给用户replication授权

grant all privileges on *.* to replication@'%' identified by '123456';

刷新配置

flush privileges;

检查用户创建是否成功

use mysql

select user,host from user;

验证两主能互相登录

在192.168.42.142主机执行:

mysql -ureplication -p123456 -h192.168.42.141

在192.168.42.141主机执行:

mysql -ureplication -p123456 -h192.168.42.142

 1.4.6  192.168.42.141配置my.cnf

 vim /etc/my.cnf

  1.4.7  192.168.42.142配置my.cnf

 vim /etc/my.cnf

  1.4.8  192.168.42.143配置my.cnf

 vim /etc/my.cnf

   1.4.9 192.168.42.141备份主库

mysqldump --single-transaction --master-data=2 --all-databases -uroot -p123456>all.sql

​​​​​​​ 1.4.10 把备份主库文件复制到192.168.42.142

 192.168.42.142执行文件

​​​​​​​ 1.4.11 ​​​​​​​在192.168.42.142主从配置

机器192.168.42.142与192.168.42.141互为主从关系,192.168.42.142写入数据可以同步

192.168.42.141,192.168.42.141写入数据可以同步到192.168.42.142

change master to master_host='192.168.42.141',

master_user='replication',

master_password='123456',

MASTER_LOG_FILE='mysql01-bin.000001', MASTER_LOG_POS=154;
​​​​​​​start slave;
show slave status \G;

查看192.168.42.141指针位置

192.168.42.142主从配置 

 查看是否配置成功

​​​​​​​​​​​​​​​​​​​​​ 1.4.12 ​​​​​​​ 在192.168.42.141主从配置

机器192.168.42.142与192.168.42.141互为主从关系,192.168.42.142写入数据可以同步

192.168.42.141,192.168.42.141写入数据可以同步到192.168.42.142

change master to master_host='192.168.42.142',

master_user='replication',

master_password='123456',

MASTER_LOG_FILE='mysql02-bin.000001', MASTER_LOG_POS=853320;
​​​​​​​start slave;
show slave status \G;

查看192.168.42.142指针位置,给192.168.42.141做主从配置

 192.168.42.141主从配置

 查看配置是否成功

​​​​​​​1.4.13 验证是否可以互相同步数据

在192.162.42.141创建test1库,在192.162.42.142创建test2库。在192.162.42.141、192.162.42.142都可以看到test1、test2库。

192.162.42.141查看结果

 192.162.42.142查看结果

1.4.14  ​​​​​​​在192.168.42.143主从配置

 查看192.168.42.141指针位置

192.168.42.143主从配置


change master to master_host='192.168.42.141',

master_user='replication',

master_password='123456',

MASTER_LOG_FILE='mysql01-bin.000001', MASTER_LOG_POS=316;

 查看主从是否配置成功

​​​​​​​1.5 安装MMM

​​​​​​​1.5.1 安装依赖

yum -y install epel-release

每一台安装

 ​​​​​​​1.5.2 下载

wget http://rpms.remirepo.net/enterprise/remi-release-7.rpm

​​​​​​​1.5.3 安装

rpm -Uvh remi-release-7.rpm
yum search mmm

1.5.4​​​​​​​​​​​​​​ 每个服务器安装agent

yum install -y mysql-mmm-agent.noarch

1.5.5 每个服务器安装mmm监控​​​​​​​​​​​​​​​​​​​​​​​​​​​​

yum install -y mysql-mmm*

1.5.6 在192.168.42.141,192.168.42.142给账号授权

set global validate_password_policy=0;
set global validate_password_length=6;
​​​​​​​grant replication client on *.* to 'monitor'@'%' identified by '123456';
grant super,replication client,process  on *.* to 'agent'@'%' identified by '123456';

192.168.42.141,192.168.42.142执行

 ​​​​​​​1.5.7 修改mmm_common.conf配置

192.168.42.141

 192.168.42.142

 192.168.42.143

一样的配置

vim /etc/mysql-mmm/mmm_common.conf

​​​​​​​

active_master_role      writer

<host default>
    cluster_interface       ens33
    pid_path                /run/mysql-mmm-agent.pid
    bin_path                /usr/libexec/mysql-mmm/
    replication_user        replication
    replication_password    123456
    agent_user              agent
    agent_password          123456
</host>

<host db1>
    ip      192.168.42.141
    mode    master
    peer    db2
</host>

<host db2>
    ip      192.168.42.142
    mode    master
    peer    db1
</host>

<host db3>
    ip      192.168.42.143
    mode    slave
</host>

<role writer>
    hosts   db1, db2
    ips     192.168.42.188
    mode    exclusive
</role>

<role reader>
    hosts   db1, db2,db3
    ips     192.168.42.166, 192.168.42.167
    mode    balanced
</role>

 ​​​​​​​1.5.8  ​​​​​​​​​​​​​​​​​​​​​​​​​​​​修改mmm_agent.conf 配置

192.168.42.141配置

 192.168.42.142配置

 192.168.42.143配置

​​​​​​​1.5.9 192.168.42.143修改mmm_mon.conf 配置

 

​​​​​​​1.5.10 修改hosts文件

192.168.42.141

 192.168.42.142

 192.168.42.143

 

 ​​​​​​​1.5.11 启动所有agent,所有节点

systemctl start mysql-mmm-agent

看下端口监听是否ok

​​​​​​​1.5.2 启动monitor

systemctl start mysql-mmm-monitor
mmm_control show

​​​​​​​

1.5.3 宕机测试

192.168.42.141停用musql,模拟宕机情况。在监控机器(192.168.42.143)看到集群写机器到192.168.42.142 变成写了。

192.168.42.141模拟宕机,停用

192.168.42.143查看集群情况,

192.168.42.142变成写了

 192.168.42.141重启,模拟修复

 192.168.42.143查看集群情况

参考 https://segmentfault.com/a/1190000017286307 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

2014Team

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值