Мигриране на MySQL

Привет,

Работя по един проект, в който се наложи да отделим mysql на друг физически диск. Пред историята, виртуална машина със zabbix, която се обслужва от vmware хост. В даден момент се освободи хардуерен ресурс и реших да увелича малко ресурът и на виртуалната машина. Което пък ме накара да се замисля, дали не е добре да отделя и базата за zabbix. Машината е с debian 10, zabbix с apache и mysql, като всичко вирееше на един диск 50 gb.

В кратце планът е следния:

  • гася машината
  • добавям диск
  • спирам услугата mysql
  • създавам lvm върху новият диск
  • монтирам в /mnt
  • копирам /var/lib/mysql в /mnt
  • размонтиране, монтиране във /var/lib/mysql
  • старт на mysql и тест

Добавянето на вторият диск към виртуалната машина от vmware е елементарно, като първо обнових машината след което е загасих.

root@zabbix:~# apt-get update && apt-get upgrade -y && poweroff

Загасих zabbix server услугата, както и агента и mysql-a.

root@zabbix:~# systemctl stop zabbix-server mysql zabbix-agent

Новият диск, очаквано беше sdb(проверка може да бъде направена с fdisk -l). Както ме учил майстора на bash-a, колегата Стоян Маринов – винаги LVM!

fdisk /dev/sdb (p, n, enter, enter, enter, t - 8e)

Върху създаденият дял:

pvcreate /dev/sdb1
vgcreate mysql-vg01 /dev/sdb1
lvcreate -l 100%FREE -n lv-data mysql-vol01

За файлова система съм си харесал ext4.

mkfs.ext4 /dev/mapper/mysql--vg1-lv--mysql

Монтиране в /mnt/

mount /dev/mapper/mysql--vg1-lv--mysql /mnt/

За копиране използвам rsync, cp също е вариант. С параметър -arv.

rsync -arv /var/lib/mysql /mnt

След приключване на копирането, повтарям rsync за всеки случай, след което демонтирам /mnt.

umount  /mnt

Преди да монтирам дялът с новата информация на правилното място, то прейменувам /var/lib/mysql на /var/lib/mysql.bak и създавам директорията mysql.

mv /var/lib/mysql /var/lib/mysql.bak
mkdir /var/lib/mysql
mount /dev/mapper/mysql--vg1-lv--mysql /var/lib/mysql
chown -R -c mysql:mysql /var/lib/mysql

Една бърза проверка с df никога не е излишна.

root@zabbix:~#  df -hT
Filesystem                        Type      Size  Used Avail Use% Mounted on
udev                              devtmpfs  5.9G     0  5.9G   0% /dev
tmpfs                             tmpfs     1.2G  8.9M  1.2G   1% /run
/dev/mapper/zabbix--vg-root       ext4       67G   37G   27G  58% /
tmpfs                             tmpfs     5.9G     0  5.9G   0% /dev/shm
tmpfs                             tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs                             tmpfs     5.9G     0  5.9G   0% /sys/fs/cgroup
/dev/mapper/mysql--vg1-lv--mysql  ext4      492G   35G  432G   8% /var/lib/mysql
/dev/sda1                         ext2      472M   49M  399M  11% /boot
tmpfs                             tmpfs     1.2G     0  1.2G   0% /run/user/0

Стартирам mysql услугата.

systemctl start mariadb

Правя опит да достъпя mysql, посредством mysql -u root -p. Всичко е наред. За финал един reboot и очаквам zabbix-a да се вдигне сам, както и се случи.

Вашият коментар

Вашият имейл адрес няма да бъде публикуван. Задължителните полета са отбелязани с *

This site uses Akismet to reduce spam. Learn how your comment data is processed.