Назад | Перейти на главную страницу

Варианты уменьшения размера базы данных MySQL

У меня есть база данных MySQL 5.0 на 88,9 ГБ, которая находится на диске 90 ГБ. База данных содержит несколько таблиц MyISAM для отчетов об использовании нашей (настраиваемой) системы. Данные представляют собой агрегированные по дате данные, которые по сути являются журналами веб-сервера.

Я думал о преобразовании больших таблиц в механизм хранения MERGE. Идея заключалась в том, что я мог переместить старые данные на другой диск. Однако я никогда раньше этого не делал и немного нервничаю по поводу тестирования моей производственной базы данных.

И, конечно, у меня не хватает времени. Мне очень скоро придется обработать все данные отчетности за последний месяц. Поэтому установка диска большего размера на данный момент не вариант.

У кого-нибудь есть совет или опыт, которыми можно поделиться по уменьшению размера этой базы данных?

У вас есть индексы, которые вы на самом деле не используете?

Хорошо ... это сообщение OOOOLD .. но .. я думаю, что если он будет полным, то лучше

Когда мне нужно переместить базу данных mysql в другой раздел, я делаю:

/etc/init.d/mysql stop
rsync -avz /var/lib/mysql/ /mnt/anotherdisk/mysql/
mv /var/lib/mysql/ /var/lib/mysql_original/
ln -s /var/lib/mysql/ /mnt/anotherdisk/mysql/
/etc/init.d/mysql start

Через один день / неделю / месяц / WhenIRememberOrCan я делаю резервную копию / var / lib / mysql_original /, а затем удаляю папку.

Если вы уже подумываете о перемещении данных в более крупный раздел, вы можете выборочно переместить большие таблицы и символически связать их обратно в каталог базы данных. У этого есть некоторые недостатки, но они отмечены в документации. Это имеет то преимущество, что от него легко отказаться (при условии, что ваши таблицы все еще умещаются в старом разделе).

Символические ссылки в MySQL

Если большая часть ваших данных представляет собой агрегированные журналы, у вас есть три варианта:

  1. Просмотрите свой алгоритм агрегации, чтобы узнать, рассчитан ли он на рост вместе с данными или на постоянный размер.
  2. Получите больше места для хранения.
  3. Прекратите хранить журналы в базе данных.

Готовы ли вы переписать приложение?

OPTIMIZE TABLE перестроит таблицу, чтобы удалить "дыры". Это может сэкономить довольно много места или вовсе не сэкономить, в зависимости от того, насколько они оптимальны. Однако на большом столе это происходит очень медленно, И ИСПОЛЬЗУЕТСЯ ОЧЕНЬ МНОГО ВРЕМЕННОГО ПРОСТРАНСТВА.

Удаление индексов, добавление PACK_KEYS к таблицам, это уменьшит размер индексов, но, опять же, это требует перестроения И ИСПОЛЬЗУЕТ ВРЕМЕННОЕ ПРОСТРАНСТВО.

Вы смотрели на размер индексов по сравнению с данными?

Похоже, ваш сервер настолько заполнен, что вы действительно не сможете выполнять какую-либо работу.

РЕШЕНИЕ: используйте мониторинг, чтобы гарантировать, что в будущем ваш сервер никогда не будет заполнен до такой степени, поскольку к тому времени, когда вы достигнете этой стадии, это будет безнадежным делом.

В краткосрочной перспективе перенесите всю партию в более крупный ящик.

Я предполагаю, что вы уже пробовали это, но есть ОПТИМИЗАЦИЯ ТАБЛИЦЫ команда, которая может сжимать их в зависимости от того, как они использовались.

если вы не возражаете, чтобы ваши таблицы стали доступны только для чтения, вы можете использовать MyISAM PACK

http://dev.mysql.com/doc/refman/4.1/en/myisampack.html