Перенос каталога данных MySQL на новое место

В этой статье я опишу процесс переноса каталога данных MySQL в отдельное место, а именно на рейд 10 уровня из 4 дисков, это позволит увеличить производительность.

Возьму сервер HP DL360p Gen8 с рейд контроллером Smart Array P420i, также возьму 6 SSD дисков Samsung 883 DCT Enterprise 240GB 2.5″ SATA III V-NAND MLC (MZ-7LH240NE).
Из двух дисков создам зеркальный рейд 1 и на него установлю операционную систему Ubuntu 18.04, из остальных 4 SSD создам рейд 10 уровня, который будет использоваться только для базы данных.

Переключимся на root пользователя:

sudo -i

Остановим MySQL сервер:

systemctl stop mysql
systemctl status mysql

Сделаем копию файлов баз данных:

mkdir /var/lib/mysql_ixnfo.com
cp -r /var/lib/mysql/* /var/lib/mysql_ixnfo.com/

Удаляем файлы:

rm /var/lib/mysql/* -Rf

Посмотрим список доступных дисковых систем:

fdisk -l
fdisk -l | grep '/dev/sd'

У меня отобразилось:

Disk /dev/sda: 223.6 GiB, 240021504000 bytes, 468792000 sectors
/dev/sda1   2048      4095      2048     1M BIOS boot
/dev/sda2   4096 468789247 468785152 223.5G Linux filesystem
Disk /dev/sdb: 447.1 GiB, 480047095808 bytes, 937591984 sectors

Создам раздел на втором рейде:

fdisk /dev/sdb
n
p
1
Enter
Enter
w
fdisk -l | grep '/dev/sd'
mkfs.ext4 /dev/sdb1
df -h

Монтируем в директорию с базами данных только что созданный раздел:

mount /dev/sdb1 /var/lib/mysql

Посмотрим его UUID:

sudo blkid

У меня отобразилось:

/dev/sdb1: UUID="54bf0d45-c190-4185-968d-b440537122bd" TYPE="ext4" PARTUUID="d2090c9f-01"

Для автоматического монтирования при запуске операционной системы откроем файл /etc/fstab в текстовом редакторе (в редакторе nano клавиши Ctrl+X для выхода и y/n для сохранения или отмены изменений):

nano /etc/fstab

Я добавил:

UUID=54bf0d45-c190-4185-968d-b440537122bd /var/lib/mysql ext4 defaults 0 0

Из ранее сделанной копии копируем файлы баз данных на смонтированный рейд 10:

cp -r /var/lib/mysql_ixnfo.com/* /var/lib/mysql/

Установим правильного владельца и права:

chown mysql:mysql /var/lib/mysql/ -R
chmod 755 /var/lib/mysql

Проверим:

ls -l /var/lib/mysql/

Запускаем MySQL сервер:

systemctl start mysql
systemctl status mysql

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

reboot

После перезапуска заметил стандартную директорию для потерянных файлов, я ее удалил и перезапустил MySQL:

rm -d /var/lib/mysql/lost+found
systemctl restart mysql

При желании можно смонтировать рейд в другую директорию и указать в my.cnf путь к ней:

[mysqld]
datadir=/mnt/sdb1/mysql
socket=/mnt/sdb1/mysql/mysql.sock
log-bin=/mnt/sdb1/mysql/mysql-bin
[mysqld_safe]
datadir=/mnt/sdb1/mysql

Посмотреть какая директория указана можно так:

mysql -u root -p
select @@datadir;

Скопируем файлы используя rsync:

rsync -av /var/lib/mysql /mnt/sdb1/mysql
mv /var/lib/mysql /var/lib/mysql.mybakup

Укажем новую директорию для apparmor в файле /etc/apparmor.d/tunables/alias:

alias /var/lib/mysql/ -> /mnt/sdb1/mysql/,

И перезапустим его:

systemctl restart apparmor

Смотрите также мои статьи:
Обновление прошивки Smart Array P420i
Управление разделами диска в Ubuntu используя fdisk

Оставьте комментарий

Добавить комментарий