ubuntu16 升级zabbix3.4到zabbix4.0

1 停止zabbixserver

停止 Zabbix server 以确保没有新数据插入数据库。
# service zabbix-server stop

2 备份当前的数据库

这是非常重要的步骤。升级前请确保备份了数据库。如果升级失败(因磁盘空间不足、断电或其他意外导致的升级失败),备份的数据库将大有帮助。

mysqldump -uroot -p zabbix-ops > zabbix-ops.sql

3 备份配置文件、PHP 文件和 Zabbix 二进制文件

在升级前请确保备份了配置文件、PHP 文件和 Zabbix 二进制文件。

备份文件:
$ sudo mkdir -p /data/bk/zabbix/savebk/{etc_zabbix,etc_apache2,usr_share,usr_share_doc}
$ sudo cp -R /etc/zabbix /data/bk/zabbix/savebk/etc_zabbix
$ sudo cp -R /etc/apache2 /data/bk/zabbix/savebk/etc_apache2
$ sudo cp -R /usr/share/zabbix/ /data/bk/zabbix/savebk/usr_share
$ sudo cp -R /usr/share/doc/zabbix-* /data/bk/zabbix/savebk/usr_share_doc

4 升级Zabbix软件仓库配置包

sudo mv /etc/apt/sources.list.d/zabbix.list /tmp        --移走以前的源
$ wget https://repo.zabbix.com/zabbix/4.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_4.0-2+xenial_all.deb
$ sudo dpkg -i zabbix-release_4.0-2+xenial_all.deb
$ sudo apt-get update

5 升级Zabbix组件

$ sudo apt-get install --only-upgrade zabbix-server-mysql zabbix-frontend-php zabbix-agent          --这个是配置文件,存在版本差异,这里选择最新覆盖安装
......
Configuration file '/etc/zabbix/zabbix_server.conf'
 ==> Modified (by you or by a script) since installation.
 ==> Package distributor has shipped an updated version.
   What would you like to do about it ?  Your options are:
    Y or I  : install the package maintainer's version
    N or O  : keep your currently-installed version
      D     : show the differences between the versions
      Z     : start a shell to examine the situation
 The default action is to keep your current version.
*** zabbix_server.conf (Y/I/N/O/D/Z) [default=N] ? i
Installing new version of config file /etc/zabbix/zabbix_server.conf ...
Setting up zabbix-agent (1:4.0.7-1+xenial) ...
Y or I:表示更新到最新版本的配置;
N or O:表示保留原版本配置;
D:查看当前新版本配置与旧版本的差异;
Z:使用shell脚本检查环境。

如果选择N保留版本,那么不用修改配置,但是缺少某些配置项,可以通过选择D查看;
如果覆盖了最新版本的配置文件,然后需要逐一修改配置文件
比如:连接数据库的地址用户密码等
$ sudo service zabbix-server start
$ sudo service zabbix-agent start

6 遇到的问题

6.1 更改zabbix数据库mandatory

4306:20230224:140153.321 using configuration file: /etc/zabbix/zabbix_server.conf
  4306:20230224:140153.326 current database version (mandatory/optional): 04000000/03050001
  4306:20230224:140153.326 required mandatory version: 04000000
  4306:20230224:140153.326 optional patches were found
  4306:20230224:140153.326 starting automatic database upgrade

解决方式
 update dbversion set mandatory=04000000;

6.2 更改zabbix数据库字符集

a.首先修改数据库默认字符集及字符校验集
ALTER DATABASE `zabbix` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

b.然后修改表
#找出字符检验集不对的表,所以报错的表都会被找出来
SELECT CONCAT("ALTER TABLE ", TABLE_NAME," CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;") AS ExecuteTheString
 FROM information_schema.`COLUMNS`
 WHERE table_schema ="zabbix" AND COLLATION_NAME ="utf8_general_ci";

c.复制输出结果,并执行。例如以下两张表,一般会有很多。
ALTER TABLE acknowledges CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin; 
ALTER TABLE actions CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;

6.3 [Z3005] query failed: [1060] 问题解决

[Z3005] query failed: [1060] Duplicate column name 'name' [alter table `events` add `name` varchar(2048) default '' not null]

解决方法
alter table events drop column name;

  • 我的微信
  • 这是我的微信扫一扫
  • weinxin
  • 我的微信公众号
  • 我的微信公众号扫一扫
  • weinxin
avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: