Как изменить место хранения баз данных MySQL
Недавно столкнулся с проблемой: на сервере стало заканчиваться свободное место. А тут срочно нужно было сделать копию одной увесистой базы данных ~2.5Gb. Пришлось искать варианты осуществления поставленной задачи.
Как обычно бывает, при покупке dedicated-сервера файловая система уже разбита на разделы, и не всегда, это сделано так, как Вам было бы удобно. Так в принципе было сделано и в моем случае. Под root было выделено ~10Gb, под /home около 920 Gb. Для проверки свободного места, я пользуюсь командой
Если количество свободного места в root приблизиться к нулю, настанет такой момент, когда MySQL’ю его не хватит для нормальной работы, в этом случае он загнется, и тем самым переведет все Ваши проекты в нерабочее состояние.
И так, если Вы столкнулись с такой же проблемой или хотите ее избежать заранее, взгляните на один из путей ее решения.
Для начала придется остановить MySQL
Я решил хранить данные в /home/lib/mysql. Создадим нужные директории.
После этого копируем в них все данные MySQL.
После этого нужно обязательно дать права доступа к этим директориям mysql
Теперь открываем через какой-нибудь редактор файл настроек mysql (я использую vi)
Находим и меняем datadir на свой путь к данным mysql:
После этого перезапускаем MySQL
Внимание! Если у Вас Ubuntu, необходимо исправить конфигурацию AppArmor:
Ищем в нем строки
/var/lib/mysql/** rwk
и меняем на
/home/lib/mysql/** rwk
Перезапускаем apparmor
Проверяем работоспособность. После того как убедились, что все работает. Можно удалить старые данные:
rm -Rf ./mysql/
Проверяем наличие свободного места
Количество свободного места увеличилось — наша миссия выполнена!
Наверное поэтому я не программист))) Слишком слижно, слишком!
Каждый занимается тем, что ему нравится В этом случае успех гарантирован.
Поскольку в Ubuntu используется такая штука, как AppArmor, перед запуском MySQL, нам необходимо внести некоторые коррективы в конфиг-фаил по работе с MySQL. Редактируем файл
vi /etc/apparmor.d/usr.sbin.mysqld
Ищем в нем строки
/var/lib/mysql/ r,
/var/lib/mysql/** rwk,
и меняем на
/home/lib/mysql/ r,
/home/lib/mysql/** rwk,
Перезапускаем apparmor
sudo /etc/init.d/apparmor restart
/etc/init.d/mysql start
Спасибо. В debian’e такой утилиты нет.