База данных MariaDB 10 при установке на Ubuntu по умолчанию пишется в папку /var/lib/mysql. Со временем база растёт и поднимается вопрос переноса её на другой раздел диска. Перенесём базу данных в /opt/mysql/mysql.
Проверим где находится текущая БД MariaDB.
mysql -u root -p
select @@datadir;
Видим, что файлы базы находятся в /var/lib/mysql/. Чтобы закрыть командную строку MariaDB, введите exit.
exit
Останавливаем сервер MariaDB:
systemctl stop mysql
Алиасы mysql, mariadb, mysqld, mysql.service, mariadb.service, mysqld.service.
Проверяем статус, мы должны убедиться, что сервер MariaDB остановлен:
systemctl status mysql
Видим — Status: "MariaDB server is down".
Перемещаем каталог данных MariaDB
Создадим папку /opt/mysql, в неё будем переносить папку с данными MariaDB.
С помощью rsync переносим MariaDB в другую папку:
rsync -av /var/lib/mysql /opt/mysql
Флаг –a сохраняет привилегии и другие свойства каталога. Флаг –v предоставляет подробный вывод. Теперь внимание, папка /var/lib/mysql теперь находится по адресу /opt/mysql/mysql (ну так мне было нужно).
Переименуем старую папку /var/lib/mysql, сохраним её на случай сбоя:
mv /var/lib/mysql /var/lib/mysql.bak
По умолчанию путь настроен в файле /etc/mysql/mariadb.conf.d/50-server.cnf, редактируем.
vim /etc/mysql/mariadb.conf.d/50-server.cnf
Найдите строку datadir= и укажите в ней путь к новому каталогу данных /opt/mysql/mysql.
AppArmor
Настроим AppArmor, чтобы предоставить MariaDB право на изменение нового каталога. Редактируем файл /etc/apparmor.d/tunables/alias:
vim /etc/apparmor.d/tunables/alias
Добавим правило:
alias /var/lib/mysql/ -> /opt/mysql/mysql/,
Перезапустим AppArmor:
systemctl restart apparmor
Запуск MariaDB
MariaDB при запуске проверяет наличие директории /var/lib/mysql/mysql.Создадим пустую папку:
mkdir /var/lib/mysql/mysql -p
Запускаем MariaDB:
systemctl start mysql
systemctl status mysql
Проверяем текущий путь:
mysql -u root -p
select @@datadir;
Путь теперь /opt/mysql/mysql/.
Удаление ненужных файлов
rm -R /var/lib/mysql.bak