Не всегда все можно сделать по правильному, необходима практика и правильная начитанность и все это приходит с опытом. Я же стараюсь каждую свободную минуту что-то да разбирать, делать выводы, автоматизировать и т. д. У меня так просто сложилось, что хобби и работа это все едино и у меня нет проблем с придумыванием себе задач не важно где, работа или дом. И вот сейчас я хочу разобрать такой случай, к примеру я развернул на системе сервис базы данных 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.