15. Обновление до числовых значений расширенного диапазона

Обзор

Начиная с версии Zabbix 5.0, числовой тип данных (с плавающей точкой) поддерживает точность приблизительно 15 цифр и диапазон приблизительно от -1.79E+308 до 1.79E+308. Старый числовой тип был отключён, но всё ещё поддерживался. Начиная с версии Zabbix 6.4, он был объявлен устаревшим, а начиная с версии Zabbix 7.0 он был полностью убран.

Если ваша инсталляция не была обновлена для использования числовых значений расширенного диапазона, в разделе ОтчётыИнформация о системе (ReportsSystem information) отображается следующее предупреждение: «Database history tables upgraded: No. Support for the old numeric type is deprecated. Please upgrade to numeric values of extended range».

При обновлении до версии Zabbix 7.0 следующие базы данных обновляются автоматически:

  • MySQL
  • PostgreSQL/TimescaleDB (без сжатия)
  • Oracle

Однако для Oracle, старых версий MySQL и больших инсталляций рекомендуется обновить тип данных вручную перед обновлением до версии Zabbix 7.0.

Инструкции смотрите в разделе MySQL, PostgreSQL/TimescaleDB (без сжатия), Oracle.

Если используется TimescaleDB со сжатием, базу данных необходимо обновить вручную перед обновлением до версии Zabbix 7.0. Инструкции смотрите в разделе TimescaleDB (со сжатием).

Начиная с версии Zabbix 7.0, ручное обновление таблиц для использования первичных ключей также обновляет таблицы для использования типов данных двойной точности. Инструкции по обновлению для использования первичных ключей смотрите в разделе Обновление базы данных для использования первичных ключей.

MySQL, PostgreSQL/TimescaleDB (без сжатия), Oracle

Патч обновления изменяет столбцы данных таблиц истории и динамики изменений, которые обычно содержат много данных; по этой причине обновление может занять некоторое время. Точная оценка не может быть предсказана и зависит от производительности сервера, конфигурации и версии системы управления базами данных. Поэтому рекомендуется сначала протестировать патч вне производственной среды. Например, с MySQL 8.0 и MariaDB 10.5 (конфигурация по умолчанию), известно, что патч выполняется мгновенно для больших таблиц из-за эффективного алгоритма и того факта, что ранее использовался тот же тип double, но с ограниченной точностью, что означает, что сами данные изменять не нужно.

Чтобы обновить MySQL, PostgreSQL/TimescaleDB (без сжатия) или Oracle перед обновлением до версии Zabbix 7.0:

1. Остановите Zabbix сервер.

2. Создайте резервную копию базы данных.

3. Запустите соответствующий патч (файл SQL) для вашей базы данных Zabbix 6.4:

Запускайте скрипты только для базы данных сервера. Прокси-сервер не получит выгоды от этого обновления.

  • /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

Если используются исходные коды, смотрите патч MySQL, PostgreSQL/TimescaleDB или Oracle для Zabbix 6.4 в GIT репозитории Zabbix.

4. Запустите Zabbix сервер.

5. Обновите или установите параметр $DB['DOUBLE_IEEE754'] в значение true в файле /ui/conf/zabbix.conf.php.

TimescaleDB (со сжатием)

Чтобы обновить TimescaleDB (со сжатием) перед обновлением до версии Zabbix 7.0:

1. Отключите сжатие TimescaleDB в веб-интерфейсе Zabbix.

2. Перезагрузите кэш конфигурации сервера Zabbix с помощью опций управления работой: zabbix_server -R config_cache_reload

3. Остановите Zabbix сервер.

4. Сделайте резервную копию базы данных.

5. Запустите соответствующий патч (файл SQL) для TimescaleDB:

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

Если вы используете исходные коды, смотрите патч PostgreSQL/TimescaleDB для Zabbix 6.4 в GIT репозитории Zabbix.

6. Запустите Zabbix сервер.

7. Обновите или установите параметр $DB['DOUBLE_IEEE754'] в значение true в файле /ui/conf/zabbix.conf.php.