Ad Widget

Collapse

Миграция базы данных Zabbix посредством pg_dump на новую ноду

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Giflop
    Member
    • Aug 2019
    • 34

    #1

    Миграция базы данных Zabbix посредством pg_dump на новую ноду

    Здравствуйте.
    Проблема в следующем: при пройденном этапе подготовки настройки нового сервера Zabbix с соблюдением версионности от мигрирующего сервера, наблюдается проблема, после импорта dump файла базы данных (общая версия у двух участников postgresql 14) сервер Zabbix не стартует из за пустой таблицы users, хотя предполагалось что в таблице будут содержаться пользователи.
    Сценарии были выполнены следующие:
    1. Создавалась новая БД, создавался пользователь zabbix с ролью управлением БД, но не как owner.
    1.1 Далее выполнялся импорт из дампа в созданную БД под созданным пользователем.
    1.2 После импорта, сервер не запускался из за присутствия объявленной уже проблемы (пустая таблица users)
    2. Создавалась новая БД, создавался пользователь zabbix с ролью управлением БД, но не как owner.
    2.1 Далее выполнялся импорт из из идущего в поставке с сервером sql скрипта для postgresql, где уже таблица users содержала в себе список пользователей.
    2.3 Далее выполнялся импорт из дампа в созданную БД под созданным пользователем и зависание процесса в N времени.
    3. Создавалась новая БД, создавался пользователь zabbix с ролью управлением БД, пользователь как owner.
    3.1 Далее выполнялся импорт из дампа в созданную БД под созданным пользователем.
    3.2 После импорта, сервер не запускался из за присутствия объявленной уже проблемы (пустая таблица users), в итоге в таблицу был импортирован нвоый пользователь,
    Backend Zabbix(a) запустился, но спустя некоторое время, состояние сервера перешло в состояние в ошибки из за разность используемых версий БД, также была со стороны сервера попытка выполнение upgrade БД до необходимой версии БД
    данное действие сопровождалось также ошибкой, из за отсутствия индекса в БД с именем sctipts_3.
    3.3 Созданы необходимые индексы взятые из документации, которые используются при инициализация БД, её создания
    Code:
    "CREATE INDEX scripts_1 ON scripts (usrgrpid);
    CREATE INDEX scripts_2 ON scripts (groupid);
    CREATE UNIQUE INDEX scripts_3 ON scripts (name,menu_path);"
    В итоге процесс запуска и обновления в Backend части системы Zabbix(a) пройдена успешно.
    Но, Frontend не отвечает, точнее при get запросе возвращает ошибку, что действие для него не естественно и он ftontend предупреждает,
    что будет выполнять перезагрузку страницы каждые 30 секунд.
    Сама ошибка на стороне сервера следующая:
    Code:
    2023/05/05 17:15:23 [error] 21287#21287: *1 FastCGI sent in stderr: "PHP message: PHP Notice: Trying to access array offset on value of type null in /usr/share/zabbix/include/classes/core/CCookieSession.php on line 194" while readin>
    2023/05/05 17:15:31 [error] 21288#21288: *5 FastCGI sent in stderr: "PHP message: PHP Notice: Trying to access array offset on value of type null in /usr/share/zabbix/include/classes/core/CCookieSession.php on line 194" while readin>
    2023/05/05 17:15:37 [error] 21288#21288: *5 FastCGI sent in stderr: "PHP message: PHP Notice: Trying to access array offset on value of type null in /usr/share/zabbix/include/classes/core/CCookieSession.php on line 194" while readin>
    2023/05/05 17:16:19 [error] 21288#21288: *5 FastCGI sent in stderr: "PHP message: PHP Notice: Trying to access array offset on value of type null in /usr/share/zabbix/include/classes/core/CCookieSession.php on line 194" while readin>
    2023/05/05 17:16:39 [error] 21288#21288: *5 FastCGI sent in stderr: "PHP message: PHP Notice: Trying to access array offset on value of type null in /usr/share/zabbix/include/classes/core/CCookieSession.php on line 194" while readin>
    2023/05/05 17:16:45 [error] 21287#21287: *1 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined offset: 0 in /usr/share/zabbix/include/classes/user/CWebUser.php on line 214PHP message: PHP Notice: Trying to access array off>
    LINE 1: ...pid FROM usrgrp g,users_groups ug WHERE ug.userid='' AND g.u... in /usr/share/zabbix/include/db.inc.php on line 254PHP message: PHP Notice: Undefined offset: 0 in /usr/share/zabbix/include/classes/user/CWebUser.php on line 215PHP mes>
    Stack trace:
    #0 /usr/share/zabbix/include/classes/user/CWebUser.php(215): getUserGuiAccess()
    [NODE="1"]Home[/NODE] /usr/share/zabbix/index.php(95): CWebUser::isGuestAllowed()
    [NODE="2"]Forum[/NODE] {main}
    thrown in /usr/share/zabbix/include/perm.inc.php on line 96" while reading response header from upstream, client: внутренний айпи, server: lcoalhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/zabbix.s>
    2023/05/05 17:17:33 [error] 21287#21287: *1 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined offset: 0 in /usr/share/zabbix/include/classes/user/CWebUser.php on line 214PHP message: PHP Notice: Trying to access array off>
    LINE 1: ...pid FROM usrgrp g,users_groups ug WHERE ug.userid='' AND g.u... in /usr/share/zabbix/include/db.inc.php on line 254PHP message: PHP Notice: Undefined offset: 0 in /usr/share/zabbix/include/classes/user/CWebUser.php on line 215PHP mes>
    Stack trace:
    #0 /usr/share/zabbix/include/classes/user/CWebUser.php(215): getUserGuiAccess()
    [NODE="1"]Home[/NODE] /usr/share/zabbix/index.php(95): CWebUser::isGuestAllowed()
    [NODE="2"]Forum[/NODE] {main}
    thrown in /usr/share/zabbix/include/perm.inc.php on line 96" while reading response header from upstream, client: внутренний айпи, server: lcoalhost, request: "GET /index.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php/zabbix.s>
    2023/05/05 17:17:35 [error] 21287#21287: *1 FastCGI sent in stderr: "PHP message: PHP Notice: Undefined offset: 0 in /usr/share/zabbix/include/classes/user/CWebUser.php on line 214PHP message: PHP Notice: Trying to access array off>
    LINE 1: ...pid FROM usrgrp g,users_groups ug WHERE ug.userid='' AND g.u... in /usr/share/zabbix/include/db.inc.php on line 254PHP message: PHP Notice: Undefined offset: 0 in /usr/share/zabbix/include/classes/user/CWebUser.php on line 215PHP mes>
    ​
    Разница между система в том, что старая система серверной части работала в микросервесной архитектуре (Docker), щас удалось запустить Backend на полноценной машине, но
    Code:
    "FROM usrgrp g,users_groups ug WHERE ug.userid"
    получается также необходимо создавать? А также вопрос, почему пользователи не перенеслись в дампе? Почему пустая таблица users?
    Дело в том, что сама система важна и данные не хочется терять, необходимо получить доступ к ним, вот сама задача, в процессе которой не получается посредством frontend добраться до представлений


    Также прошу пожалуйста помочь в решении данной проблемы.
    Заранее спасибо за Ваше внимание и Ваше время.
    Last edited by Giflop; 05-05-2023, 17:59.
  • Kos
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • Aug 2015
    • 3404

    #2
    Надо смотреть более подробно, что и каким образом у вас попадает в бэкап.
    Я у себя для бэкапа базы данных Zabbix (PostgreSQL) пользуюсь утилитой pg_basebackup (создать базовый бэкап) - она отрабатывает в меру быстро и создаёт целостный полный бэкап базы со всеми таблицами и файлами конфигурации; восстановление при необходимости - просто раскрывание архива в нужное место, проверка конфигов и запуск сервера PostgreSQL на новом месте.

    Если одновременно с переездом меняются версии каких-то ещё компонентов (операционки, сервера Zabbix, PHP и т.д.), то нужно это учитывать. В частности, проверять совместимость версий PHP для корректной работы веб-интерфейса (старые версии веб-интерфейса не работают с новыми версиями PHP), а также учитывать, что при обновлении версии сервера Zabbix но более новую (например, 6.0.x -> 6.2.x) при первом запуске бинарника он будет обновлять структуру базы, и для этого нужны соответствующие права.​

    Comment


    • Giflop
      Giflop commented
      Editing a comment
      Здравствуйте.
      Спасибо за Ваши рекомендации и Ваше время.
      У меня в итоге получилось до-собрать и запустить backend и frontend Zabbix сервера, но к сожалению данных не было обнаружено.
      Буду руководствоваться на будущие в том же числе и Вашим примером.
Working...