Поиск по сайту:

Как изменить каталог данных MySQL/MariaDB по умолчанию в Linux


После установки компонентов стека LAMP на сервер CentOS/RHEL 7 вам, возможно, захочется сделать несколько вещей.

Некоторые из них связаны с повышением безопасности Apache и MySQL/MariaDB, тогда как другие могут быть применимы или нет в зависимости от наших настроек или потребностей.

Например, в зависимости от ожидаемого использования сервера базы данных мы можем захотеть изменить каталог data по умолчанию (/var/lib/mysql) в другое место. Это тот случай, когда ожидается, что такой каталог будет расти из-за интенсивного использования.

В противном случае файловая система, в которой хранится /var, может в какой-то момент разрушиться, что приведет к сбою всей системы. Другой сценарий изменения каталога по умолчанию — это когда у нас есть выделенный сетевой ресурс, который мы хотим использовать для хранения наших фактических данных.

По этой причине в этой статье мы объясним, как изменить каталог данных MySQL/MariaDB по умолчанию на другой путь на сервере CentOS/RHEL 7 и дистрибутивах Ubuntu/Debian.

Хотя мы будем использовать MariaDB, концепции, объясненные в этой статье, и шаги, предпринятые в этой статье, применимы как к MySQL, так и к MariaDB , если не указано иное.

Изменение каталога данных MySQL/MariaDB по умолчанию

Примечание. Мы предполагаем, что наш новый каталог данных — /mnt/mysql-data. Важно отметить, что владельцем этого каталога должен быть mysql:mysql.

mkdir /mnt/mysql-data
chown -R mysql:mysql /mnt/mysql-data

Для вашего удобства мы разделили весь процесс на 5 простых шагов:

Шаг 1. Определите текущий каталог данных MySQL

Для начала стоит определить текущий каталог данных с помощью следующей команды. Не думайте, что это по-прежнему /var/lib/mysql, поскольку в прошлом он мог быть изменен.

mysql -u root -p -e "SELECT @@datadir;"

После ввода пароля MySQL результат должен быть примерно таким.

Шаг 2. Скопируйте каталог данных MySQL в новое место.

Чтобы избежать повреждения данных, прежде чем продолжить, остановите службу, если она в данный момент запущена. Для этого используйте известные команды systemd:

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

Если служба была отключена, вывод последней команды должен быть следующим:

Затем рекурсивно скопируйте содержимое /var/lib/mysql в /mnt/mysql-data, сохраняя исходные разрешения и временные метки:

cp -R -p /var/lib/mysql/* /mnt/mysql-data

Шаг 3. Настройте новый каталог данных MySQL

Отредактируйте файл конфигурации (my.cnf), указав новый каталог данных (в данном случае /mnt/mysql-data).

vi /etc/my.cnf
OR
vi /etc/mysql/my.cnf

Найдите разделы [mysqld] и [client] и внесите следующие изменения:

Under [mysqld]:
datadir=/mnt/mysql-data
socket=/mnt/mysql-data/mysql.sock

Under [client]:
port=3306
socket=/mnt/mysql-data/mysql.sock

Сохраните изменения и перейдите к следующему шагу.

Шаг 4. Установите контекст безопасности SELinux в каталог данных.

Этот шаг применим только к RHEL/CentOS и его производным.

Добавьте контекст безопасности SELinux в /mnt/mysql-data перед перезапуском MariaDB.

semanage fcontext -a -t mysqld_db_t "/mnt/mysql-data(/.*)?"
restorecon -R /mnt/mysql-data

Затем перезапустите службу MySQL.

------------- On SystemD ------------- 
systemctl stop mariadb
systemctl is-active mariadb

------------- On SysVInit ------------- 
service mysqld stop
service mysqld status

OR

service mysql stop
service mysql status

Теперь используйте ту же команду, что и в Шаге 1, чтобы проверить местоположение нового каталога данных:

mysql -u root -p -e "SELECT @@datadir;"

Шаг 5. Создайте базу данных MySQL для подтверждения каталога данных

Войдите в MariaDB, создайте новую базу данных и затем проверьте /mnt/mysql-data:

mysql -u root -p -e "CREATE DATABASE tecmint;"

Поздравляем! Вы успешно изменили каталог данных для MySQL или MariaDB.

Краткое содержание

В этом посте мы обсудили, как изменить каталог данных на сервере MySQL или MariaDB, работающем в дистрибутивах CentOS/RHEL 7 и Ubuntu/Debian.

Есть ли у вас какие-либо вопросы или комментарии по поводу этой статьи? Не стесняйтесь, дайте нам знать, используя форму ниже – мы всегда рады услышать ваше мнение!