Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控

实验环境

主机名(IP) 服务
server1(172.25.254.1) mysqld(master)
server2(172.25.254.2) mysqld(slave)
server3(172.25.254.3) mysqld(slave)
server4(172.25.254.4) MHA

一.基于gtid的数据库的主从复制

1.在官网下载Mysql5.7的相应的安装包并在server1-4上进行数据库的安装
//在server1上:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第1张图片
//server2:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第2张图片
//server3:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第3张图片
//server4:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第4张图片

2.编辑数据库的配置文件
在这里插入图片描述
//server1:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第5张图片
//server2
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第6张图片
//server3:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第7张图片
3.开启server1,2,3数据库并且查看密码使用查看的密码登录数据库并且修改密码进行初始化
//server1:
在这里插入图片描述
在这里插入图片描述
//server2:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第8张图片
//server3:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第9张图片
4.安装基于gtid主从复制所需要的插件,并且开启主从

注:因为在进行MHA搭建每一个主机都有可能是主也有可能是从,所以都要安装主从设备的插件.
//server1(主):
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第10张图片Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第11张图片

//server2(从):
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第12张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第13张图片
//server3(从):
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第14张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第15张图片
5.测试
server1:(写入数据)

mysql> create database westos;
mysql> use westos;
Database changed
mysql> create table userlist(
    -> username varchar(10) not null,
    -> password varchar(15) not null);
mysql> insert into userlist values('user1','123');
Query OK, 1 row affected (0.14 sec)

mysql> insert into userlist values('user2','123');
Query OK, 1 row affected (0.10 sec)

Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第16张图片
//server2从上查看:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第17张图片
//server3从上查看
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第18张图片
基于gtid主从复制部署成功

二.MHA高可用部署

1.官网下载MHA所需要的安装包
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第19张图片
2.安装
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第20张图片
3.因为MHA中的master于slave之间是通过ssh服务来进行保存二进制日志的所以要保证四台主机之间可以直接连接

  • 在server4上生成钥匙和锁,并将钥匙发给server1,2,3
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第21张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第22张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第23张图片
  • 上述之是解决了server4能直接连接serve1-3但是serevr1,2,3之间是无法直接连接的,所以需要将公钥和私钥都发给server1,2,和3
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第24张图片
    则server1,2,3,4之间都可以直接相互连接

4.将server4上数据节点node的安装包分别发给server1,2,3
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第25张图片
5.在server1,2,3上分别安装节点node的包

[root@server1 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y
[root@server2 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y
[root@server3 ~]# yum install mha4mysql-node-0.58-0.el7.centos.noarch.rpm -y

6.在server4上编写高可用的配置文件

  • 创建高可用配置文件的目录
[root@server4 ~]# mkdir -p  /etc/masterha
  • 编辑高可用配置文件
[root@server4 ~]# vim /etc/masterha/app1.cnf
文件编辑内容及解释如下:
[server default]
manager_workdir=/etc/masterha //设置manager的工作目录
manager_log=/var/log/masterha.log  //设置manager的日志
master_binlog_dir=/etc/masterha 设置master 保存binlog的位置,以便MHA可以找到master的日志
password=Zhulili+123  //设置mysql中root用户的密码,这个密码是前文中创建监控用户的那个密
user=root  //设置监控用户root
ping_interval=1  //设置监控主库,发送ping包的时间间隔,默认是3秒,尝试三次没有回应的时候自动进行failover
remote_workdir=/tmp  //设置远端mysql在发生切换时binlog的保存位置
repl_password=Zhulili+123  //设置复制用户的密码
repl_user=repl  //设置复制环境中的复制用户名
ssh_user=root  //设置ssh的登录用户名

[server1]
hostname=172.25.254.1
port=3306

[server2]
hostname=172.25.254.2
port=3306
candidate_master=1   //设置为候选master,如果设置该参数以后,发生主从切换以后将会将此从库提升为主库,即使这个主库不是集群中事件最新的slave  
check_repl_delay=0   //默认情况下如果一个slave落后master 100M的relay logs的话,MHA将不会选择该slave作为一个新的master,因为对于这个slave的恢复需要花费很长时间,通过设置check_repl_delay=0,MHA触发切换在选择一个新的master的时候将会忽略复制延时,这个参数对于设置了candidate_master=1的主机非常有用,因为这个候选主在切换的过程中一定是新的master

[server3]
hostname=172.25.254.3
port=3306
no_master=1   //设置server3不能成为master    

Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第26张图片

  • 在server4上查看ssh的配置是否成功
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第27张图片
  • 查看mysql的复制情况
    //需要在server2及其server3上设置只读
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第28张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第29张图片
    //因为在server1主上设置了本地用户登录,需要打主库上的用户的远程登录
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第30张图片
    检查主从复制主机情况:
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第31张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第32张图片
    则MHA高可用集群配置成功

7.MHA高可用配置测试

手动同步:

a.关闭server1即master然后在server4上将手动将master转到server2上

注:在server4上进行手动切换前必须先关掉server1上的mysql否则,手动切换不成功
在这里插入图片描述
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第33张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第34张图片
//在server2上查看因为server2已成为主,所以不显示slave状态:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第35张图片
//在server3上查看,主已经切换为server2(辅slave)
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第36张图片
//打开server1的mysqld,因为server1的服务再次开启默认已经为salve了,所以需要给其授予slave;
在这里插入图片描述
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第37张图片
自动转换:

a.server4上开启mha

启动参数介绍

  • –remove_dead_master_conf 该参数代表当发生主从切换后,老的主库的ip将会从配置文件中移除。
  • –ignore_last_failover 在缺省情况下,如果MHA检测到连续发生宕机,且两次宕机间隔不足8小时的话,则不会进行Failover,之所以这样限制是为了避免ping-pong效应。该参数代表忽略上次MHA触发切换产生的文件,默认情况下,MHA发生切换后会在日志目录,也就是上面我设置的/data产生app1.failover.complete文件,下次再次切换的时候如果发现该目录下存在该文件将不允许触发切换,除非在第一次切换后收到删除该文件,为了方便,这里设置为–ignore_last_failover。

在这里插入图片描述
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第38张图片
b.手动关掉server2上的master
在这里插入图片描述
//在server1上看不到slave,server1(主master,手动测试的时候关了)已为master
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第39张图片
//server3上查看:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第40张图片
c.打开server2的mysqld需要手动添加slave并且打开slave
在这里插入图片描述
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第41张图片

三.部署zabbix监控

实验环境

主机名(IP) 服务
server1(172.25.254.1) zabbix-agent
server2(172.25.254.2) zabbix-agent
server3(172.25.254.3) zabbix-agent
server4(172.25.254.4) zabbix-server

1.在官网下载zabbix的相应安装包
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第42张图片
zabbix-server的配置:

1.在server4上安装zabbix-server
注意配置好网络yum源,因为还有相关的依赖性软件需要网络yum源安装
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第43张图片
2.在server4上安装mariadb数据库及其相应的配置

a.安装数据库并且进行安全初始化

[root@server4 4.0]# yum install -y mariadb-server
[root@server4 4.0]# systemctl start mariadb
[root@server4 4.0]# mysql_secure_installation  //安全初始化
Set root password? [Y/n]y
New password: 
Re-enter new password:   //输入root超户密码
其余都为yes默认回车即可

b.进入数据库使用utf8编码建立zabbix的库并且授权zabbix用户

MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;
MariaDB [(none)]> grant all privileges on zabbix.* to zabbix@localhost identified by 'redhat';

在这里插入图片描述
c.导入zabbix数据库并且查看
在这里插入图片描述
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第44张图片
d.编辑zabbix的配置文件,修改zabbix数据库的密码及其时区
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第45张图片

[root@server4 zabbix]# cd /etc/httpd/conf.d/
[root@server4 conf.d]# ls
autoindex.conf  php.conf  README  userdir.conf  welcome.conf  zabbix.conf
[root@server4 conf.d]# vim zabbix.conf 

Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第46张图片
e.开启zabbix-server
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第47张图片
f.在浏览器页面输入http://172.25.254.4/zabbix进行zabbix监控配置的建立
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第48张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第49张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第50张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第51张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第52张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第53张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第54张图片
也可以在登录后修改密码
修改语言:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第55张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第56张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第57张图片
因为是zabbix-server还没有连接zabbix-agent

zabbix-agent主机的添加:

1.官网下载angent的安装包并且在server1,server2,server3上安装zabbix-agent

[root@server1 ~]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm 
[root@server2 ~]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm
[root@server3 ~]# rpm -ivh zabbix-agent-4.0.5-1.el7.x86_64.rpm

在web界面添加zabbix主机有三种方式:

  • 手动添加
  • 自动发现
  • 自动注册
    本次选择手动添加:
    操作如下:
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第58张图片
    //创建主机
    在这里插入图片描述
    //创建模版
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第59张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第60张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第61张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第62张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第63张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第64张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第65张图片
    手动添加完成后上面的zbx为灰色,还为启用,需要在server2上配置agent并且开启zabbix-agent服务
[root@server1 ~]# vim /etc/zabbix/zabbix_agentd.conf
文件需要修改的内容如下:
98 Server=172.25.254.4
139 ServerActive=172.25.254.4
150 Hostname=server1 
开启agent服务
[root@server1 ~]# systemctl start zabbix-agent

再次刷新页面,显示server1可用
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第66张图片
server2及其server3的主机添加同server1,主需要在添加主机时改成相应的主机的代理的IP,及其在编辑zabbix-agent的配置文件的时候将主机名改为对应的agent的主机的hostname:

所监控主机添加完成之后展示的效果如下:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第67张图片

四.使用zabbix监控Mysql

1.给zabbix-server添加自带的mysql的监控项

a.在配置–>主机–>点击zabbix server选择该主机
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第68张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第69张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第70张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第71张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第72张图片
b.zabbix-server上的mysql的配置

[root@server4 zabbix]# mysqladmin -uzabbix -predhat -h 127.0.0.1 ping | grep -c alive  //查看zabbix server上的mysql服务
1(代表正常)
[root@server4 fonts]# mkdir /var/lib/zabbix
[root@server4 fonts]# cd /var/lib/zabbix/
[root@server4 zabbix]# vim .my.cnf  //为了保证数据库配置的安全性建议将该文件设置为隐藏文件
文件的编辑内容如下:
[mysql]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql/mysql.sock


[mysqladmin]
host=localhost
user=root
password=redhat
socket=/var/lib/mysql/mysql.sock

[root@server4 zabbix]# systemctl restart zabbix-agent
[root@server4 zabbix]# systemctl restart zabbix-server

在web界面查看添加了数据库之后的监控图像:

  • 在zabbix server上查看数据库产生相应的访问信息
[root@server4 zabbix]# mysql -p
Enter password: 
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
MariaDB [zabbix]> select * from users;

Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第73张图片

  • 在web界面查看图形
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第74张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第75张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第76张图片
    但是图形显示下方是乱码的所以可以进行如下操作来解决:

  • 下载字体并且将其复制到/usr/share/zabbix/fonts目录下,代替原有的系统默认的图形文件defines.inc.php的字体

下载的字体如下:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第77张图片

[root@server4 4.0]# cd /usr/share/zabbix/fonts/
[root@server4 fonts]# ls
graphfont.ttf  simkai.ttf

[root@server4 fonts]# cd /usr/share/zabbix/include/
[root@server4 include]# vim defines.inc.php
替换文件中的graphfont为simkai,及使用自己下载的字体,即在下方输入:
:%s/graphfont/simkai/g
  • 再次刷新页面发现字体不再是乱码
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第78张图片
    2.导入自己的mysql服务的监控模版

server4(zabbix-server):

向zabbix监控中导入监控mysql的模版percona
percona是开源的mysql分析工具

a.在zabbix server及server4上安装percona-zabbix模版
//官网下载安装包进行安装

[root@server4 ~]# ls
4.0  anaconda-ks.cfg  percona-zabbix-templates-1.1.8-1.noarch.rpm(percona安装包)
[root@server4 ~]# rpm -ivh percona-zabbix-templates-1.1.8-1.noarch.rpm 

Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第79张图片
//复制percona的监控模版到被监控的服务器也就是server4上的zabbix-agent的相应目录下
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第80张图片
//percona的脚本是由php编写的需要准备好php的运行环境,将zabbix的数据库和密码都写入php脚本中
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第81张图片
文件编辑的内容如下:
在这里插入图片描述
在这里插入图片描述
//测试percona的监控脚本并且过滤监控项
在这里插入图片描述
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第82张图片
在web界面导入模版:
下载的petcona的模版如下:
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第83张图片
在web界面
在这里插入图片描述
选择导入路径
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第84张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第85张图片
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第86张图片
点击下方的导入会显示导入成功
Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第87张图片
//pernoca模版的添加:

  • 首先取消已经添加的mysql监控已经存在的模版
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第88张图片
  • 再次为zabbix server主机添加数据库的监控模版percona
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第89张图片
    会出现percona的模版点击选择即可
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第90张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第91张图片
    更新完成之后查看zabbix server的监控项,发现当导入了新的模版后监控项的数量变为接近300个,则percona模版导入成功
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第92张图片
    查监控图形项发现监控图形增多:
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第93张图片
    选择相应的选项即可查看图形:
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第94张图片
    Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控_第95张图片

你可能感兴趣的:(Mysql主从数据库的搭建并实现MHA高可用,并通过zabbix对其监控)