Как изменить каталог данных MariaDB на новое место в CentOS 7

Вступление

Базы данных со временем растут, иногда перерастая пространство в файловой системе. Вы также можете столкнуться с конфликтами ввода-вывода, если они расположены в том же разделе, что и остальная часть операционной системы. RAID, сетевое хранилище и другие устройства могут обеспечивать избыточность и другие желательные функции. Независимо от того, добавляете ли вы больше места, оцените способы оптимизации производительности или хотите воспользоваться другими функциями хранения, это руководство поможет вам переместить каталог данных MariaDB.

Предпосылки

Для завершения этого руководства вам понадобится:

  • * Сервер CentOS 7 с пользователем без полномочий root с правами + sudo + и установленной MariaDB *. Подробнее о том, как настроить пользователя с этими привилегиями, вы можете узнать из нашего руководства Initial Server Setup с CentOS 7. , Если вы еще не установили MariaDB, вам может помочь руководство Как установить MariaDB в CentOS 7. ,

В этом примере мы перемещаем данные на блочное устройство хранения, смонтированное в + / mnt / volume-nyc1-01 +. Вы можете узнать, как его настроить, в руководстве How Use Block Storage on DigitalOcean.

Независимо от того, какое хранилище вы используете, это руководство может помочь вам переместить каталог данных в новое место.

Шаг 1 - Перемещение каталога данных MariaDB

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

mysql -u root -p

При появлении запроса укажите корневой пароль MariaDB. Затем в приглашении + mysql выберите каталог данных:

select @@datadir;
Output+-----------------+
| @@datadir       |
+-----------------+
|  |
+-----------------+
1 row in set (0.00 sec)

Эти выходные данные подтверждают, что MariaDB настроен на использование каталога данных по умолчанию + / var / lib / mysql /, +, так что это каталог, который нам нужно переместить. Как только вы подтвердите это, введите + exit + и нажмите «ENTER», чтобы покинуть монитор:

exit

Чтобы обеспечить целостность данных, мы отключим MariaDB, прежде чем мы действительно внесем изменения в каталог данных:

sudo systemctl stop mariadb

+ systemctl + не отображает результат всех команд управления службами, поэтому, если вы хотите быть уверенным в успехе, используйте следующую команду:

sudo systemctl status mariadb

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

Output. . .
Dec 16 18:29:26 mysql systemd[1]: Stopped MariaDB database server.

Теперь, когда сервер выключен, мы скопируем существующий каталог базы данных в новое место с помощью + rsync +. Использование флага + -a + сохраняет разрешения и другие свойства каталога, в то время как + -v + предоставляет подробный вывод, чтобы вы могли следить за ходом процесса.

sudo rsync -av /var/lib/mysql

Как только + rsync + завершится, переименуйте текущую папку с расширением .bak и сохраняйте ее до тех пор, пока мы не подтвердим, что перемещение было успешным. Переименовывая его, мы избежим путаницы, которая может возникнуть в файлах как в новом, так и в старом месте:

sudo mv /var/lib/mysql /var/lib/mysql.bak

Теперь мы готовы обратить наше внимание на конфигурацию.

Шаг 2 - Указание на новое местоположение данных

MySQL имеет несколько способов переопределить значения конфигурации. По умолчанию для + datadir установлено значение` + / var / lib / mysql + в файле + / etc / my.cnf`. Отредактируйте этот файл, чтобы отразить новый каталог данных:

sudo vi /etc/my.cnf

Найдите строку, которая начинается с + datadir = +, и измените путь, который следует, чтобы отразить новое местоположение. Кроме того, поскольку сокет ранее находился в каталоге данных, нам необходимо обновить его до нового местоположения:

/etc/my.cnf

[mysqld]
. . .
datadir=/mysql
socket=/mysql/mysql.sock
. . .

После обновления существующих строк нам нужно добавить конфигурацию для клиента + mysql. Вставьте следующие настройки внизу файла, чтобы директивы не разделялись в блоке + [mysqld] + и над строкой + include +:

/etc/my.cnf

!includedir /etc/my.cnf.d

Когда вы закончите, нажмите + ESCAPE +, затем введите +: wq! +, Чтобы сохранить и выйти из файла.

Шаг 3 - Перезапуск MariaDB

Теперь, когда мы обновили конфигурацию для использования нового местоположения, мы готовы запустить MariaDB и проверить нашу работу.

sudo systemctl start mariadb
sudo systemctl status mariadb

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

mysql -u root -p

Посмотрите на значение для каталога данных еще раз:

select @@datadir;
Output+----------------------------+
| @@datadir                  |
+----------------------------+
|  |
+----------------------------+
1 row in set (0.01 sec)

Введите + exit +, чтобы покинуть монитор.

Теперь, когда вы перезапустили MariaDB и подтвердили, что он использует новое местоположение, воспользуйтесь возможностью, чтобы убедиться, что ваша база данных полностью работоспособна. После проверки целостности любых существующих данных вы можете удалить каталог данных резервных копий с помощью + sudo rm -Rf / var / lib / mysql.bak +.

Заключение

В этом руководстве мы переместили каталог данных MariaDB в новое место. Хотя мы использовали устройство блочного хранилища, приведенные здесь инструкции должны подходить для переопределения местоположения каталога данных независимо от базовой технологии.

Поскольку MariaDB разработан как замена для замены MySQL, вы можете узнать больше об управлении каталогами данных из следующих разделов официальной документации MySQL:

Related