注意:mysql数据需要保存在lvm逻辑卷上面
该备份方式是通过操作系统的LVM备份数据
操作方法:
1、如果数据库数据未保存在逻辑上,需要创建逻辑卷,并迁移数据
1.1分配磁盘
1.2创建LVM
pvcreate /dev/sdb
vgcreate vgmysql /dev/sdb
lvcreate -L 3G -n lv_mysql vgmysql
mkfs.xfs /dev/vgmysql/lv_mysql
1.3迁移数据
mount /dev/vgmysql/lv_mysql /mnt
cp -R /var/lib/mysql/* /mnt
umount /mnt
vi /etc/fstab
/dev/vgmysql/lv_mysql /var/lib/mysql xfs defaults 0 0
mount -a
1.4备份
加全局读锁(退出mysql,读锁就会失效,做快照需要新开一个终端执行)
FLUSH TABLES WITH READ LOCK;
记录二进制文件中的Position,以便后期从该节点恢复数据
SHOW MASTER STATUS;
或mysql -uroot -p’GaoYong123’ -e “SHOW MASTER STATUS;” > /root/Position.log
先开一个终端备份数据(或者在mysql中通过system命令执行系统相关的命令)
lvcreate -L 1G(快照大小) -s -n mysqlsnap1(快照名称) /dev/vgmysql/lv_mysql
或system lvcreate -L 1G -s -n mysqlsnap1(快照名称) /dev/vgmysql/lv_mysql
查看快照
lvscan
挂载
mount -o ro,nouuid /dev/vgmysql/mysqlsnap1 /mnt
拷贝数据
tar zcvf /root/mysql_
date +%F
_back.tar.gz *
取消挂载删除快照
umount /mnt
lvremove /dev/vgmysql/mysqlsnap1 -f
使用LVM通过脚本备份mysql数据
#! /bin/bash
#mysql通过LVM备份
#备份路径
back_dir=/backup/
date +%F
[ -d $back_dir ] || mkdir -p $back_dir
#创建快照
echo “FLUSH TABLES WITH READ LOCK(读锁);FLUSH LOGS(生成新的Position日志);;SYSTEM lvcreate -L 1G -s -n mysqlsnap1 /dev/vgmysql/lv_mysql(lv名);(创建快照)”|mysql -p’GaoYong123’ &>/dev/null
if [ $? -eq 0 ]
then
echo “快照mysqlsnap1创建成功,数据拷贝中.”
fi
#挂载快照
mount -o ro,nouuid /dev/vgmysql/mysqlsnap1 /mnt
#打包数据
tar zcvf $back_dir/mysql_
date +%F
_back.tar.gz /mnt/* &>/dev/null
if [ $? -eq 0 ]
then
echo “数据拷贝完成.”
fi
if [ $? -eq 0 ]
then
umount /mnt/ &>/dev/null
lvremove /dev/vgmysql/mysqlsnap1 -f &>/dev/null
echo “取消mnt挂载,并删除快照.”
fi