Ad Widget

Collapse

Обновление Zabbix 3.2 + MySQL с секционированием

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • Gabalino
    Senior Member
    • Mar 2013
    • 103

    #1

    Обновление Zabbix 3.2 + MySQL с секционированием

    Добрый день!
    При попытке обновления до версии 3.2 в логе появляется ошибка, подскажите как обновить в таком случае?

    Code:
    [Z3005] query failed: [1091] Can't DROP 'history_log_2'; check that column/key exists [drop index history_log_2 on history_log]
    Структура таблицы
    Code:
    | history_log | CREATE TABLE `history_log` (
      `id` bigint(20) unsigned NOT NULL,
      `itemid` bigint(20) unsigned NOT NULL,
      `clock` int(11) NOT NULL DEFAULT '0',
      `timestamp` int(11) NOT NULL DEFAULT '0',
      `source` varchar(64) NOT NULL DEFAULT '',
      `severity` int(11) NOT NULL DEFAULT '0',
      `value` text NOT NULL,
      `logeventid` int(11) NOT NULL DEFAULT '0',
      `ns` int(11) NOT NULL DEFAULT '0',
      KEY `history_log_1` (`itemid`,`clock`),
      KEY `id` (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8
    /*!50100 PARTITION BY RANGE ( clock)
    (PARTITION p2016_03 VALUES LESS THAN (1459717200) ENGINE = InnoDB,
     PARTITION p2016_04 VALUES LESS THAN (1462050000) ENGINE = InnoDB,
     PARTITION p2016_05 VALUES LESS THAN (1464728400) ENGINE = InnoDB,
     PARTITION p2016_06 VALUES LESS THAN (1467320400) ENGINE = InnoDB,
     PARTITION p2016_07 VALUES LESS THAN (1469998800) ENGINE = InnoDB,
     PARTITION p2016_08 VALUES LESS THAN (1472677200) ENGINE = InnoDB,
     PARTITION p2016_09 VALUES LESS THAN (1475269200) ENGINE = InnoDB,
     PARTITION p2016_10 VALUES LESS THAN (1477947600) ENGINE = InnoDB) */ |
    Code:
    +------------+---------------------+------+-----+---------+-------+
    | Field      | Type                | Null | Key | Default | Extra |
    +------------+---------------------+------+-----+---------+-------+
    | id         | bigint(20) unsigned | NO   | MUL | NULL    |       |
    | itemid     | bigint(20) unsigned | NO   | MUL | NULL    |       |
    | clock      | int(11)             | NO   |     | 0       |       |
    | timestamp  | int(11)             | NO   |     | 0       |       |
    | source     | varchar(64)         | NO   |     |         |       |
    | severity   | int(11)             | NO   |     | 0       |       |
    | value      | text                | NO   |     | NULL    |       |
    | logeventid | int(11)             | NO   |     | 0       |       |
    | ns         | int(11)             | NO   |     | 0       |       |
    +------------+---------------------+------+-----+---------+-------+
    Code:
    CREATE UNIQUE INDEX history_log_2 on history_log (itemid,id);
    ERROR 1503 (HY000): A PRIMARY KEY must include all columns in the table's partitioning function
  • id2669099
    Member
    • Mar 2016
    • 68

    #2
    вот такой ответ был на хабре, я пока свой не обновлял, если столкнусь с такой проблемой, потом отпишу решение.
    ricox 14 сентября 2016 в 14:34 0
    На сколько я понял из описания, то в таблицах истории удалили history_text.id и history_log.id, но не пойму каким образом это может повлиять на партицирование?
    Пользуясь случаем, хочу спросить, как можно поставить таймаут для snmp запросов более 30 секунд, дело в том, что при использовании lld на БРАС, у которых десятки тысяч интерфейсов, snmp не успевает опросить их все, хотя по фильтру используется на мониторинге менее десятка (остальные не будут добавлены, но все равно опрашиваются при lld), можно ли поднять этот таймаут чтоб не получать ошибку из-за закончившегося времени на запрос, либо добавить какую-то проверку, что если данные приходят, а не подвисли, то ждать окончания передачи.
    ответить
    alexvl 14 сентября 2016 в 15:15 0
    Дело в том, что процедура обновления создаёт и удаляет некоторые индексы. В зависимости от способа партиционирования это может стать небольшой проблемой.
    ответить
    freejoins 14 сентября 2016 в 16:07 0
    А будет ли решение проблемы апгрейда, для людей использующих партиционирование? Или придется через дамп->восстановление без партиций->обновление до 3.2->дамп->партиционирование->восстановление с партиционированием?
    ответить
    alexvl 14 сентября 2016 в 17:25 0
    Постараемся эту ситуацию описать в документации как можно раньше. Там ничего сложного не будет.
    ответить

    Comment

    • Gabalino
      Senior Member
      • Mar 2013
      • 103

      #3
      Спасибо, буду ждать.

      Comment

      • id2669099
        Member
        • Mar 2016
        • 68

        #4
        Originally posted by Gabalino
        Спасибо, буду ждать.


        вот вроде что-то похожее обсуждали, у меня кстати с партицированием без проблем обновилось, пишет в нужные даты.

        Comment

        • Gabalino
          Senior Member
          • Mar 2013
          • 103

          #5
          Решение

          create index history_text_2 on history_text (value(10));
          create index history_log_2 on history_log (source(10));
          Last edited by Gabalino; 14-10-2016, 21:36. Reason: Найдено решение

          Comment

          • mobil1
            Junior Member
            • Apr 2017
            • 3

            #6
            Originally posted by Gabalino
            Решение

            create index history_text_2 on history_text (value(10));
            create index history_log_2 on history_log (source(10));
            возникло подобное но в postgresql, не понятно что указать заместо (source(10)), потому как это там не прокатывает.

            Comment

            Working...