По умолчанию базы данных MySQL хранятся в папке /var/db/mysql. Нехватка места в папке /var, при работе с большими базами данных приведет к отказу некоторых служб, в том числе и mysqld. Так что имеет смысл перенести базы в другую файловую систему большего размера, например в /usr.
Создаем папки для данных и временных файлов:
#mkdir /usr/local/mysql
#cd /usr/local/mysql
#mkdir data
#mkdir tmp
Останавливаем сервер, предварительно остановив зависимые от него службы:
#/usr/local/etc/rc.d/mysql-server stop
Переносим базы данных:
#cp -R /var/db/mysql/* /usr/local/mysql/data
Задаем владельца и права доступа:
#chown -R mysql:mysql /usr/local/mysql && chmod -R 700 /usr/local/mysql
Переименовываем старую папку с базами данных:
#mv /var/db/mysql /var/db/mysql.old
Задаем новые пути в rc.conf через
#ee /etc/rc.conf:
mysql_dbdir=»/usr/local/mysql/data»
mysql_args=»—tmpdir=/usr/local/mysql/tmp»
Задаем новые пути к базам InnoDB в my.cnf
#ee /etc/my.cnf
Параметры уже есть в файле, ищем поиском и исправляем:
i
nnodb_data_home_dir = /usr/local/mysql/
innodb_log_group_home_dir = /usr/local/mysql/
Поиском проверяем наличие других ссылок на /var/db/mysql в файле my.cnf, исправляем если имеются.
Запускаем сервер:
#/usr/local/etc/rc.d/mysql-server start
Проверяем:
#pgrep mysqld
Проверяем файл ошибок сервера:
#cat /usr/local/mysql/data/$HOST.err
Если базы уже пострадали от нехватки свободного места, запускаем восстановление для баз в формате MyISAM:
#mysqlcheck -A —auto-repair
Проверяем функционирование клиентских приложений.
Удаляем данные в старом месторасположении:
#rm -R /var/db/mysql.old