Ad Widget

Collapse

zabbix очистить место

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • nikitos35
    Senior Member
    • Jun 2014
    • 166

    #1

    zabbix очистить место

    Добрый день!
    Есть виртуальная машина с HDD в 60Гб
    На ней настроен zabbix 2.4 на opensuse 13.1
    Закончилось свободное место.
    Определил, что больше всего занято место базой events.ibd (37Гб) по пути /var/lib/mysql/zabbix
    Можно как нибудь оптимизировать размер данной базы?
    Время хранения логов сократил, должна ли сама база после этого удалить старые записи?
    В разделе /var/lib/mysql/zabbix нет базы innodb
    Спасибо!
  • yukra
    Senior Member
    • Apr 2013
    • 1359

    #2
    Originally posted by nikitos35
    Добрый день!
    Есть виртуальная машина с HDD в 60Гб
    На ней настроен zabbix 2.4 на opensuse 13.1
    Закончилось свободное место.
    Определил, что больше всего занято место базой events.ibd (37Гб) по пути /var/lib/mysql/zabbix
    Можно как нибудь оптимизировать размер данной базы?
    Время хранения логов сократил, должна ли сама база после этого удалить старые записи?
    В разделе /var/lib/mysql/zabbix нет базы innodb
    Спасибо!
    .idb нам как бы намекает что это innodb, но это не база, а тип таблицы (storage engine если хотите). innodb добровольно место не отдаст, нужно сделать примерно так:
    1) Почистить данные из таблицы (через хаускипер, руками или еще как-то)
    2) Сделать дамп\рестор таблицы.

    Учитывая 37Гб сразу морально подготовьтесь что это не 2 минуты займет.

    Comment

    • nikitos35
      Senior Member
      • Jun 2014
      • 166

      #3
      Как правильно запустить Хауспикер?
      Вчера в файле zabbix-server.conf поправил
      HTML Code:
      # Зададим периодичность запуска процедуры очистки базы Zabbix от устаревшей информации (в часах). Учитывая то, что мы используем в качестве СУБД PostgreSQL, период задаём побольше, что бы дать время утилите "vacuum", которая должна оптимизировать таблицы базы после удаления части содержимого, отработать в полном объёме
      #
      HousekeepingFrequency=24
      
      # Зададим ограничение на количество удаляемых за один проход записей. Полагаю, что это значение нужно подбирать исходя их общего количества отрабатываемых узлов и производительности дисковой подсистемы. По умолчанию значение равно 500 (пятистам), что мне представляется слишком малым
      #
      MaxHousekeeperDelete=2500
      Этого достаточно? Или еще что то надо сделать? Суток еще не прошло с моменда изменения параметров хранения данных

      Comment

      • nikitos35
        Senior Member
        • Jun 2014
        • 166

        #4
        Так Хауспикер мне ничего не освободил.
        Можно как нибудь проверить он вообще отработал?

        Comment

        • MONro
          Junior Member
          • Dec 2015
          • 9

          #5
          Housekeeper удаляет записи из базы данных. Сколько записей удалено - можно увидеть в логах сервера. Кроме этого, можно оценить количество удаляемых записей по внутренним элементам данных (zabbix[history], zabbix[history_uint], zabbix[trends]) если по ним был настроен мониторинг.

          Место на диске при этом не освобождается. Чтобы освободить место надо сжать базу данных

          Comment

          • nikitos35
            Senior Member
            • Jun 2014
            • 166

            #6
            Командами не поделитесь как правильно базу сжать?

            Comment

            • MONro
              Junior Member
              • Dec 2015
              • 9

              #7
              У меня база на PostgreSQL. Приходилось это делать всего несколько раз за все время. У вас MySQL. Мои команды вам не подойдут. Думаю, проще будет спросить Google.

              Comment

              • deemon87
                Junior Member
                • Oct 2015
                • 15

                #8
                В конфиге mysql, что указано для innodb_data_file_path ?

                Comment

                • Dorlas
                  Member
                  • May 2016
                  • 31

                  #9
                  Originally posted by nikitos35
                  Добрый день!
                  Есть виртуальная машина с HDD в 60Гб
                  На ней настроен zabbix 2.4 на opensuse 13.1
                  Закончилось свободное место.
                  Определил, что больше всего занято место базой events.ibd (37Гб) по пути /var/lib/mysql/zabbix
                  Можно как нибудь оптимизировать размер данной базы?
                  Время хранения логов сократил, должна ли сама база после этого удалить старые записи?
                  В разделе /var/lib/mysql/zabbix нет базы innodb
                  Спасибо!
                  У меня раздел под базу 40 гигов, после перехода на 3.0.3 стали проблемы с нехваткой места, т.к. неадекватно работатал Хаускипер, в итоге мы пришли к тому чтоб избавится от Housekeeper'a и переделать базу данных на партиции.
                  Поищите как отключить Хаускипер на 2.4, в 3.0 появилась возможность с помощью переменной HousekeepingFrequency=0

                  А теперь наше решение по переводу на партиции:

                  1. Сделали backup больших таблиц (history_uint, history, history_text, history_log, history_str)
                  mysqldump --no-create-info --lock-tables -u zabbix -p zabbix history_str > backup_history_str.sql

                  2. Очищаем таблицу (проще дропнуть таблицу и создать заново)

                  3. Слегка меняем структуры таблиц
                  ALTER TABLE `history_log` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`id`,`clock`);
                  ALTER TABLE `history_log` DROP KEY `history_log_2`;
                  ALTER TABLE `history_text` DROP PRIMARY KEY, ADD PRIMARY KEY (`itemid`,`id`,`clock`);
                  ALTER TABLE `history_text` DROP KEY `history_text_2`;

                  4. Создаем partition table с делением по дням
                  ALTER TABLE `history_str` PARTITION BY RANGE( clock ) (
                  PARTITION p20160705 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-06 00:00:00")),
                  PARTITION p20160706 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-07 00:00:00")),
                  PARTITION p20160707 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-08 00:00:00")),
                  PARTITION p20160708 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-09 00:00:00"))
                  );

                  5. Загружаете из бекапа все таблицы
                  mysql -u zabbix -p zabbix < 20160704_history_log.sql

                  Готово

                  Теперь добавление новой партиции в ручном режиме
                  ALTER TABLE `history_str` ADD PARTITION (PARTITION p20160705 VALUES LESS THAN (UNIX_TIMESTAMP("2016-07-06 00:00:00")));
                  Удаление
                  ALTER TABLE `history_str` DROP PARTITION p20160627;

                  Теперь осталось вам автоматизировать создание и удаление партици, свой скрипт не буду приводить ;-)

                  Comment

                  • orbital
                    Senior Member
                    • Dec 2019
                    • 104

                    #10
                    Привет
                    пару мес назад перешел с 4.4 на 5.2. Сделал дамп базы, установил готовое решение 5.2 и залил туда базу. Дамп был 2.8гига. После заливания в базу, раздел /var/lib/mysql раздулся до 7 гигов. По прошествии 2х мес он уже 12гигов. Хочу както ее уменьшить. в папке /var/lib/mysql лежит куча файлов вида: 1.00хххх где хххх цифры. Файлов штук 30 и все они занимают порядка 3.5 гигов. Даты создания файлов последняя неделя. Что это за файлы кто знает?

                    Comment

                    Working...