Изменение местоположения каталога данных MySQL

Posted by

Не всегда все можно сделать по правильному, необходима практика и правильная начитанность и все это приходит с опытом. Я же стараюсь каждую свободную минуту что-то да разбирать, делать выводы, автоматизировать и т. д. У меня так просто сложилось, что хобби и работа это все едино и у меня нет проблем с придумыванием себе задач не важно где, работа или дом. И вот сейчас я хочу разобрать такой случай, к примеру я развернул на системе сервис базы данных MySQL, но в один момент моя база стала настолько большой и медлительной, что ее нужно перенести на более быстроходное место. Т.е. нужно переместить дефолтных каталог данных MySQL в другое место. Обычно дефолтный каталог MySQL это /var/lib/mysql по крайней мере в используемых у меня системах: Ubuntu Trusty. Так что все ниже указанные действия подходят для этой системы, но скорее всего и для других релизов в рамках системы Ubuntu.

ekzorchik@srv-host:~$ sudo tasksel install lamp-server

New password for the MySQL «root» user: 712mbddr@

Repeat password for the MySQL «root» user: 712mbddr@

В роли нового месторасположения каталога данных выступит cмонтированный диск отличный от системного: /dev/sdb1 → /media/data

Текущее расположения каталога данных MySQL в системе:

ekzorchik@srv-host:~$ mysql -u root -p712mbddr@ -e "select @@datadir;"

+-----------------+

| @@datadir |

+-----------------+

| /var/lib/mysql/ |

+-----------------+

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

ekzorchik@srv-host:~$ sudo service mysql stop

ekzorchik@srv-host:~$ sudo rm /var/lib/mysql/ib_logfile0

ekzorchik@srv-host:~$ sudo rm /var/lib/mysql/ib_logfile1

Теперь копирую содержимое дефолтного каталога /var/lib/mysql в новое месторасположение:

ekzorchik@srv-host:~$ sudo rsync -av /var/lib/mysql /media/data/

sent 30,445,492 bytes received 1,845 bytes 60,894,674.00 bytes/sec

total size is 30,431,160 speedup is 1.00

ekzorchik@srv-host:~$ sudo mv /var/lib/mysql /var/lib/mysql.backup

Теперь вношу изменения в файл конфигурации MySQL насчет нового месторасположения каталога данных:

ekzorchik@srv-host:~$ sudo nano /etc/mysql/my.cnf

было: datadir = /var/lib/mysql

стало: datadir =/media/data/mysql

Далее запускаю сервис MySQL:

ekzorchik@srv-host:~$ sudo service mysql start

mysql start/running, process 2230

ekzorchik@srv-host:~$ sudo netstat -tulpn | grep :3306

tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 2230/mysqld

Как видно из проделанных действий выше все просто, только на первой казалось что все сложно, но вот на самом деле. Хочу еще сказать, если не знаете как что-то делать то поднимите стенд (лабораторное окружение), опробуйте все то что хотите сделать. Это намного лучше будет чем пытаться исправить на боевом исполнении когда что-то пошло не так.

Теперь проверяю, каков дефолтный каталог данных MySQL:

ekzorchik@srv-host:~$ mysql -u root -p712mbddr@ -e "select @@datadir;"

+--------------------+

| @@datadir |

+--------------------+

| /media/data/mysql/ |

+--------------------+

Отлично, изменения применены, сейчас же можно удалить помеченный как бекапный дефолтный каталог /var/lib/mysq.backup:

ekzorchik@srv-host:~$ sudo rm -Rf /var/lib/mysql.backup/

Вот собственно и все действия как оказалось которые нужно проделать чтобы изменить каталог данных MySQL на системе Ubuntu Trusty. Ну вот опять я знаю чуточку больше чем до этой заметки, а пока я прощаюсь до новых встреч, с уважением автор блога — ekzorchik.