Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программное обеспечение Linux и FreeBSD (http://forum.oszone.net/forumdisplay.php?f=11)
-   -   [решено] zabbix - сильно выросла база (http://forum.oszone.net/showthread.php?t=287370)

pogo 02-09-2014 12:33 2397336

zabbix - сильно выросла база
 
Доброго времени суток.

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

vadblm 02-09-2014 16:40 2397454

Цитата:

Цитата pogo
закончилось место в /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 2397788

Спасибо за ответ.
К концу для всё же удалось, вроде как, победить эту напасть, делал следующее:
1. Смотрим информацию о таблицах базы
Код:

SHOW TABLE STATUS from <database_name>;
2. Ищем самые жирные таблицы (у меня это были alerts, history, history_uint) и удаляем их
Код:

USE <database_name>;
TRUNCATE TABLE <table_name>;

т.к. у меня база была без innodb_file_per_table
пришлось делать следующее (взято отсюда):
4. Делаем бекап базы
Код:

mysqldump -u admin -p <database_name> > /home/admin/dump.sql
5. Удаляем все базы кроме схемы (information_schema)
Код:

drop database <database_name>;
6. Останавливаем mysql
Код:

/etc/init.d/mysqld stop
7. Добавляем в /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_logfile1

9. Запускаем 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.sql

8.8. запускаем zabbix
Код:

/etc/init.d/zabbix start

vadblm 03-09-2014 19:43 2397988

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

fiasko90 24-08-2015 05:24 2545170

День добрый. Теме уже год, но всё же. Столкнулся с такой же проблемой по причине изначальной неправильной настройки. Файл 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 2545283

Цитата:

Цитата fiasko90
Почему vadblm, пишет, что вся история грохнута, парень ведь восстановил базу из дампа:"mysql -u admin -p <database_name> < /home/admin/dump.sql"? »

Pogo почистил таблицы с алертами, историей и т.д. перед бэкапом:
Цитата:

Цитата pogo
Ищем самые жирные таблицы (у меня это были alerts, history, history_uint) и удаляем их »

Цитата:

Цитата pogo
USE <database_name>; TRUNCATE TABLE <table_name>; »



Время: 06:17.

Время: 06:17.
© OSzone.net 2001-