安装部署mysql主从复制环境-检测主从服务并邮件报警

安装部署mysql主从复制环境

实验环境:centos7

实验机器:2台

主数据库:11.11.11.24

从数据库:11.11.11.26

主从复制的准备操作

安装部署两台或多台mysql数据库

yum -y install mariadb mariadb-server

关闭防火墙和selinux

systemctl stop firewalld.service  #关闭防火墙
setenforce 0  #临时关闭selinux

查看mysql的版本信息

[root@localhost ~]# mysql -V
mysql Ver 15.1 Distrib 5.5.65-MariaDB, for Linux (x86_64) using readline 5.1

启动mysql服务,查看系统中是否存在mysql进程,并查看mysql的端口号

[root@localhost ~]# systemctl start mariadb.service
[root@localhost ~]# ss -anp |grep mysql
u_str  LISTEN     0      50     /var/lib/mysql/mysql.sock 44299                 * 0                   users:(("mysqld",pid=3112,fd=15))
tcp    LISTEN     0      50        *:3306                  *:*                   users:(("mysqld",pid=3112,fd=14))

#ss命令可以用来获取socket统计信息,能够显示更多更详细的有关TCP和连接状态的信息,而且比netstat更快速更高效

修改mysql配置文件

 # 以下操作在主服务器上

修改配置mysql的主配置文件  (主数据库)

1.mysql主配置文件路径

vim /etc/my.cnf


2.配置文件内添加以下内容

server-id=1 # 主数据库id为1 主从值不得相同
log_bin=mysql-bin # 开启二进制日志

:wq #保存退出



3.重启mysql服务

[root@localhost ~]# systemctl restart mariadb.service

查看mysql二进制日志信息

# 进入mysql

mysql -uroot    # 原始情况下mysql中root默认的密码为空
执行的命令;

show master status;

在mysql中新建数据库;

create database name; 

在mysql中新建用户并授权

grant all on *.* to 'sjl'@'%' identified by '123';

解释:   在master的数据库服务器中建立一个复制的账户,每个slave使用该账户链接master来进行复制,设置所有权限(根据具体情况自定)。

上面创建了一个sjl用户,密码是123。只允许在所有段的ip地址的登录。

 
修改配置mysql的主配置文件  (从数据库)


1. mysql主配置文件路径

vim /etc/my.cnf


2.配置文件内添加以下内容

server-id=2 # 主数据库id为1 主从值不得相同
relay_log=relay-logs # 开启中继日志,可以自定义目录,mysql用户有权限即可

:wq #保存退出

3.重启mysql服务

[root@localhost ~]# systemctl restart mariadb.service


# 以下内容在数据库内操作

查看中继日志的启动状态

show global variables like '%relay%';


连接master服务器

MariaDB [(none)]> change master to
    -> master_host='11.11.11.24',
    -> master_user='sjl',
    -> master_password='123',
    -> master_log_file='mysql-bin.000001',
    -> master_log_pos=245;

选项解释:

master_host:master 服务器IP

master_user:master 服务器授权用户,也就是 Master 前面创建的那个用户

master_password:master 服务器授权用户对应的密码

master_log_file:master binlog 文件名

master_log_pos:master binlog 文件中的 Postion 值

手动启动复制线程:

start slave;


 mysql主从效果图

MariaDB [(none)]> show slave status G;
*************************** 1. row ***************************
               Slave_IO_State: Connecting to master
                  Master_Host: 11.11.11.24
                  Master_User: sjl
                  Master_Port: 3306
                Connect_Retry: 60
              Master_Log_File: mysql-bin.000001
          Read_Master_Log_Pos: 245
               Relay_Log_File: relay-logs.000001
                Relay_Log_Pos: 4
        Relay_Master_Log_File: mysql-bin.000001
             Slave_IO_Running: Yes
            Slave_SQL_Running: Yes

两个进程都是Yes,为主从复制成功

 主从服务检测脚本

前期准备工作

安装邮件报警命令 mail

yum -y install mailx

配置 
vi /etc/mail.rc  在文件尾加上如下配置 

set from=*****@163.com  # 用那个邮箱发送
set smtp=smtp.163.com
set smtp-auth-user=*****@163.com  
set smtp-auth-password=****   # 不是邮箱密码,是授权码
set smtp-auth=login

测试 

[root@localhost ~]# echo "MySQL"|mail -s  mysql ****0@qq.com
            内容 | mail -s 标题 接收邮箱

 

shell脚本

#!/bin/bash
# 数据库登录
mysql="mysql -uroot -p1234"
while true
do
    # 检测关键字
    array=($($mysql -e "show slave statusG"|egrep '_Running:|Behind_Master|Last_SQL_Errno'|awk '{ print $NF }'))
        # 判断关键字
        if [ "${array[0]}" == "Yes" -a "${array[1]}" == "Yes" -a "${array[2]}" == "0" ]
        then
            # 运行正常的输出
            echo "MySQL 主从正常"
        else
            # 运行失败,发送报警信息
            echo "MySQL 主从服务 报错 管理员及时处理"|mail -s  mysql ******@qq.com
        break
    fi
    sleep 10
done

测试脚本运行效果

原文地址:https://www.cnblogs.com/sunjianlin/p/13133601.html