mysql主从配置参考 mysql主从
安装zabbix监控mysql主从
实验环境
角色 | 服务 | ip |
---|---|---|
zabbix server | mysql主+zabbix+lamp | 192.168.118.112 |
zabbix agent | zabbix agent+mysql从 | 192.168.118.222 |
关闭防火墙和selinux
安装zabbix,zabbix是基于lamp环境下的,先搭建lamp架构
yum -y install httpd
yum -y install php php-mysql
#激活服务
systemctl start httpd
#创建php测试页
vim /var/www/html/test.php
<?php
phpinfo();
?>
访问测试页面
安装zabbix
#安装zabbix仓库
rpm -vhi http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
安装zabbix-server和web以及mysql的依赖
包
yum install -y zabbix-server-mysql zabbix-web-mysql
创建zabbix数据库和用户
create database zabbix character set utf8;
grant all on zabbix.* to zabbix@'192.168.118.222' identified by ' 123456';
flush privileges;
#导入默认zabbix数据库信息
[root@server zabbix-server-mysql-3.4.14]# pwd
/usr/share/doc/zabbix-server-mysql-3.4.14
[root@server zabbix-server-mysql-3.4.14]# zcat create.sql.gz | mysql zabbix -uzabbix -p123567
修改zabbix配置文件vim /etc/zabbix/zabbix_server.conf
# Mandatory: no
# Range: 1024-32767
# Default:
ListenPort=10051 #取消注释
# Mandatory: no
# Default:
DBHost=192.168.118.112 #改为本机服务器ip
# DBName=
DBName=zabbix #用户名
### Option: DBSchema
# DBUser=
DBUser=zabbix #用户
### Option: DBPassword
# Default:
DBPassword=123456 #登录密码
### Option: DBSocket
#启动zabbix
systemctl start zabbix-server
修改httpd配置文件
vim /etc/httpd/conf.d/zabbix.conf
<IfModule mod_php5.c>
php_value max_execution_time 300
php_value memory_limit 128M
php_value post_max_size 16M
php_value upload_max_filesize 2M
php_value max_input_time 300
php_value max_input_vars 10000
php_value date.timezone Asia/Shanghai
php_value always_populate_raw_post_data -1
# php_value date.timezone Europe/Riga
</IfModule>
#重启httd服务
systemctl restart httpd
网页安装测试
客户端安装(192.168.118.222)
#安装zabbix仓库
rpm -vhi http://repo.zabbix.com/zabbix/3.0/rhel/7/x86_64/zabbix-release-3.0-1.el7.noarch.rpm
#安装客户端
yum -y install zabbix-agent
#编辑客户端文件
[root@client ~]# vim /etc/zabbix/zabbix_agentd.conf
Hostname=Zabbix client #主机名
# Default:
# Server=
Server=192.168.118.112 #服务端ip
# ServerActive=
ServerActive=192.168.118.112 #服务端ip
### Option: Hostname
# Default:
ListenPort=10050 #取消端口注释
### Option: ListenIP
#启动客户端服务
systemctl start zabbix-agent
[root@client ~]# ss -antl
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 *:10050 *:*
LISTEN 0 50 *:3306 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 ::1:25 :::*
LISTEN 0 128 :::10050 :::*
LISTEN 0 32 :::21 :::*
LISTEN 0 128 :::22
创建监控mysql的账号
[root@client ~]# mysql -uroot -p123
MariaDB [(none)]> grant all on *.* to zabbix@'192.168.118.112' identified by '123456';
Query OK, 0 rows affected (0.00 sec)
MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0.00 sec)
写一个监控脚本
先用zabbix这个用户来获取slave的所有状态,然后grep出这两个状态,然后再输出第二列,最后查看有几个Yes状态的,正常情况下有两个Yes状态。(操作的数据出现异常的时候,Slave_SQL_Running就会变成No,当执行slave stop的时候,两个都会变成No;)
[root@localhost ~]# vim ck_mysql_backup.sh
mysql -uzabbix -p123456 -h 192.168.118.222 -e 'show slave status\G' |grep -E "Slave_IO_Running|Slave_SQL_Running"|awk '{print $2}'|grep -c Yes
授予脚本执行权限
[root@localhost ~]# chmod 777 ck_mysql_backup.sh
[root@localhost ~]# chown -R zabbix.zabbix ck_mysql_backup.sh
#状态
-rwxrwxrwx 1 zabbix zabbix 144 9月 1 12:38 ck_mysql_backup.sh
执行脚本,若输出为2则证明主从复制没有问题
[root@localhost ~]# sh -x ck_mysql_backup.sh
+ grep -E 'Slave_IO_Running|Slave_SQL_Running'
+ grep -c Yes
+ mysql -uzabbix -p123456 -h 192.168.118.222 -e 'show slave status\G'
+ awk '{print $2}'
2
#说明主备没有问题
在zabbix agent里面添加监控项
[root@localhost ~]# vim /etc/zabbix/zabbix_agentd.conf
#最后一行添加
UserParameter=mysql.all,/root/ck_mysql_backup.sh
#等号后面的字符串中,逗号前面是Key,后面是执行的脚本
server端添加监控项
[root@server ~]# zabbix_get -s 192.168.118.222 -k "mysql.all"
2
#主从复制正常
web页面配置
新建主机群组 配置-主机群组-新建群组
建msql群组
新建主机
添加监控项
创建触发器
查看触发器状态
查看最新数据,脚本执行的值是否正常
模拟故障,验证监控(zabbix agent)
MariaDB [(none)]> stop slave;
Query OK, 0 rows affected (0.00 sec)
开启然后验证
MariaDB [(none)]> start slave;
Query OK, 0 rows affected (0.00 sec)