自 Zabbix 5.0 起,数值型(float)数据类型支持大约 15 位精度,范围从大约 -1.79E+308 到 1.79E+308。
旧的数值类型已被禁用但仍受支持。自 Zabbix 6.4 起,该类型被标记为弃用,并且从 Zabbix 7.0 开始,该类型已被完全移除。
如果您的安装尚未升级以使用扩展范围的数值类型,则在 报告 → System information 中会显示以下警告:
“数据库历史表已升级:否。旧数值类型的支持已被弃用。请升级为扩展范围的数值类型”。
在升级到 Zabbix 7.0 时,以下数据库将自动升级:
然而,对于 Oracle、较旧的 MySQL 版本以及大型安装,建议在升级到 Zabbix 7.0 之前手动升级数据类型。
具体操作说明,请参阅 MySQL, PostgreSQL/TimescaleDB(无压缩), Oracle。
如果使用的是启用压缩的 TimescaleDB,则必须在升级到 Zabbix 7.0 之前手动升级数据库。
具体操作说明,请参阅 TimescaleDB(启用压缩)。
自 Zabbix 7.0 起,手动将表升级为主键的同时也会将表升级为使用双精度数据类型。
有关升级为主键的操作说明,请参阅 Database upgrade to primary keys。
升级补丁会修改历史数据和趋势数据表的数据列,这些表通常包含大量数据;因此,升级可能需要一些时间才能完成。 确切的耗时无法预测,具体取决于服务器性能、数据库管理系统配置及其版本。 因此,建议首先在生产环境之外测试该补丁。 例如,在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的补丁:MySQL、PostgreSQL/TimescaleDB 或 Oracle。
4. 启动 Zabbix server。
5. 在 /ui/conf/zabbix.conf.php
中更新或设置 $DB['DOUBLE_IEEE754']
参数值为 true
。
升级 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
。