Войти

Показать полную графическую версию : [решено] zabbix - сильно выросла база


pogo
02-09-2014, 12:33
Доброго времени суток.

Возникла проблема, на сервере мониторинга на котором развернут zabbix 2.2.5-1.el6 на centos, закончилось место в /var из-за mysql базы zabbix'а, которая весит 44Gb.
Подскажите пожалуйста, что с этим можно сделать? Как можно ужать базу или может в конфиге я пропустил какой-то параметр, который должен это делать?

vadblm
02-09-2014, 16:40
закончилось место в /var из-за mysql базы zabbix'а, которая весит 44Gb. »
Ну, это ещё не так много. У меня вот 120 гб. (70+ хостов, на каждом 120+ айтемов).
Больше всего места занимают и сильно растут таблицы history и trends. Они чистятся встроенным механизмом housekeeper, но по умолчанию данные хранятся год, так что вам придётся сделать две вещи — прикинуть, сколько вам места понадобится и переделать сервер, исходя из этого, а также разобраться, какой период вам нужно хранить упомянутую историю и тренды. Это настраивается в Administration→General→Housekeeping.

Mysql у вас какой движок? Если innoDB без innodb_file_per_table, то вам не получится сократить размер базы. :( Придётся переделывать сервер c innodb_file_per_table, почистить таблицы истории и трендов и оптимизировать их.

pogo
03-09-2014, 12:56
Спасибо за ответ.
К концу для всё же удалось, вроде как, победить эту напасть, делал следующее:
1. Смотрим информацию о таблицах базы
SHOW TABLE STATUS from <database_name>;2. Ищем самые жирные таблицы (у меня это были alerts, history, history_uint) и удаляем их
USE <database_name>;
TRUNCATE TABLE <table_name>;т.к. у меня база была без innodb_file_per_table
пришлось делать следующее (взято отсюда (http://dba.stackexchange.com/questions/8982/what-is-the-best-way-to-reduce-the-size-of-ibdata-in-mysql)):
4. Делаем бекап базы
mysqldump -u admin -p <database_name> > /home/admin/dump.sql5. Удаляем все базы кроме схемы (information_schema)
drop database <database_name>;6. Останавливаем mysql
/etc/init.d/mysqld stop7. Добавляем в /etc/my.cfg
innodb_file_per_table
innodb_flush_method=O_DIRECT
innodb_log_file_size=1G
innodb_buffer_pool_size=4Gтут точно по всем параметрам не читал, взял из линки, если есть замечания, буду раз услышать их.
8. Удаляем файлы ibdata1, ib_logfile0 и ib_logfile1
rm /var/lib/mysql/ibdata1
rm /var/lib/mysql/ib_logfile0
rm /var/lib/mysql/ib_logfile19. Запускаем mysql
/etc/init.d/mysqld startфайлы ibdata1, ib_logfile0 и ib_logfile1 должны создаться
8.7. Заливаем дамп обратно в базу предварительно создав её
mysqladmin -u admin -p create <database_name>
mysql -u admin -p <database_name> < /home/admin/dump.sql8.8. запускаем zabbix
/etc/init.d/zabbix start

vadblm
03-09-2014, 19:43
Сурово. Грохнули историю всю. Ну да ладно. Не забудьте подкрутить houskeeping, а то через определённое время придётся повторять процидурку. :)

fiasko90
24-08-2015, 05:24
День добрый. Теме уже год, но всё же. Столкнулся с такой же проблемой по причине изначальной неправильной настройки. Файл ibdata1 разросся до больших размеров. Дисковое пространство добавлено, /var/lib/mysql примонтирован, всё работает. Housekeeping не настроен, innodb_file_per_table нет. Сейчас думаю разделить этот файл, чтобы он больше не рос, а данные писались в разные файлы. Историю мониторинга мне необходимо оставить. С данной задачей сталкиваюсь впервые. Вариант pogo должен подойти? Почему vadblm, пишет, что вся история грохнута, парень ведь восстановил базу из дампа:"mysql -u admin -p <database_name> < /home/admin/dump.sql"?

User001
24-08-2015, 12:03
Почему vadblm, пишет, что вся история грохнута, парень ведь восстановил базу из дампа:"mysql -u admin -p <database_name> < /home/admin/dump.sql"? »
Pogo почистил таблицы с алертами, историей и т.д. перед бэкапом:
Ищем самые жирные таблицы (у меня это были alerts, history, history_uint) и удаляем их »
USE <database_name>; TRUNCATE TABLE <table_name>; »




© OSzone.net 2001-2012