Допустим, у меня есть раздел sda2
Прикреплено к /var
и он почти полон. У меня второй диск sdb
чей раздел sdb1
Я хочу установить как /var
.
Теперь, когда работающая служба (mysql) использует /var
все время есть способ переключиться без остановки службы?
Настройте второй сервер как подчиненный. Вы, вероятно, захотите настроить главный / главный, чтобы любой хост мог выполнять записи. Переместите IP на эту вторую машину. Теперь вы можете выполнять обслуживание на первой машине. Это минимизирует время простоя службы MySQL.
В первую очередь: Сделайте, как сказал свергнутый вагон, и настройте подчиненный сервер.
Но как второстепенный момент: вам не нужно перемещать MySQL (если только это не единственное, что занимает значительное место на /var
): Если у вас много мусора в /var/log
, /var/spool
, /var/www
и т.д., вы также можете переместить их в отдельные файловые системы.
На самом деле MySQL - это, вероятно, ваша 1000-фунтовая горилла на разделе, но если вам ДЕЙСТВИТЕЛЬНО не хватает места (и просто удаление других вещей не вариант), вы можете переместить его в качестве временной меры, пока вы включаете свой подчиненный сервер. .
Сожалею, что ответ отрицательный, нет. Если вы начнете перемещать файловую систему, пока mysql ее использует, ваша база данных будет полностью закрыта.
Согласившись с ответом JennyD, нет возможности сделать это, не выключив базу данных.
Однако, если сама база данных mysql не так велика, а скорость ввода-вывода системы достаточно высока, вы можете легко сделать это с минимальным временем простоя, просто связав несколько команд вместе и запустив их одновременно, использование будет низким. Я успешно проделал это несколько раз для критически важных баз данных mysql. Возможно, объявите об обслуживании и проведите несколько тестовых прогонов на тестовой системе, чтобы узнать, сколько времени это займет.
Что-то вроде:
/etc/init.d/mysql stop && mv /var/lib/mysql/database /mnt/newdisk/mysql/ && ln -s /mnt/newdisk/mysql/database /var/lib/mysql/database && /etc/init.d/mysql start
Это немного грубо, но эффективно. И практично во многих случаях (вероятно, во всех, кроме наиболее критически важных систем, которые "никогда не могут выйти из строя"). «&&» в команде гарантирует, что если предыдущая команда завершится неудачно, она не будет продолжена.