При обновлении Zabbix можно встретить такую ошибку [Z3005] query failed: [1118] Row size too large. Она возникает в процессе обновления базы данных. Расскажем, как это исправить.
Для начала вот пример ошибки из лога:
[Z3005] query failed: [1118] Row size too large. The maximum row size for the used table type, not counting BLOBs, is 8126. This includes storage overhead, check the manual. You have to change some columns to TEXT or BLOBs ...
Если Вы тоже получили такое сообщение при обновлении Zabbix, попробуйте отключить режим innodb strict в MySQL..
a) Отключаем innodb strict режим:
# mysql -uroot -p zabbix -e "set global innodb_strict_mode='OFF';"
После ввода команды введите пароль пользователя root от MySQL.
b) Перезапустите службу Zabbix срвера:
# systemctl restart zabbix-server
Проверьте что база Zabbix успешно обновилась в журнале событий
саt /var/log/zabbix-server/zabbix_server.log | grep database
Путь к файлу лога Zabbix сервера может отличаться в зависимости от дистрибутива Linux.
Если обновление произошло, то идем дальше.
c) Включаем innodb strick режим обратно:
mysql -uroot -p zabbix -e "set global innodb_strict_mode='ON';"
После ввода команды введите пароль пользователя root от MySQL.
Такая же проблема может возникнуть и со службой zabbix-proxy. Решение аналогичное.
Альтернативные решения
Еще проблема может быть связана с неправильной кодировкой базы данных (должна быть utf8 + utf8_bin). Как проверить и исправить?
1. Сделайте бэкап БД!
2. Провертьте текущую кодировку
SELECT @@character_set_database, @@collation_database;
3. Сконвертируйте в нужную, если отличается
alter database zabbix character set utf8 collate utf8_bin;
4. Обновите Zabbix сервер.
Спасибо!!! Ошибку у себя на сервере исправил. Мои версии пакетов: Zabbix-server-mysql-6.0.21-1+debian11 Mariadb-10.5.19-0+deb11u2