使用的是虚拟机环境,先在虚拟机中添加一块儿新的硬盘。然后给硬盘分区fdisk -l #查看分区信息pvcreate mysql_pv /dev/sdb #创建物理卷vgcreate vgmysql /dev/sdb #创建卷组lvcreate -L 1024M -n lv0 vgmysql #创建逻辑卷mkfs.ext4 /dev/vgmysql/lv0 #格式化挂载mount /dev/vgmysql/lv0 /mnt #挂载逻辑卷service mysqld stop #关闭mysql服务cp -a /var/lib/mysql/* /mnt #将数据库数据拷贝到mnt目录下umount /dev/vgmysql/lv0 #移除挂载信息mount /dev/vgmysql/lv0 /var/lib/mysql/ #将逻辑卷与Mysql数据目录挂载service mysqld start #重启mysqld服务设置开机自动挂载,在/etc/fstab文件中配置。最好不要采用在 /etc/fstab直接指定分区(如/dev/sdb1)的方法,因为设备的顺序编码在关闭或者开启服务器过程中可能发生改变,例如/dev/sdb1可能会变成/dev/sdb2。推荐使用UUID来配置自动挂载数据盘。查询磁盘分区的UUIDblkid /dev/sdb1UUID=一串数字:要挂载的磁盘分区的UUID/var/lib/mysql:挂载目录ext4:分区格式为ext4defaults:挂载时所要设定的参数(只读,读写,启用quota等),输入defaults包括的参数有(rw、dev、exec、auto、nouser、async) 0:使用dump是否要记录,0为不需要,1为需要 2:2是开机时检查的顺序,boot系统文件为1,其他文件系统都为2,如不要检查就为0在给lv0做快照之前,先使用FLUSH TABLES和FLUSH TABLES WITH READ LOCK强行将所有OS的缓冲数据写入磁盘(类似于操作系统的sync命令),同时将数据库置为全局只读。快照完成之后,再使用UNLOCK TABLES解锁。然后只需要将快照进行挂载,复制其中数据,在复制完成之后删除该快照即可! /bin/bashTIMESTAMP=date +%Y%m%d%H%M%SHOSTNAME=“127.0.0.1"USERNAME=“root"PASSWORD=“12345678"MOUNT=/bin/mountUMOUNT=/bin/umountLVCREATE=/usr/sbin/lvcreateLVREMOVE=/usr/sbin/lvremoveMYSQL=/usr/bin/mysqlTAR=/bin/tarSNAP_SIZE=1024mSNAP_MYSQL=/dev/vgmysql/lv0MOUNT_POINT=/mntEXEC_MySQL=“FLUSH TABLES;FLUSH TABLES WITH READ LOCK;FLUSH LOGS;SNAP_MYSQL /dev/vgmysql/lv0UNLOCK TABLES;“echo “$EXEC_MySQL” | $MYSQL-u$USERNAME-p$PASSWORD-h$HOSTNAME$MOUNT $SNAP_MYSQL $MOUNT_POINTcd /root$TAR -zcvf ${TIMESTAMP}.tgz $MOUNT_POINT$UMOUNT $MOUNT_POINT$LVREMOVE -f $SNAP_MYSQL