Ad Widget

Collapse

Партицирование mysql Zabbix 3.2

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • 20304007
    Junior Member
    • May 2017
    • 3

    #1

    Партицирование mysql Zabbix 3.2

    Добрый день!
    Тема стара как мир, распухла база заббикса, хаускипер вводит систему в ступор.. Выход вижу один - это партицирование..
    Я не силен в мускуле, то что нашел в интернетах - http://unixadm.info/content/разбиени...;-zabbix-mysql..
    Но на шаге 7 при выполнении -
    mysql> ALTER TABLE `history_log` DROP PRIMARY KEY, ADD PRIMARY KEY (`id`,`clock`);
    Выходит ошибка - ERROR 1091 (42000): Can't DROP 'PRIMARY'; check that column/key exists
    и все последующие пункты полсе 7-го также вызывают такую ошибку.
    Как я понял это писалось для версии 2.хх и в 3.2 указаная процедура не работает?
    Буду признателен за совет, как можно исправить ошибку, или за толковый мануал как сделать партицирование.
    Заранее благодарен!
  • Gabalino
    Senior Member
    • Mar 2013
    • 103

    #2
    Zabbix не может удалить индекс потому, что он не существует. Добавьте например так, а потом запустите процесс заново.

    ALTER TABLE `history_log` ADD PRIMARY KEY (`id`);

    Если не сработает, покажите структуру таблицы

    SHOW CREATE TABLE `history_log`;

    Comment

    • 20304007
      Junior Member
      • May 2017
      • 3

      #3
      Не сработало:
      mysql> ALTER TABLE `history_log` ADD PRIMARY KEY (`id`);
      ERROR 1072 (42000): Key column 'id' doesn't exist in table
      Вот вывод структуры таблицы:

      mysql> SHOW CREATE TABLE `history_log`;
      +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | Table | Create Table |
      +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      | history_log | CREATE TABLE `history_log` (
      `itemid` bigint(20) unsigned NOT NULL,
      `clock` int(11) NOT NULL DEFAULT '0',
      `timestamp` int(11) NOT NULL DEFAULT '0',
      `source` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
      `severity` int(11) NOT NULL DEFAULT '0',
      `value` text COLLATE utf8_bin NOT NULL,
      `logeventid` int(11) NOT NULL DEFAULT '0',
      `ns` int(11) NOT NULL DEFAULT '0',
      KEY `history_log_1` (`itemid`,`clock`)
      ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |
      +-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
      1 row in set (0.00 sec)

      Comment

      • aib
        Senior Member
        • Jan 2014
        • 1615

        #4
        Предполагаю, что на каком-то апгрейде имя поля 'id' было изменено на 'itemid'

        Проверьте возможность создания и удаления индекса с этим полем
        Например,
        Code:
        mysql> ALTER TABLE `history_log` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`clock`);
        Sincerely yours,
        Aleksey

        Comment

        • 20304007
          Junior Member
          • May 2017
          • 3

          #5
          Господа большое спасибо за помощь!
          Вы оказались правы в Забиксе 3.2 изменились имена полей в таблице, ранше было id сейчас - itemid.
          команда -
          ALTER TABLE `history_log` ADD PRIMARY KEY (`itemid`,`clock`);
          прошла успешно вот вывод -
          mysql> ALTER TABLE `history_log` ADD PRIMARY KEY (`itemid`,`clock`);
          Query OK, 0 rows affected (0.05 sec)
          Records: 0 Duplicates: 0 Warnings: 0
          Я дискуссию пока закрывать не буду, если возникнут трудности снова к вам обращусь, надеюсь также на ваше содействие!

          Comment

          • zverek06
            Member
            • Oct 2016
            • 51

            #6
            Originally posted by 20304007
            Господа большое спасибо за помощь!
            Вы оказались правы в Забиксе 3.2 изменились имена полей в таблице, ранше было id сейчас - itemid.
            команда -
            alter table `history_log` add primary key (`itemid`,`clock`);
            прошла успешно вот вывод -
            mysql> alter table `history_log` add primary key (`itemid`,`clock`);
            query ok, 0 rows affected (0.05 sec)
            records: 0 duplicates: 0 warnings: 0
            Я дискуссию пока закрывать не буду, если возникнут трудности снова к вам обращусь, надеюсь также на ваше содействие!
            Я так понимаю, ошибок больше не возникло? Можно брать за результат решения?

            Comment

            • zverek06
              Member
              • Oct 2016
              • 51

              #7
              Originally posted by 20304007
              Господа большое спасибо за помощь!
              Вы оказались правы в Забиксе 3.2 изменились имена полей в таблице, ранше было id сейчас - itemid.
              команда -
              alter table `history_log` add primary key (`itemid`,`clock`);
              прошла успешно вот вывод -
              mysql> alter table `history_log` add primary key (`itemid`,`clock`);
              query ok, 0 rows affected (0.05 sec)
              records: 0 duplicates: 0 warnings: 0
              Я дискуссию пока закрывать не буду, если возникнут трудности снова к вам обращусь, надеюсь также на ваше содействие!
              Не получается у меня что то, с хистори лог получилось, не хочет восстанавливать почти всю историю... У Вас все остальное получилось без ошибок?

              Comment

              • Gabalino
                Senior Member
                • Mar 2013
                • 103

                #8
                Originally posted by zverek06
                Не получается у меня что то, с хистори лог получилось, не хочет восстанавливать почти всю историю... У Вас все остальное получилось без ошибок?
                Какая ошибка, покажите структуру таблицы, какая версия?

                Comment

                • Alex1987
                  Member
                  • Nov 2015
                  • 55

                  #9
                  У кого-нибудь получилось в итоге сделать mysql партицирование?
                  У меня ошибка на этом этапе:
                  ALTER TABLE `history_log` ADD UNIQUE INDEX `history_log_2`(`itemid`,`id`,`clock`);
                  ERROR 1072 (42000): Key column 'id' doesn't exist in table
                  show create table history_log;
                  CREATE TABLE `history_log` (
                  `itemid` bigint(20) unsigned NOT NULL,
                  `clock` int(11) NOT NULL DEFAULT 0,
                  `timestamp` int(11) NOT NULL DEFAULT 0,
                  `source` varchar(64) COLLATE utf8_bin NOT NULL DEFAULT '',
                  `severity` int(11) NOT NULL DEFAULT 0,
                  `value` text COLLATE utf8_bin NOT NULL,
                  `logeventid` int(11) NOT NULL DEFAULT 0,
                  `ns` int(11) NOT NULL DEFAULT 0,
                  PRIMARY KEY (`itemid`,`clock`),
                  KEY `history_log_1` (`itemid`,`clock`)
                  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin |

                  Как видно, поля "id" не существует.
                  И что теперь делать?

                  Comment

                  Working...