升级要求
PHP版本
PHP版本已从最低的5.4.0 升级到 7.2.0
数据库版本
如何升级PHP不再赘述,本环境为7.2版本。
ZABBIX备份
mkdir -p /home/backup/zabbix-backup
cp /etc/zabbix/zabbix_server.conf /home/backup/zabbix-backup
cp /etc/zabbix/zabbix_agentd.conf /home/backup/zabbix-backup
cp /etc/zabbix/web/zabbix.conf.php /home/backup/zabbix-backup
cp -R /usr/share/zabbix/ /home/backup/zabbix-backup
cp –R /usr/share/doc/zabbix-* /home/backup/zabbix-backup
数据库备份
mysql root@localhost:(none)> select count(8) tables,table_schema from information_schema.tables where table_schema = 'zabbix';
+--------+--------------+
| tables | table_schema |
+--------+--------------+
| 149 | zabbix |
+--------+--------------+
1 row in set
Time: 0.014s
mysqldump -uzabbix -pzabbix --opt --skip-lock-tables zabbix | gzip > /home/backup/zabbix_$(date +%Y%m%d_%H%M%S).sql.gz
[root@shvm01 doc]# ll /home/backup/
总用量 5120
-rw-r--r-- 1 root root 20 4月 23 10:48 zabbix_20200423_104832.sql.gz
-rw-r--r-- 1 root root 5233446 4月 23 10:48 zabbix_20200423_104849.sql.gz
drwxr-xr-x 3 root root 4096 4月 23 10:45 zabbix-backup
停止 zabbix-server zabbix-agent 服务
systemctl stop zabbix-server zabbix-agent
卸载旧版本服务
yum remove zabbix-web-* httpd
升级:
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm
yum clean all
yum update zabbix-server-mysql zabbix-agent
yum-config-manager --enable rhel-server-rhscl-7-rpms
编辑配置文件 /etc/yum.repos.d/zabbix.repo and enable zabbix-frontend repository.
[zabbix-frontend]
...
enabled=1
...
安装ZABBIX 前端包
yum install zabbix-web-mysql-scl zabbix-apache-conf-scl
为Zabbix前端配置PHP
编辑配置文件 /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf, uncomment and set the right timezone for you.
php_value[date.timezone] = Asia/Shanghai
启动Zabbix server和agent进程,并为它们设置开机自启:
systemctl restart zabbix-server zabbix-agent httpd rh-php72-php-fpm
systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm
附:
安装过程中有数据库报错:Index column size too large
根据报错提示可以看出是因为索引列太大导致。
【解决办法】:
根据报错提示,尝试解决:
先检查一下是不是数据库被限制了索引的大小
SHOW variables like 'innodb_large_prefix'
如果查询的值是OFF的话 执行下面命令
SET GLOBAL INNODB_LARGE_PREFIX = ON;
执行完了 之后 还得查看当前的innodb_file_format引擎格式类型是不是BARRACUDA
SHOW variables like 'innodb_file_format'
如果不是的话则需要修改 SET GLOBAL innodb_file_format = BARRACUDA;
但是再次执行上面的修改语句还是会报相同的错误。
查了下资料,发现需要更改表的结构:
alter table items row_format=dynamic;
alter table items row_format=compressed;
再次执行后,可以正常执行。