Ad Widget

Collapse

Проблема обновления базы данных при обновлении с 5.0 до 6.0

Collapse
This topic has been answered.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Oleg Zuev
    Junior Member
    • Feb 2022
    • 16

    #1

    Проблема обновления базы данных при обновлении с 5.0 до 6.0

    При обновлении Zabbix с версии 5.0 на 6.0 происходит следующая проблема обновления базы данных:
    Code:
    12030:20220216:163156.403 completed 37% of database upgrade
    12030:20220216:163156.414 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ОШИБКА: в целевой внешней таблице "dashboard" нет ограничения уникальности, соответствующего данным ключам
    [alter table dashboard_page add constraint c_dashboard_page_1 foreign key (dashboardid) references dashboard (dashboardid) on delete cascade]
    12030:20220216:163156.414 database upgrade failed
    12082:20220216:163206.516 Starting Zabbix Server. Zabbix 6.0.0 (revision 5203d2ea7d).
    12082:20220216:163206.516 ****** Enabled features ******
    12082:20220216:163206.516 SNMP monitoring: YES
    12082:20220216:163206.516 IPMI monitoring: YES
    12082:20220216:163206.516 Web monitoring: YES
    12082:20220216:163206.516 VMware monitoring: YES
    12082:20220216:163206.516 SMTP authentication: YES
    12082:20220216:163206.516 ODBC: YES
    12082:20220216:163206.516 SSH support: YES
    12082:20220216:163206.516 IPv6 support: YES
    12082:20220216:163206.516 TLS support: YES
    12082:20220216:163206.516 ******************************
    12082:20220216:163206.516 using configuration file: /etc/zabbix/zabbix_server.conf
    12082:20220216:163206.592 current database version (mandatory/optional): 05030083/05030083
    12082:20220216:163206.593 required mandatory version: 06000000
    12082:20220216:163206.593 starting automatic database upgrade
    12082:20220216:163206.594 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ОШИБКА: в целевой внешней таблице "dashboard" нет ограничения уникальности, соответствующего данным ключам
    [alter table dashboard_page add constraint c_dashboard_page_1 foreign key (dashboardid) references dashboard (dashboardid) on delete cascade]
    и так бесконечно повторяется.
    Система Debian 11.2
    psql (PostgreSQL) 13.5 (Debian 13.5-0+deb11u1)
    Базу руками никто не модифицировал.
    Как можно поправить?
  • Answer selected by Oleg Zuev at 17-02-2022, 15:12.
    Hamardaban
    Senior Member
    Zabbix Certified SpecialistZabbix Certified Professional
    • May 2019
    • 2713

    имхо дело вот в этом https://www.zabbix.com/documentation...0#primary-keys
    читать/думать/делать https://www.zabbix.com/documentation...eys#postgresql

    Comment

    • Hamardaban
      Senior Member
      Zabbix Certified SpecialistZabbix Certified Professional
      • May 2019
      • 2713

      #2
      имхо дело вот в этом https://www.zabbix.com/documentation...0#primary-keys
      читать/думать/делать https://www.zabbix.com/documentation...eys#postgresql

      Comment

      • wins
        Senior Member
        • Sep 2014
        • 307

        #3
        Версия номер раз (имхо, правильная)
        If product supports upgrades over several versions, then why not do it... ? In this case nothing is gained with doing something like 4.4->5.0->5.2->5.4....

        Версия номер два: (сам наступал на похожие грабли)

        Comment

        • Hamardaban
          Senior Member
          Zabbix Certified SpecialistZabbix Certified Professional
          • May 2019
          • 2713

          #4
          выполните в psql на базе забикса запрос "\d dashboard" и посмотрите есть ли индекс " "dashboard_pkey" PRIMARY KEY, btree (dashboardid)" ?

          Comment

          • Oleg Zuev
            Junior Member
            • Feb 2022
            • 16

            #5
            Originally posted by Hamardaban
            имхо дело вот в этом https://www.zabbix.com/documentation...0#primary-keys
            читать/думать/делать https://www.zabbix.com/documentation...eys#postgresql
            Да, наверно в этом дело.
            Они приводят скрипт только для history* таблиц, для других думайте сами...

            PS. По второй ссылке у них ошибка, первый INSERT вставляет данные в таблицу history_uint, а должен в history ...

            Comment

            • Oleg Zuev
              Junior Member
              • Feb 2022
              • 16

              #6
              Originally posted by wins
              Версия номер раз (имхо, правильная)
              If product supports upgrades over several versions, then why not do it... ? In this case nothing is gained with doing something like 4.4->5.0->5.2->5.4....

              Версия номер два: (сам наступал на похожие грабли)
              https://www.zabbix.com/forum/in-russ...0%B4%D0%BE-5-4
              Если ничего не может буду первый вариант пробовать, второй не помог.

              Comment

              • Oleg Zuev
                Junior Member
                • Feb 2022
                • 16

                #7
                Originally posted by Hamardaban
                выполните в psql на базе забикса запрос "\d dashboard" и посмотрите есть ли индекс " "dashboard_pkey" PRIMARY KEY, btree (dashboardid)" ?
                Нету конечно
                Code:
                zabbix=# \d dashboard
                Таблица "public.dashboard"
                Столбец | Тип | Правило сортировки | Допустимость NULL | По умолчанию
                -------------+------------------------+--------------------+-------------------+--------------
                dashboardid | bigint | | not null |
                name | character varying(255) | | not null |
                userid | bigint | | not null |
                private | integer | | not null | 1
                Ограничения внешнего ключа:
                "c_dashboard_1" FOREIGN KEY (userid) REFERENCES users(userid)

                Comment

                • Hamardaban
                  Senior Member
                  Zabbix Certified SpecialistZabbix Certified Professional
                  • May 2019
                  • 2713

                  #8
                  ну вот на это и ругань в процессе обновления.
                  яж дал ссылку - по сути там написано что отныне у всех таблиц есть PK. и написано как сделать (тут каждый волен делать как может или умеет)

                  можете выполнить "ALTER TABLE dashboard ADDPRIMARY KEY (dashboardid);" и запустить обновление снова - но скорее всего споткнётесь на следующей таблице без PK.
                  Last edited by Hamardaban; 17-02-2022, 09:50.

                  Comment

                  • Oleg Zuev
                    Junior Member
                    • Feb 2022
                    • 16

                    #9
                    Originally posted by Hamardaban
                    ну вот на это и ругань в процессе обновления.
                    яж дал ссылку - по сути там написано что отныне у всех таблиц есть PK. и написано как сделать (тут каждый волен делать как может или умеет)

                    можете выполнить "ALTER TABLE dashboard ADDPRIMARY KEY (dashboardid);" и запустить обновление снова - но скорее всего споткнётесь на следующей таблице без PK.
                    Это всё понятно, единственная проблема на какие поля должен создаваться первичный ключ для каждой таблицы? Т.к. по ссылке для таблиц history* делается ключ по трем полям
                    Code:
                    PRIMARY KEY (itemid,clock,ns)
                    Конкретно для таблицы dashboard хватит ли одного поля dashboardid для первичного ключа?

                    Comment

                    • Hamardaban
                      Senior Member
                      Zabbix Certified SpecialistZabbix Certified Professional
                      • May 2019
                      • 2713

                      #10
                      посмотреть какие ключи должны быть у таблиц можно в файле schema.sql в дистрибутиве

                      вот конкретно для dashboard я привел нужное выражение... там конечно есть и другие индексы - но PK именно такой

                      Comment

                      • Oleg Zuev
                        Junior Member
                        • Feb 2022
                        • 16

                        #11
                        Originally posted by Hamardaban
                        посмотреть какие ключи должны быть у таблиц можно в файле schema.sql в дистрибутиве
                        В пакете для Debian схемы нет, есть /usr/share/doc/zabbix-sql-scripts/postgresql/server.sql.gz
                        Буду на него ориентироваться.
                        Спасибо за подсказки.

                        Comment


                        • Hamardaban
                          Hamardaban commented
                          Editing a comment
                          в исходниках есть
                      • Oleg Zuev
                        Junior Member
                        • Feb 2022
                        • 16

                        #12
                        В процессе обновления всплывало много проблем с SQL кроме первичных ключей.
                        Например:
                        Code:
                        3459228:20220217:132611.619 completed 32% of database upgrade
                        3459228:20220217:132611.625 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ОШИБКА: ограничение "c_widget_1" в таблице "widget" не существует
                        [alter table widget drop constraint c_widget_1]
                        Code:
                        3459700:20220217:132959.978 completed 16% of database upgrade
                        3459700:20220217:132959.979 [Z3005] query failed: [0] PGRES_FATAL_ERROR:ОШИБКА: ограничение "c_httptest_1" в таблице "httptest" не существует
                        [alter table httptest drop constraint c_httptest_1]
                        и т.п..
                        Приходилось ручками создавать эти ограничения чтобы в процессе обновления их мог удалить обновлятор

                        В общем обновился, сервер стал запускаться, пошли данные.

                        После обновления проанализировал таблицы на отсутствие первичных ключей. В таких таблицах почему-то имелись замноженные строки
                        Code:
                        zabbix=# SELECT * FROM drules;
                        druleid | proxy_hostid | name | iprange | delay | nextcheck | status
                        ---------+--------------+-------------------------------+---------------------------------+-------+------------+--------
                        2 | | FES Cisco catalyst switches | 10.168.5.130-190 | 1h | 1645057359 | 0
                        2 | | FES Cisco catalyst switches | 10.168.5.130-190 | 1h | 1645057359 | 0
                        На этих таблицах обновлятор Zabbix'а не смог прикрутить PRIMARY KEY и нужные индексы по схеме, но и ошибку не выдал.
                        Запросами удалил дубликаты, добавил ключи и индексы в соответствии с схемой. Благо их было не так много.
                        Last edited by Oleg Zuev; 17-02-2022, 15:09.

                        Comment

                        • Hamardaban
                          Senior Member
                          Zabbix Certified SpecialistZabbix Certified Professional
                          • May 2019
                          • 2713

                          #13
                          Делал практически тоже самое недавно.
                          Это всё последствия "неявного" изменения схемы БД при обновлении версий.... схему поменяли - написать забыли. ну и накопилось. а за время работы и косяки в базе появились....
                          К сожалению до последнего времени база данных забикс была похожа на полное гуано. Ни ключей ни индексов..... Сейчас хоть подправили многое!

                          Comment

                          • Zbbixuser
                            Member
                            • Jun 2021
                            • 45

                            #14
                            А с таким никто не сталкивался?
                            The Zabbix database version does not match current requirements. Your database version: 5040000. Required version: 6000000. Please contact your system administrator.
                            Уже и обновил MariaDB, но ничего не помогает
                            10.5.15-MariaDB-1:10.5.15+maria~bionic
                            Last edited by Zbbixuser; 17-02-2022, 18:38.

                            Comment

                            • Oleg Zuev
                              Junior Member
                              • Feb 2022
                              • 16

                              #15
                              Originally posted by Zbbixuser
                              А с таким никто не сталкивался? Ничего не помогает.
                              Это в логе пишет или веб интерфейсе?

                              Comment

                              Working...