Voipnotes
Услуги
  • 3CX Phone System
    • Купить IP АТС - 3CX Phone System
Ещё
    Задать вопрос
    +7 (499) 113-65-73
    Заказать звонок
    sale@voipnotes.ru
    г. Москва 2-й Михайловский проезд 9
    +7 (499) 113-65-73
    Заказать звонок
    Voipnotes
    Услуги
    • 3CX Phone System
      • Купить IP АТС - 3CX Phone System
      Voipnotes
      Услуги
      • 3CX Phone System
        • Купить IP АТС - 3CX Phone System
        Voipnotes
        Voipnotes
        • Услуги
          • Назад
          • Услуги
          • 3CX Phone System
            • Назад
            • 3CX Phone System
            • Купить IP АТС - 3CX Phone System
        • +7 (499) 113-65-73
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        • Главная
        • Блог
        • Zabbix занимает много места. Что делать?

        Zabbix занимает много места. Что делать?

        29 Июля 2015

        Работая с Zabbix, со временем появляется проблема связанная с отсутствием свободного места на сервере. Это связано с хранением большого объема данных. Начав изучать систему, мы нашли, что файл ibdata1 очень сильно разросся. Погуглив и почитав различные форумы, мы нашли пару решений.

        1) Сократить период хранения данных в базе и использовать Housekeeper

        2) Разбить файл ibdata1 на несколько файлов.

        Как говорится начнем с конца, а именно с файла ibdata1.

        Файл ibdata1 является частью InnoDB, и хранит в себе данные таблиц, их индексы и другую служебную информацию. Со временем – этот файл может увеличиться до совсем неприличных размеров. Что бы упростить работу с этим файлов – можно разделить его, создав отдельный файл для каждой базы данных и таблицы, с помощью опции innodb_file_per_table.

        Перейдем к настройке:

        Как и раньше наш Zabbix крутится на ОС Ubuntu 14.10

        Узнаем какая у нас версия MySQL

        sudo mysql --version

        На выводе получаем

        mysql Ver 14.14 Distrib 5.5.41, for debian-linux-gnu (x86_64) using readline 6.3

        Начиная с версии 5.6 опция innodb_file_per_table включена по умолчанию, но т.к. у нас версия MySQL 5.5, то придется сделать некоторые манипуляции.

        Создадим директорию куда будут сохранятся бэкапы:

        sudo mkdir -p /data/mysql/backup

        Даем временные права на папку

        sudo chmod 777 /data/mysql/backup
        cd /data/mysql/backup

        Останавливаем сервис Zabbix

        sudo service zabbix-server stop

        Далее создадим резервную копию всех имеющихся баз данных.

        mysqldump -uroot -p -ERA --flush-privileges > backupmysql.sql

        Проверяем созданный файл.

        ls -la
        -rw-rw-r-- 1 zabbix zabbix 2971988984 июля 20 12:16 backupmysql.sql

        Смотрим какие базы данных у нас есть.

        mysql> show databases;
        +--------------------+
        | Database |
        +--------------------+
        | information_schema |
        | mysql |
        | performance_schema |
        | zabbix |
        +--------------------+
        4 rows in set (0.01 sec)

        Далее удаляем все базы данных, кроме mysql и information_schema.

        mysql -uroot -p -e "show databases" | grep -v Database | grep -v mysql| grep -v information_schema | gawk '{print "drop database " $1 "; select sleep(0.1);"}' | mysql -uroot -p

        Проверяем базы:

        mysql> show databases;
        +--------------------+
        | Database |
        +--------------------+
        | information_schema |
        | mysql |
        +--------------------+
        2 rows in set (0.00 sec)

        Все удалилось.

        Тормозим сервис MySQL.

        sudo service mysqld stop

        Далее удаляем старые файлы.

        sudo rm /var/lib/mysql/ibdata1
        sudo rm /var/lib/mysql/ib_logfile0
        sudo rm /var/lib/mysql/ib_logfile1

        Далее редактируем файл /etc/mysql/my.cnf

        sudo nano /etc/mysql/my.cnf

        В блоке [mysqld] добавляем строку:

        innodb_file_per_table = 1
        innodb_data_file_path=ibdata1:10M:autoextend:max:15G

        Тут указывается, что InnoDB должен создавать отдельные файлы .ibd и .frm для хранения информации и индексов для каждой таблица, вместо того, что бы хранить их все в одном файле

        Второй параметр – задаёт размещение файла ibdata1 (т.к. путь не указан – будет использоваться “хранилище” MySQL – /var/lib/mysql), с начальным размером в 10МБ, и автоматическим увеличением при необходимости до максимум 15ГБ

        Можно указать отдельный путь хранения файлов, например на новом дисковом пространстве:

        innodb_data_file_path=/data/ibdata1:2000M;/data/ibdata2:2000M /data/ibdata3:100M:autoextend:max:2000M

        Указанная команда создаст 3 файла ibdata1, ibdata2 по 2Гб каждый и файл ibdata3 размером 100Мб. Если этого будет мало, файл ibdata3 будет рости до 2Гб.

        Запускаем сервис MySQL.

        sudo service mysql start

        Восстанавливаем базы данных.

        sudo mysql -uroot -p < /data/mysql/backup/backupmysql.sql

        Запускаем утилитку MySQL_Upgrade, для генерации новой базы performance_schema.

        mysql_upgrade -uroot -p --force

        Теперь у нас каждая база хранится в отдельном файле, при этом мы освободили место.

        Теперь рассмотрим, как сократить период хранения данных в Zabbix.

        В GUI Zabbix переходим в каталог Administration->General->Housekeeping.

        Все значения переводим в 15, т.е. наши данные будут хранится в БД 15 дней, т.е. сама база будет очень медленно расти.

        zabbix_ibdata_1.jpg

        Необходимо, чтобы стояли все галки Enable internal housekeeping, таким образом сам Zabbix будет чистить базу MySQL от старых данных.

        Нужна консультация?

        Наши специалисты ответят на любой интересующий вопрос

        Задать вопрос
        Поделиться
        Назад к списку
        © 2021 Все права защищены.
        +7 (499) 113-65-73
        Заказать звонок
        sale@voipnotes.ru
        г. Москва 2-й Михайловский проезд 9
        Политика конфиденциальности
        Версия для печати
        © 2021 Все права защищены.
        Заказать звонок
        Написать сообщение