实验环境
主机名(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 |
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主从复制部署成功
1.官网下载MHA所需要的安装包
2.安装
3.因为MHA中的master于slave之间是通过ssh服务来进行保存二进制日志的所以要保证四台主机之间可以直接连接
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
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
实验环境
主机名(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的相应安装包
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主机有三种方式:
[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:
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界面查看添加了数据库之后的监控图像:
[root@server4 zabbix]# mysql -p
Enter password:
MariaDB [(none)]> show databases;
MariaDB [(none)]> use zabbix;
MariaDB [zabbix]> show tables;
MariaDB [zabbix]> select * from users;
下载字体并且将其复制到/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
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模版的添加: