扩展范围的数值升级15

概述

自 Zabbix 5.0 起,数值型(float)数据类型支持大约 15 位精度,范围从大约 -1.79E+308 到 1.79E+308。
旧的数值类型已被禁用但仍受支持。自 Zabbix 6.4 起,该类型被标记为弃用,并且从 Zabbix 7.0 开始,该类型已被完全移除。

如果您的安装尚未升级以使用扩展范围的数值类型,则在 报告System information 中会显示以下警告:
“数据库历史表已升级:否。旧数值类型的支持已被弃用。请升级为扩展范围的数值类型”。

在升级到 Zabbix 7.0 时,以下数据库将自动升级:

  • MySQL
  • PostgreSQL/TimescaleDB(无压缩)
  • Oracle

然而,对于 Oracle、较旧的 MySQL 版本以及大型安装,建议在升级到 Zabbix 7.0 之前手动升级数据类型。
具体操作说明,请参阅 MySQL, PostgreSQL/TimescaleDB(无压缩), Oracle

如果使用的是启用压缩的 TimescaleDB,则必须在升级到 Zabbix 7.0 之前手动升级数据库。
具体操作说明,请参阅 TimescaleDB(启用压缩)

自 Zabbix 7.0 起,手动将表升级为主键的同时也会将表升级为使用双精度数据类型。
有关升级为主键的操作说明,请参阅 Database upgrade to primary keys

MySQL、PostgreSQL/TimescaleDB(不带压缩)、Oracle

升级补丁会修改历史数据和趋势数据表的数据列,这些表通常包含大量数据;因此,升级可能需要一些时间才能完成。 确切的耗时无法预测,具体取决于服务器性能、数据库管理系统配置及其版本。 因此,建议首先在生产环境之外测试该补丁。 例如,在MySQL 8.0和mariadb 10.5(默认配置)环境下,由于采用了高效的算法,以及之前使用的是相同双精度浮点类型(只是精度受限),已知该补丁可以快速完成,这意味着数据本身无需修改。

在升级到Zabbix 7.0之前,请按照以下步骤升级MySQL、PostgreSQL/TimescaleDB(无压缩)或Oracle:

1. 停止 Zabbix server。

2. 备份数据库。

3. 对您的Zabbix 6.4数据库运行相应的补丁(SQL文件):

仅对服务器数据库运行这些脚本。proxy不会从此次升级中受益。

  • /usr/share/zabbix-sql-scripts/mysql/double.sql
  • /usr/share/zabbix-sql-scripts/postgresql/double.sql(适用于PostgreSQL/TimescaleDB)
  • /usr/share/zabbix-sql-scripts/oracle/double.sql

如果使用源码,请参阅Zabbix GIT仓库中Zabbix 6.4的补丁:MySQLPostgreSQL/TimescaleDBOracle

4. 启动 Zabbix server。

5. 在 /ui/conf/zabbix.conf.php 中更新或设置 $DB['DOUBLE_IEEE754'] 参数值为 true

TimescaleDB(带压缩功能)

升级 TimescaleDB(包含压缩功能)后再升级到 Zabbix 7.0:

1. 在 Zabbix 前端中禁用 timescaledb压缩

2. 使用 运行时控制 重新加载 Zabbix server configuration cache:zabbix_server -R config_cache_reload

3. 停止 Zabbix server。

4. 备份您的数据库。

5. 运行适用于 TimescaleDB 的适当补丁(SQL 文件):

  • /usr/share/zabbix-sql-scripts/postgresql/double.sql

如果使用源码,请参阅 Zabbix GIT 仓库中 Zabbix 6.4 的 PostgreSQL/TimescaleDB 补丁。

6. 启动 Zabbix server。

7. 在 /ui/conf/zabbix.conf.php 中更新或设置 $DB['DOUBLE_IEEE754'] 参数值为 true