Zabbix从v3.4到v5.0升级实战
新钛云服已为您服务1482天
本次升级大致分为以下5个步骤:
1、备份老版本zabbix数据。
2、老版本数据库导入新版本数据库中。
3、安装新版本zabbix,并指向新版本数据库。
4、调试新版本数据库监控项,触发器和报警。
5、关闭老版本zabbix网卡,新版本zabbix更改IP地址为老zabbix地址。
主机名 | IP地址 | 配置 | 用途 | 系统版本 |
Zabbix-Server | 192.168.116.120 | 4核、8G内存、50G硬盘 | 安装 zabbix server | Centos7 |
ZabbixDB-Master | 192.168.116.121 | 4核、8G内存、200G硬盘 | Zabbix数据库主库 | Centos7 |
ZabbixDB-Slave | 192.168.116.122 | 4核、8G内存、200G硬盘 | Zabbix数据库从库 | Centos7 |
Bash
mysqldump --single-transaction -u user -p zabbix > zabbix.sql
注意:
2、数据库软件安装
Bash
yum -y install mariadb mariadb-server
②启动数据库
Bash
systemctl start mariadb
③初始化数据库(可跳过)
Bash
mysql_secure_installation
设置密码:
其他配置:
初始化MariaDB完成,直接登录,成功。
• ZabbixDB-Master:创建Zabbix数据库并配置权限
注意:
在之前需要先查看一下原数据库所用字符集,比如说原字符集是:utf8utf8_general_ci,那我们新建数据库的时候最好也选这个格式,如果创建错了后面也能改。
Bash
MySQL > use zabbix;
MySQL [zabbix]> SELECT @@character_set_database, @@collation_database;
②在创建zabbix库和zabbix用户及添加授权
Bash
mysql -uroot -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> create user zabbix@localhost identified by 'zabbix';
mysql> grant all privileges on zabbix.* to zabbix@localhost;
#本地授权
Bash
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
Bash
mysql> quit;
• ZabbixDB-Slave:安装Mariadb
• 在ZabbixDB-Master上配置
①先停止数据库
Bash
systemctl stop mariadb
Bash
vim /etc/my.cnf
Bash
[mysqld]
#有的版本是加在[mysql]里面,加完使用show master status;有数值就可以了
log_bin=mysql-bin
server-id=121 #自定义数值,一般选IP最后一位
log-slave-updates=1 #这个参数一定要加上,否则不会给更新的记录些到二进制文件 里
expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改
③重启mysql创建用于从服务器复制的用户
Bash
systemctl restart mariadb
mysql>GRANT REPLICATION SLAVE ON *.* to 'root'@'%' identified by '123456';
mysql>flush privileges;
④使用从服务器登录测试,能正常登陆说明第三步没有问题
Bash
mysql -uroot -p -h192.168.117.121
Bash
mysql> show master status;
+------------------+----------+--------------+------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
+------------------+----------+--------------+------------------+
| mysql-bin.000001 | 516 | | |
+------------------+----------+--------------+------------------+
1 row in set (0.001 sec)
其中file、position字段需要记录下值,mysql-bin.000001 是用于主从复制的文件名,
516是日志文件内的最新位置,一会儿要写在备库中。
Bash
systemctl stop mariadb
②修改my.conf配置,添加配置内容
Bash
vim /etc/my.cnf
Bash
[mysqld]
server-id=122 #自定义数值
#read-only=on #开启只读模式
relay-log=relay-bin #开启日志
expire_logs_days=7 #自动清理 7 天前的log文件,可根据需要修改
Bash
systemctl restart mariadb
Bash
change master to master_host = '192.168.117.121',
master_user = 'root',
master_password = '123456',
master_log_file = 'mysql-bin.000001',
master_log_pos = 516;
#master_log_file是master记录的文件名, master_log_pos 记录的master最新位置。
⑤启动slave
Bash
slave start;
Bash
show slave status \G
Bash
MariaDB [(none)]> show slave status \G
*************************** 1. row ***************************
Slave_IO_State: Waiting for master to send event
Master_Host: 192.168.117.121
Master_User: root
Master_Port: 3306
Connect_Retry: 60
Master_Log_File: mysql-bin.000002
Read_Master_Log_Pos: 637
Relay_Log_File: relay-bin.000003
Relay_Log_Pos: 864
Relay_Master_Log_File: mysql-bin.000002
Slave_IO_Running: Yes
Slave_SQL_Running: Yes
Slave_IO_Running和Slave_SQL_Running都YES就可以了;
过程中遇到的问题都会贴在文章最下方。
4、在主库中导入数据
Bash
mysql -u root -p
mysql>use zabbix;
mysql>source /home/zabbix.sql;
以下操作仅在主库上进行。
Bash
MySQL [zabbix]> SELECT @@character_set_database, @@collation_database;
Bash
MySQL > use zabbix;
MySQL [zabbix]> alter database zabbix character set utf8 collate utf8_bin;
⑤下载官方修复脚本,修复已有数据表的字符集
打开下方链接:
点击script下载得到脚本utf8_convert.sql,并导入。
Bash
mysql -uzabbix -p zabbix < utf8_convert.sql
⑦更改表的字符集
Bash
SET @ZABBIX_DATABASE = '';#填入zabbix所在数据库的名字
set innodb_strict_mode = OFF; #如果你的数据库是mariadb需要执行这条命令
CALL zbx_convert_utf8();
set innodb_strict_mode = ON; #如果你的数据库是mariadb需要执行这条命令
drop procedure zbx_convert_utf8;
注意:
官网地址:
https://www.zabbix.com/cn/download?zabbix=5.0&os_distribution=centos&os_version=7&db=mysql&ws=nginx
由于官方的yum源比较慢,所以替换阿里云yum源,这里可以直接把下方的yum源贴进去。
Bash
#cat /etc/yum.repos.d/zabbix.repo
[zabbix]
name=Zabbix Official Repository - $basearch
#baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-frontend]
name=Zabbix Official Repository frontend - $basearch
#baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/frontend
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/frontend
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
[zabbix-debuginfo]
name=Zabbix Official Repository debuginfo - $basearch
#baseurl=http://repo.zabbix.com/zabbix/5.0/rhel/7/$basearch/debuginfo/
baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/7/$basearch/debuginfo/
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX-A14FE591
gpgcheck=1
[zabbix-non-supported]
name=Zabbix Official Repository non-supported - $basearch
#baseurl=http://repo.zabbix.com/non-supported/rhel/7/$basearch/
baseurl=https://mirrors.aliyun.com/zabbix/non-supported/rhel/7/$basearch/
enabled=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-ZABBIX
gpgcheck=1
• 安装zabbix server 5.0和agent
Bash
yum clean all
yum install zabbix-server-mysql zabbix-agent
yum install centos-release-scl
Bash
vim /etc/yum.repos.d/zabbix.repo
[zabbix-frontend]
...
enabled=1 #找到这一行把0改成1
...
• 安装zabbix web端
Bash
yum install zabbix-web-mysql-scl zabbix-nginx-conf-scl
• 修改zabbix配置文件
Bash
vim /etc/zabbix/zabbix_server.conf
DBHost=192.168.116.121
DBName=zabbix
DBUser=zabbix
DBPassword=zabbix
Bash
vim /etc/opt/rh/rh-nginx116/nginx/conf.d/zabbix.conf
listen 8080;
• 编辑PHP配置文件,授权nginx和修改时区
Bash
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
listen.acl_users = apache,nginx
php_value[date.timezone] = Asia/Shanghai
• 启动Zabbix Server V5.0 服务
Bash
systemctl restart zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent rh-nginx116-nginx rh-php72-php-fpm
访问地址:http://192.168.116.120:8080
输入原Zabbix Server v3.4的用户名Admin,密码Zabbix
注意:
访问这个网页还会让你输入数据库和主机名,输入完成后就可以了,如果遇到问题可以在文章最下方找解决方法哦
• 更换IP让Zabbix Server V5.0 接替Zabbix Server V3.4
第一步,停止Zabbix Server V3.4 服务,并关机
第二步,新zabbix服务器IP修改为原zabbix服务器IP,重启服务器,
第三步,观察新的Zabbix 服务器上是否有Agent连接上来的日志,有的话,证明切换完成;
1、数据库安装启动报错
Bash
220401 19:41:20 InnoDB: remove old data files which contain your precious data!
220401 19:41:20 [ERROR] Plugin 'InnoDB' init function returned error.
220401 19:41:20 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed.
220401 19:41:20 [Note] Plugin 'FEEDBACK' is disabled.
220401 19:41:20 [ERROR] Unknown/unsupported storage engine: InnoDB
220401 19:41:20 [ERROR] Aborting
解决办法:
报错信息:
Bash
Slave_SQL_Running:no:
解决办法:
Bash
MariaDB [(none)]> stop slave;
MariaDB [(none)]> SET GLOBAL SQL_SLAVE_SKIP_COUNTER=1; START SLAVE;
MariaDB [(none)]> start slave;
MariaDB [(none)]> show slave status\G
报错信息:
Bash
slave_io_running:no
①查看主服务器:
用show master命令查看当前的同步日志文件:
Bash
MariaDB [(none)]> show master status;
②在从服务器上查看:
Bash
MariaDB [(none)]> show slave status\G
Bash
MariaDB [(none)]> slave stop; #停止slave
MariaDB [(none)]>CHANGE MASTER TO MASTER_LOG_FILE='mysql-bin.000026', MASTER_LOG_POS=0; #重新指定最新的同步文件和位置
MariaDB [(none)]> slave start; #启动slave
MariaDB [(none)]> show slave status\G
Bash
1、Time zone for PHP is not set (configuration parameter "date.timezone").
解决办法:
Bash
vim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf
;php_value[date.timezone] = Asia/Shanghai
取消前面的分号。
报错信息:
Bash
nginx启动失败,先检查端口是否被占用
解决办法:
Bash
zabbix server is not running:the information displayed may not be current
修改/etc/zabbix/web/zabbix.conf.php这个文件修改里面的服务器IP地址:
Bash
$ZBX_SERVER = '192.168.116.120';
解决办法2:
编辑zabbix.conf配置文件:
Bash
CacheSize=2G
了解新钛云服
新钛云服荣膺第四届FMCG零售消费品行业CIO年会「年度数字化服务最值得信赖品牌奖」
新钛云服三周岁,公司月营收超600万元,定下百年新钛的发展目标
当IPFS遇见云服务|新钛云服与冰河分布式实验室达成战略协议
新钛云服正式获批工信部ISP/IDC(含互联网资源协作)牌照
新钛云服,打造最专业的Cloud MSP+,做企业业务和云之间的桥梁
往期技术干货
刚刚,OpenStack 第 19 个版本来了,附28项特性详细解读!
OpenStack与ZStack深度对比:架构、部署、计算存储与网络、运维监控等
点👇分享
戳👇在看
微信扫码关注该文公众号作者