MySQL备份教程(4)使用LVM逻辑卷进行数据备份教程

TangLu MySQL 2021-04-03 5809 0

通过LVM快照可以快速的备份数据,相比传统的复制粘贴数据到其他分区来讲,快照的优势除了速度快之外还可以不受磁盘数据动态变化的影响,它直接保存一个分区当时状态的元数据。但是有一个要求就是MySQL数据所在分区需要是逻辑卷分区,否则需要先将数据迁移到逻辑卷分区上再进行备份操作,下面是一个完整的迁移数据与备份流程:

一、准备好磁盘并创建LVM快照:

1、首先创建好逻辑卷,可参考本站文章《Linux逻辑卷工具lvm的使用教程》

vgcreate mysql_vg /dev/sdb
lvcreate -L 20G -n mysql_lv mysql_vg
lvscan


2、将数据迁移到逻辑卷中

systemctl stop mysqld
mkfs.xfs /dev/mysql_vg/mysql_lv
mount /dev/mysql_vg/mysql_lv  /mnt/  #将逻辑卷进行临时挂载
cp -a /var/lib/mysql/* /mnt  #拷贝所有数据到新的逻辑卷分区中
umount /mnt  #取消临时挂载
echo "/dev/mysql_vg/mysql_lv   /var/lib/mysql  xfs defaults 0 0" > /etc/fstab  #将已有数据的逻辑卷永久挂载 
mount -a 
systemctl start mysqld


3、为数据库加全局读锁,然后给逻辑卷建立快照,建立快照会占用卷组的空间,通常给快照设置和逻辑卷一样大,避免快照生命周期太快。

mysql > flush tables with read lock;  #该终端不要退出,需另启终端执行后面的命令,最后再退出会话自动解锁

lvcreate -s -n mysql_snap -L 1G /dev/mysql_vg/mysql_lv


4、通过lvdisplay可以发现多了一个逻辑卷,这个就是一个快照卷。其中“Allocated to snapshot”和生命周期有关,lvm快照遵循写时复制的原理,会随着逻辑卷本身的不断写入而增多,当达到100%后快照会自我销毁。所以如果快照空间小于逻辑卷的话,逻辑卷可能还没写多少数据就达到了生命周期,这也是为什么第一步里说大小最好一致。


使用快照还原数据方法一:

1、首先删除逻辑卷上的数据以便测试

2、挂载快照到一个新建立的目录,进入目录后就可以看到之前给逻辑卷建立快照时上面的数据,然后把这些数据复制到逻辑卷上就可以了(如果逻辑卷是xfs格式需要先卸载掉逻辑卷后再挂载快照,ext格式的话则可以直接挂载)

使用快照还原数据方法二:


lvconvert --merge /dev/myvg/mysnap  #merge自动合并快照和逻辑卷,合并前需要先卸载逻辑卷分区和快照分区。合并后会看到合并进度,并且lvdisplay后发现多的那个逻辑卷已经不存在了


评论