MySQL + KeepAlived 双机热备搭建+邮件通知

MySQL + KeepAlived 双机热备搭建 + 邮件通知

搭建 MySQL 双主模式(互为主备模式),并使用 keepalived 进行对外服务。

注意:
1、这里准备的是两台机器(centos 7),两台服务器同时互为对方的主节点(master)和从节点(slave
两台服务器的 IP 分别为:192.168.12.64(mysql01)192.168.12.65(mysql02),实际情况请自行对应。

2、搭建过程中请先关闭防火墙,以避免由于防火墙的问题导致无法访问的问题,实际生产环境中请根据需要机型开放防火墙。

安装 mysql

mysql安装对于大家来说都已经是轻车熟路了吧,这里我就不再赘述了。如有不清楚的小伙伴可以参照我之前的 mysql安装记录 进行安装。

配置主从关系

到这里意味着你的两台机器上的 mysql 实例已经安装完成,也可以正常使用了,接下来开始配置 mysql 实例之间的关系。

在两台机器上 添加如下所示配置

vi /etc/my.cnf

mysql01 添加如下所示配置信息

[mysqld]
#服务节点id,任意写,只要与组成节点的其他mysql配置中不同就可以
server-id=1
# 二进制文件名称,可设置为其他名称
log_bin=master-bin
# 自增步长,一般是集群由多少台组成就填写多少
auto_increment_increment=2
# 起始值
auto_increment_offset=1
# 忽略mysql安装时候已有的四个库,如果不在乎也可以不写一下四行
binlog_ignore_db=sys
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
#希望同步的数据库,我这里写的是test,请根据实际情况修改,若不写此项则默认同步所有库
replicate_do_db=test 

mysql02 添加如下所示配置信息

[mysqld]
server-id=2
log_bin=master-bin
auto_increment_increment=2
auto_increment_offset=2
binlog_ignore_db=sys
binlog_ignore_db=mysql
binlog_ignore_db=information_schema
binlog_ignore_db=performance_schema
replicate_do_db=test

使用mysql客户端登录mysql,添加并设置将用来拷贝的用户

  • 两台服务器需要执行以下操作(创建用户,重启mysql服务)
[root@mysql01 ~]# mysql -uroot -p
Enter password:
# 输入密码进入mysql 客户端
  • 创建用户(如果使用root用户作为 拷贝数据的用户可以忽略此步,但不建议这么做)
use mysql;
# 创建一个名为test的用户,密码也为test,并且允许所有ip登录,实际情况请自行进行修改
create user 'test'@'%' identified by 'test';
# 这里图省事,直接赋予test所有的权限,实际情况请自行进行修改
grant all privileges on *.* to 'test'@'%';
# 服务 test 作为slave 拷贝的权限
grant replication slave on *.* to 'test'@'%';
# 刷新权限
flush privileges;
#退出mysql客户端并重启mysql
exit;
systemctl restrat mysqld

重启完成后,再次进入mysql,开始添加主从关系

信息同步:这里两台机器都应该在mysql客户端界面,确保已经都在客户端界面中,然后进行下面的操作

mysql01中输入如下命令,查看主节点状态信息

show master status\G;

执行结果如下:
在这里插入图片描述
mysql02 上输入以下语句

# 先说明一下参数:MASTER_HOST 就是主节点的ip(这里是mysql01的ip地址)
# MASTER_USER 和 MASTER_PASSWORD 是之前创建的用户名和密码,这里也是mysql01上创建的
# MASTER_LOG_FILE 和 MASTER_LOG_POS 就是上图中框出来的数据,请对应修改
CHANGE MASTER TO
MASTER_HOST='192.168.12.64', 
MASTER_USER='test', 
MASTER_PASSWORD='test',
MASTER_LOG_FILE='master-bin.000005', 
MASTER_LOG_POS=154;

# 开启从库
start slave;
# 查看工作状态
show slave status\G;

如果看到如下信息,那就证明你的主从配置已经成功生效了。
在这里插入图片描述

到此,一主一从的模式已经完成了。接下来需要配置 mysql02mysql01 的主节点

mysql02中输入如下命令,查看主节点状态信息

show master status\G;

mysql01 上输入以下语句(记得修改对应的数据)

CHANGE MASTER TO
MASTER_HOST='192.168.12.65', 
MASTER_USER='test', 
MASTER_PASSWORD='test',
MASTER_LOG_FILE='master-bin.000004', 
MASTER_LOG_POS=394;
start slave;

到此两台mysql实例的互为主从已经配置完成。

安装 keepalived

keepalived 可以选择使用yum 命令安装或着 使用二进制包进行安装,这里就直接使用命令进行安装了

关闭安全监测模块

vi /etc/selinux/config

SELINUX=enforcing改为SELINUX=disabled,退出保存。重启后生效。

输入命令 setenforce 0 ,先临时生效。

  • keepalived 安装命令
yum install -y keepalived

安装完成后,会在 /etc/keepalived 目录下有个名为 keepalived.conf配置文件

mysql 状态监测脚本

# 创建一个脚本,用于监测mysql是否正常运行, 存放的目录请随意,只要你自己知道就行

vi mysql_check.sh

# 文件内容(不要漏掉 #!/bin/bash)

#!/bin/bash
C=`ps -C mysqld --no-header | wc -l`
if [ $C -eq 0 ];then
	systemctl kill keepalived
fi

修改配置文件(两台都要修改)

vi /etc/keepalived/keepalived.conf

# 修改配置如下就可完成双机热备的 IP 漂移配置


global_defs {
   vrrp_mcast_group4 224.0.0.18
}

vrrp_script check_mysql {
	script "/opt/mysql-check.sh" #脚本存放位置
	internal 2 #执行时间(周期,单位:秒)
}

vrrp_instance DB {
    state MASTER #这里主节点为 MASTER,其余的节点(备用节点)修改为 BACKUP
    interface ens192 #网卡名称根据实际情况修改
    virtual_router_id 51
    priority 100 #节点的权重,主节点需要大于备用节点(数字越大,权重越高,优先级越高)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.12.70 #这里是 漂移地址,主备节点一致
    }
    track_script {
		check_mysql
    }
}

启动 keepalived

systemctl start keepalived
# 查看一下主节点的ip地址时候多出了新增的虚拟地址
ifconfig 

在这里插入图片描述

到此,双击热备(互为主从的mysql集群)已经搭建完成,可以手动关闭主节点看看,是否可以正常的切换无感知。

增加邮件通知功能

当实际生产环境中出现机器切换时,应该需要通知到对应的人员,所以这里再添加一个邮件通知的功能

安装邮件发送服务

yum install -y mailx

配置发件人信息

vi /etc/mail.rc

set from=xxx@163.com
set smtp=smtp.163.com
set smtp-auth-user=xxx@163.com
set smtp-auth-password=xxxx #163的邮箱要求填写的是授权码,其他邮箱请另作修改
set smtp-auth=login
set ssl-verify=ignore

邮件发送脚本

vi sendMail.sh

# 文件内容(不要漏掉 #!/bin/bash)
#!/bin/bash
contact='destnation' # 收件人
notify() {
mailsubject="$(hostname) to be $1, vip floating"
mailbody="$(date +'%F %T'): vrrp transition, $(hostname) changed to be $1"
echo "$mailbody" | mail -s "$mailsubject" $contact
}
case $1 in
master)
notify master
;;
backup)
notify backup
;;
*)
echo "Usage: $(basename $0) {master|backup}"
exit 1
;;
esac

修改keepalived配置

其实只是添加两行配置 (邮件发送位置自行修改)

    notify_master "/bin/bash /opt/sendMail.sh master"
    notify_backup "/bin/bash /opt/sendMail.sh backup"

完整的配置文件如下:


global_defs { 
   vrrp_mcast_group4 224.0.0.18
}

vrrp_script check_mysql {
	script "/opt/mysql-check.sh" #脚本存放位置
	internal 2 #执行时间(周期,单位:秒)
}

vrrp_instance DB {
    state MASTER #这里主节点为 MASTER,其余的节点(备用节点)修改为 BACKUP
    interface ens192 #网卡名称根据实际情况修改
    virtual_router_id 51
    priority 100 #节点的权重,主节点需要大于备用节点(数字越大,权重越高,优先级越高)
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass 123456
    }
    virtual_ipaddress {
        192.168.12.70 #这里是 漂移地址,主备节点一致
    }
    track_script {
		check_mysql
    }
    notify_master "/bin/bash /opt/sendMail.sh master"
    notify_backup "/bin/bash /opt/sendMail.sh backup"
}

修改完配置之后被忘记重启 keepalived 服务!!!

到此,mysql(双主)+keepalived(热备) + 邮件通知 已经完成搭建!

欢迎给位大佬留言、交流!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值