Как изменить каталог данных MySQL на новое место с помощью символической ссылки

Вступление

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

Приведенные здесь указания подходят для серверов, на которых запущен один экземпляр MySQL. Если у вас есть несколько экземпляров, руководство https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location-on-ubuntu-16- 04 [Как переместить каталог данных MySQL в новое местоположение в Ubuntu 16.04] может помочь вам с инструкциями для явного изменения местоположения через параметры конфигурации.

Предпосылки

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

  • * Сервер Ubuntu 16.04 с пользователем без полномочий root с привилегиями + sudo + *. Вы можете узнать больше о том, как настроить пользователя с этими привилегиями, в нашей Initial Server Setup с Ubuntu 16.04 руководство.

  • * Сервер MySQL *. Если вы еще не настроили его, руководство https://www.digitalocean.com/community/tutorials/how-to-install-mysql-on-ubuntu-16-04 как установить MySQL в Ubuntu 16.04] могу помочь тебе.

  • * Резервное копирование ваших баз данных *. Если вы не работаете с новой установкой MySQL, вы должны убедиться, что у вас есть резервная копия ваших данных. Руководство How Резервное копирование баз данных MySQL на Ubuntu VPS может помочь вам в этом.

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

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

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

Чтобы обеспечить целостность данных, мы отключим MySQL:

sudo systemctl stop mysql

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

sudo systemctl status mysql

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

Output. . .
Jul 18 11:24:20 ubuntu-512mb-nyc1-01 systemd[1]: Stopped MySQL Community Server.

После выключения сервера мы переместим существующий каталог базы данных в новое место:

sudo mv /var/lib/mysql

Далее мы создадим символическую ссылку:

sudo ln -s  /var/lib/mysql

При наличии символической ссылки кажется, что сейчас самое время снова запустить MySQL, но есть еще одна вещь, которую нужно настроить, прежде чем мы сможем сделать это успешно.

Шаг 2 - Настройка правил контроля доступа AppArmor

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

Чтобы добавить псевдоним, отредактируйте файл AppArmor + alias +:

sudo nano /etc/apparmor.d/tunables/alias

Внизу файла добавьте следующее правило псевдонима:

/etc/apparmor.d/tunables/alias

. . .
alias /var/lib/mysql/ -> ,
. . .

Чтобы изменения вступили в силу, перезапустите AppArmor:

sudo systemctl restart apparmor

Теперь мы готовы запустить MySQL.

sudo systemctl start mysql
sudo systemctl status mysql

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

Заключение

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

Этот подход подходит, только если вы используете один экземпляр MySQL. Если вам нужно поддерживать несколько экземпляров MySQL, работающих на одном сервере, https://www.digitalocean.com/community/tutorials/how-to-move-a-mysql-data-directory-to-a-new-location- on-ubuntu-16-04 [Как переместить каталог данных MySQL в новое местоположение в Ubuntu 16.04] может помочь вам.

Related