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

it2022-05-05  134

实验环境

主机名(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上: //server2: //server3: //server4:

2.编辑数据库的配置文件 //server1: //server2 //server3: 3.开启server1,2,3数据库并且查看密码使用查看的密码登录数据库并且修改密码进行初始化 //server1: //server2: //server3: 4.安装基于gtid主从复制所需要的插件,并且开启主从

注:因为在进行MHA搭建每一个主机都有可能是主也有可能是从,所以都要安装主从设备的插件. //server1(主):

//server2(从): //server3(从): 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)

//server2从上查看: //server3从上查看 基于gtid主从复制部署成功

二.MHA高可用部署

1.官网下载MHA所需要的安装包 2.安装 3.因为MHA中的master于slave之间是通过ssh服务来进行保存二进制日志的所以要保证四台主机之间可以直接连接

在server4上生成钥匙和锁,并将钥匙发给server1,2,3 上述之是解决了server4能直接连接serve1-3但是serevr1,2,3之间是无法直接连接的,所以需要将公钥和私钥都发给server1,2,和3 则server1,2,3,4之间都可以直接相互连接

4.将server4上数据节点node的安装包分别发给server1,2,3 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

在server4上查看ssh的配置是否成功 查看mysql的复制情况 //需要在server2及其server3上设置只读 //因为在server1主上设置了本地用户登录,需要打主库上的用户的远程登录 检查主从复制主机情况: 则MHA高可用集群配置成功

7.MHA高可用配置测试

手动同步:

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

注:在server4上进行手动切换前必须先关掉server1上的mysql否则,手动切换不成功 //在server2上查看因为server2已成为主,所以不显示slave状态: //在server3上查看,主已经切换为server2(辅slave) //打开server1的mysqld,因为server1的服务再次开启默认已经为salve了,所以需要给其授予slave; 自动转换:

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。

b.手动关掉server2上的master //在server1上看不到slave,server1(主master,手动测试的时候关了)已为master //server3上查看: c.打开server2的mysqld需要手动添加slave并且打开slave

三.部署zabbix监控

实验环境

主机名(IP)服务server1(172.25.254.1)zabbix-agentserver2(172.25.254.2)zabbix-agentserver3(172.25.254.3)zabbix-agentserver4(172.25.254.4)zabbix-server

1.在官网下载zabbix的相应安装包 zabbix-server的配置:

1.在server4上安装zabbix-server 注意配置好网络yum源,因为还有相关的依赖性软件需要网络yum源安装 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数据库并且查看 d.编辑zabbix的配置文件,修改zabbix数据库的密码及其时区

[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

e.开启zabbix-server f.在浏览器页面输入http://172.25.254.4/zabbix进行zabbix监控配置的建立 也可以在登录后修改密码 修改语言: 因为是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主机有三种方式:

手动添加自动发现自动注册 本次选择手动添加: 操作如下: //创建主机 //创建模版 手动添加完成后上面的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可用 server2及其server3的主机添加同server1,主需要在添加主机时改成相应的主机的代理的IP,及其在编辑zabbix-agent的配置文件的时候将主机名改为对应的agent的主机的hostname:

所监控主机添加完成之后展示的效果如下:

四.使用zabbix监控Mysql

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

a.在配置–>主机–>点击zabbix server选择该主机 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;

在web界面查看图形 但是图形显示下方是乱码的所以可以进行如下操作来解决:

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

下载的字体如下:

[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 再次刷新页面发现字体不再是乱码 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

//复制percona的监控模版到被监控的服务器也就是server4上的zabbix-agent的相应目录下 //percona的脚本是由php编写的需要准备好php的运行环境,将zabbix的数据库和密码都写入php脚本中 文件编辑的内容如下: //测试percona的监控脚本并且过滤监控项 在web界面导入模版: 下载的petcona的模版如下: 在web界面 选择导入路径 点击下方的导入会显示导入成功 //pernoca模版的添加:

首先取消已经添加的mysql监控已经存在的模版 再次为zabbix server主机添加数据库的监控模版percona 会出现percona的模版点击选择即可 更新完成之后查看zabbix server的监控项,发现当导入了新的模版后监控项的数量变为接近300个,则percona模版导入成功 查监控图形项发现监控图形增多: 选择相应的选项即可查看图形:

最新回复(0)