在mysql数据库环境中,如果数据库数据很重要,可以使用LVM卷管理的方式,通过对数据卷进行快照,得到快速备份的目的,
首先回顾一下LVM卷管理的几个概念:
- 物理磁盘PD,physical disk,也就是为系统添加的一块一块物理硬盘,没有分区没有进行格式化的,在系统中呈现的形态是/dev/vdb,/dev/sda等等
- 物理分区PP,physical partition,在物理磁盘上进行的分区,Linux系统中最多有4个主分区,一般建议是3个主分区加1个扩展分区,这里的PP也就是主分区,通过对PD进行fdisk分区,然后得到。在系统中呈现的形态是/dev/sda1,/dev/sda2等
- 物理卷PV,physical volume,这是组成LVM的基本组成单元,通过对物理分区PP进行转换,转换为PV,一个PP对应一个PV,转换前后,在系统中呈现的状态不变
- 物理卷组,VG,volume group,由多个PV组成的逻辑卷组,通过将多个PV,使用命令,合成一个VG,容量是这么多PV的和,在系统中呈现的状态是/dev/vg***,命名和自己设置有关
- 逻辑卷,LV,logical volume,在VG上创建的,可能是跨多个PV的逻辑空间
- 通过的逻辑卷进行格式化,创建文件系统fs,然后挂在给系统使用。
下面就是基于这种情况,做一下LVM卷划分。
- 假设现在给服务器添加了一块物理磁盘,大小为10G,第一步是要基于物理磁盘划分分区,fdisk /dev/sdd,划分3个大小1G的PP,在系统中分别为/dev/sdd1,/dev/sdd2,/dev/sdd3
- 基于3个PP制作PV,pvcreate /dev/sdd{1,2,3},得到三个PV
- 基于3个PV,制作VG,vgcreate /dev/mysqlvg /dev/sdd{1,2,3}
- 在VG上划分LV,lvcreate -L 1G -n mysqldata /dev/mysqlvg,划分的LV,大小为1G,名称为mysqldata
- 制作文件系统,mkfs.ext4 /dev/mysqlvg/mysqldata
- 将mysql数据tar打包出来,放在其他目录下,然后将LV挂在到对应目录中,mount /dev/mysqlvg/mysqldata /var/lib/mysql,然后将tar包解压到当前目录
- 修改目录属性,chown -r mysql.mysql /var/lib/mysql,删除lost+found目录
当将数据存放在LVM卷上之后,可以通过LVM卷的快照功能,对数据卷进行快照,然后对快照内容进行备份,从而达到对mysql数据库的备份操作。创建快照的步骤如下:
- 对数据库进行读锁锁定,flush tables with read lock;
- 然后开始快照卷,lvcreate -s -L 1G -n snaplv /dev/mysqlvg/mysqldata,对/dev/mysqlvg/mysqldata进行快照操作,-s就是快照,-L是大小,-n是命名
- 快照卷创建成功后,就可以unlock tables,然后将快照卷挂载到其他目录下,这个快照卷,就是对某一个时刻点,mysql数据库的全量备份。