Привет,
Работя по един проект, в който се наложи да отделим 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 да се вдигне сам, както и се случи.