15 Passage aux valeurs numériques de plage étendue

Aperçu

Depuis Zabbix 5.0, le type de données numérique (float) prend en charge une précision d'environ 15 chiffres et une plage allant d'environ -1.79E+308 à 1.79E+308. L'ancien type numérique était désactivé, mais restait pris en charge. À partir de Zabbix 6.4, il a été déprécié, et depuis Zabbix 7.0, il a été entièrement supprimé.

Si votre installation n'a pas été mise à niveau pour utiliser des valeurs numériques à plage étendue, l'avertissement suivant s'affiche dans ReportsSystem information : "Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to numeric values of extended range".

Lors de la mise à niveau vers Zabbix 7.0, les bases de données suivantes sont mises à niveau automatiquement :

  • MySQL
  • PostgreSQL/TimescaleDB (sans compression)
  • Oracle

Cependant, pour Oracle, les anciennes versions de MySQL et les grandes installations, il est recommandé de mettre à niveau manuellement le type de données avant de passer à Zabbix 7.0. Pour les instructions, voir MySQL, PostgreSQL/TimescaleDB (without compression), Oracle.

Si vous utilisez TimescaleDB avec compression, la base de données doit être mise à niveau manuellement avant de passer à Zabbix 7.0. Pour les instructions, voir TimescaleDB (with compression).

Depuis Zabbix 7.0, la mise à niveau manuelle des tables vers des clés primaires met également à niveau les tables pour utiliser des types de données en double précision. Pour les instructions sur la mise à niveau vers des clés primaires, voir Database upgrade to primary keys.

MySQL, PostgreSQL/TimescaleDB (sans compression), Oracle

Le correctif de mise à niveau modifie les colonnes de données des tables history et trends, qui contiennent généralement beaucoup de données ; pour cette raison, la mise à niveau peut prendre un certain temps. L’estimation exacte ne peut pas être prédite et dépend des performances du serveur, de la configuration et de la version du système de gestion de base de données. Il est donc recommandé de tester d’abord le correctif en dehors de l’environnement de production. Par exemple, avec MySQL 8.0 et MariaDB 10.5 (configuration par défaut), il est connu que le correctif s’exécute instantanément pour les grandes tables grâce à un algorithme efficace et au fait qu’auparavant le même type double était utilisé, mais avec une précision limitée, ce qui signifie que les données elles-mêmes n’ont pas besoin d’être modifiées.

Pour mettre à niveau MySQL, PostgreSQL/TimescaleDB (sans compression) ou Oracle avant la mise à niveau vers Zabbix 7.0 :

1. Arrêtez le serveur Zabbix.

2. Sauvegardez votre base de données.

3. Exécutez le correctif approprié (fichier SQL) pour votre base de données Zabbix 6.4 :

Exécutez les scripts uniquement pour la base de données du serveur. Le proxy ne bénéficiera pas de cette mise à niveau.

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

Si vous utilisez les sources, consultez le correctif MySQL, PostgreSQL/TimescaleDB, ou Oracle pour Zabbix 6.4 dans le dépôt GIT de Zabbix.

4. Démarrez le serveur Zabbix.

5. Mettez à jour ou définissez la valeur du paramètre $DB['DOUBLE_IEEE754'] sur true dans /ui/conf/zabbix.conf.php.

TimescaleDB (avec compression)

Pour mettre à niveau TimescaleDB (avec compression) avant de mettre à niveau vers Zabbix 7.0 :

1. Désactivez la compression TimescaleDB dans l'interface Zabbix.

2. Rechargez le cache de configuration du serveur Zabbix à l'aide du contrôle à l'exécution : zabbix_server -R config_cache_reload

3. Arrêtez le serveur Zabbix.

4. Sauvegardez votre base de données.

5. Exécutez le correctif approprié (fichier SQL) pour TimescaleDB :

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

Si vous utilisez les sources, consultez le correctif PostgreSQL/TimescaleDB pour Zabbix 6.4 dans le dépôt Zabbix GIT.

6. Démarrez le serveur Zabbix.

7. Mettez à jour ou définissez la valeur du paramètre $DB['DOUBLE_IEEE754'] sur true dans /ui/conf/zabbix.conf.php.