15 Aktualizacja do wartości numerycznych o rozszerzonym zakresie

Przegląd

Od Zabbix 5.0 typ danych numerycznych (float) obsługuje precyzję około 15 cyfr oraz zakres od około -1.79E+308 do 1.79E+308. Stary typ numeryczny był wyłączony, ale nadal obsługiwany. Od Zabbix 6.4 był przestarzały, a począwszy od Zabbix 7.0 został całkowicie usunięty.

Jeśli w Twojej instalacji nie przeprowadzono aktualizacji do używania wartości numerycznych o rozszerzonym zakresie, w sekcji ReportsSystem information wyświetlane jest następujące ostrzeżenie: "Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to numeric values of extended range".

Podczas aktualizacji do Zabbix 7.0 następujące bazy danych są aktualizowane automatycznie:

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

Jednak w przypadku Oracle, starszych wersji MySQL oraz dużych instalacji zaleca się ręczną aktualizację typu danych przed uaktualnieniem do Zabbix 7.0. Instrukcje znajdują się w sekcji MySQL, PostgreSQL/TimescaleDB (without compression), Oracle.

W przypadku używania TimescaleDB z kompresją baza danych musi zostać zaktualizowana ręcznie przed uaktualnieniem do Zabbix 7.0. Instrukcje znajdują się w sekcji TimescaleDB (with compression).

Od Zabbix 7.0 ręczna aktualizacja tabel do kluczy głównych powoduje również aktualizację tabel do używania typów danych double precision. Instrukcje dotyczące aktualizacji do kluczy głównych znajdują się w sekcji Database upgrade to primary keys.

MySQL, PostgreSQL/TimescaleDB (bez kompresji), Oracle

Aktualizacja zmienia kolumny danych w tabelach history i trends, które zwykle zawierają dużo danych; z tego powodu ukończenie aktualizacji może zająć trochę czasu. Dokładny czas nie może zostać przewidziany i zależy od wydajności serwera, konfiguracji i wersji systemu zarządzania bazą danych. Dlatego zaleca się najpierw przetestować poprawkę poza środowiskiem produkcyjnym. Na przykład w przypadku MySQL 8.0 i MariaDB 10.5 (domyślna konfiguracja) wiadomo, że poprawka jest wykonywana natychmiast dla dużych tabel dzięki wydajnemu algorytmowi oraz temu, że wcześniej używany był ten sam typ double, ale o ograniczonej precyzji, co oznacza, że same dane nie muszą być modyfikowane.

Aby zaktualizować MySQL, PostgreSQL/TimescaleDB (bez kompresji) lub Oracle przed aktualizacją do Zabbix 7.0:

1. Zatrzymaj serwer Zabbix.

2. Wykonaj kopię zapasową bazy danych.

3. Uruchom odpowiednią poprawkę (plik SQL) dla bazy danych Zabbix 6.4:

Uruchamiaj skrypty tylko dla bazy danych serwera. proxy nie skorzysta z tej aktualizacji.

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

Jeśli używasz źródeł, zobacz poprawkę MySQL, PostgreSQL/TimescaleDB lub Oracle dla Zabbix 6.4 w repozytorium Zabbix GIT.

4. Uruchom serwer Zabbix.

5. Zaktualizuj lub ustaw wartość parametru $DB['DOUBLE_IEEE754'] na true w /ui/conf/zabbix.conf.php.

TimescaleDB (z kompresją)

Aby zaktualizować TimescaleDB (z kompresją) przed uaktualnieniem do Zabbix 7.0:

1. Wyłącz kompresję TimescaleDB w frontendzie Zabbix.

2. Przeładuj pamięć podręczną konfiguracji serwera Zabbix za pomocą runtime control: zabbix_server -R config_cache_reload

3. Zatrzymaj serwer Zabbix.

4. Wykonaj kopię zapasową bazy danych.

5. Uruchom odpowiednią poprawkę (plik SQL) dla TimescaleDB:

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

Jeśli korzystasz z kodu źródłowego, zobacz poprawkę PostgreSQL/TimescaleDB dla Zabbix 6.4 w repozytorium Zabbix GIT.

6. Uruchom serwer Zabbix.

7. Zaktualizuj lub ustaw wartość parametru $DB['DOUBLE_IEEE754'] na true w /ui/conf/zabbix.conf.php.