马哥linux培训视频讲的基于lvm快照实现备份,头一次听说,大家有使用过吗

作者: 小小295813080 2014-08-13 21:59:07
基于lvm快照实现备份
使用lvm快照提供几乎热备的物理备份+二进制日志

1、施加锁
mysql> flush tables with read lock; ##此时一定不能退出用户,可以另开一个终端
mysql> flush logs; ##滚动日志
mysql> show master status; ##记录二进制日志文件名字和位置,用于做时间点恢复
2、创建分区
# fdisk /dev/sda

# partprobe /dev/sda
3、创建一个逻辑卷用于存放数据,
# pvcreate /dev/sda5
# vgcreatemyvg /dev/sda5
# lvcreate -L 1G -n data myvg
# mke2fs -j /dev/myvg/data
# vim /etc/fstab ##挂载至/mydata/data
/dev/myvg/data /mydata/data
##这些可以事先创建好

4、创建快照卷
# lvcreate -L 200M -n data-snap -s -p r /dev/myvg/data
##快照卷和原卷在一个卷组上
-L:大小
-n:名字
-s:快照
-p:权限,这里为只读

mysql> unlock tables;

# mkdir /snap ##为快照卷建立挂载点
# mount -r /dev/myvg/data-snap /snap ##挂载快照卷
# cd /snap/
# tarjcf /tmp/all_data_`date -I`.tar.bz2 ./* ##对数据打包

# umount /snap ##卸载
# rm -rf /snap ##删除挂载点
# lvremove --force /dev/myvg/data-snap ##删除快照卷,数据打包后快照卷已不需要了

5、模拟故障:
mysql> drop jiaowu;

停掉mysql
servicemysqld stop

6、数据恢复
基于物理备份恢复数据时一定是冷备份,需要停止mysql服务
# servicemysqld stop
# cp /mydata/data/mysql-bin* /tmp ##主要备份和误操作时间点相近二进制日志文件
##如mysql-bin.00007
# cd /mydata/data
# rm -rf ./*
恢复数据:
tarxf /tmp/all_data_`date -I`.tar.bz2 -C ./
##把备份压缩的数据解压到当前目录下,需注意目录的属主和属组
重启mysqls服务,

7、接着用二进制日志做即时点恢复
# mysqlbinlog --stop-position=# /tmp/mysql-bin.00007 >/tmp/jiaowu.sql
进入mysql
mysql> set sql_log_bin=0; ##关闭二进制日志
mysql> source /tmp/jiaowu.sql
mysql> set sql_log_bin=1;

相关资讯