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

Вступление

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

Предпосылки

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

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

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

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

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

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

mysql -u root -p

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

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

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

exit

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

sudo systemctl stop mysqld

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

sudo systemctl status mysqld

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

Output. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community 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

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

/etc/my.cnf

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

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

/etc/my.cnf

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

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

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

sudo systemctl start mysqld
sudo systemctl status mysqld

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

mysql -u root -p

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

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

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

Заключение

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

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

Related