
У меня сейчас серьезная проблема. Диск VPS заполнен, база данных MySQL неожиданно выросла, и я не могу купить больше места на хостинге, так как оно уже заполнено.
Служба MySQL больше не может быть запущена из-за нехватки места на диске.
Есть ли способ выполнять запросы к базе данных при выключенном сервисе? Но, полагаю, для этого потребуются какие-то сторонние инструменты, а место на сервере не позволяет этого сделать. Если я не ошибаюсь, даже если я удалю некоторые старые данные из базы данных, она все равно не уменьшится.
Я даже не могу загрузить все файлы базы данных на свой компьютер и попытаться восстановить их там, потому что они настолько огромны, что у меня нет диска, на который они могли бы поместиться.
Какие у меня сейчас варианты? Есть ли у кого-нибудь идеи, что мне делать дальше?
решение1
MySQL не работает как root, так что у вас, вероятно, все еще есть «зарезервированное» свободное пространство. Вы можете вернуть его: tune2fs -m 0 /dev/whatever
.
Вы не сказали, какая у вас ОС, но, вероятно, есть место, которое вы можете освободить в другом месте. Если у вас Ubuntu, попробуйте apt clean
. Удалить файлы журналов из /var/log/*
, и т. д.
Если вы все еще можете что-то установить, установите ncdu
и сделайте это ncdu -x /
, чтобы получить простой обзор того, что следует удалить.
Также, трюк, который я часто использую, это иметь где-то фиктивный файл в несколько сотен МБ, который можно удалить, если вы столкнетесь с такой ситуацией. Это, и мониторинг, конечно.
Как только у вас появится место, вам придется запустить OPTIMIZE TABLE
на проблемной таблице. Однако это приведет к пересозданию, поэтому для этого вам понадобится дополнительное место. Кроме того, для этого требуется запуск с innodb_file_per_table
, что в настоящее время является значением по умолчанию.