LVM-snapshot:基于逻辑卷快照备份lvn本身不做备份,基于lvn做备份,仅能够保存快照后在原件数据对于mysql配置文件,已经于mysql相关的OS配置文件在每次修改后都应该直接备份
-
快照备份器请求全局锁:
MariaDB [(none)]> FLUSH TABLES WITH READ LOCK; Query OK, 0 rows affected (0.00 sec)
- 如果是innodb则不同
1,myisa在执行fush时会将数据直接到磁盘,innodb执行时可能在事务日志中仍然存在数据,并未同步到磁盘,因此,事务日志跟数据文件必须在同一个卷上,否则数据完整无法保证2,创建快照之前,请求mysql全局锁,在快照创建完成后释放锁3,请求全局锁完成之后,做一次日志滚动:做二进制日志文件及记录事件位置
1,锁表
FLUSH TABLES WITH READ LOCK;
滚日志
FLUSH LOGS;
2,查看事件位置
SHOW MASTER STATUS;
将master status位置保存
mkdir /backup/
mysql -e 'show master status' >backup/binlog.pos
3,创建快照卷对/dev/myvg/mydata,创建100M大小,名称为mydata-snap的快照,
lvcreate -L 100M -s -n mydata-snap -p r /dev/myvg/mydata
4,释放全局锁
UNLOCK TABLES;
5,将快照挂载到mnt下
mount /dev/myvg/mydata-snap /mnt -o ro
6,复制data/ 到backup下
cp data/ /backup/data-2015-9-4
cp /mnt/data/ /backup/data-2015-9-4
7,备份完成,删除快照卷先卸载
umount /mnt
删除快照卷
lvremove /dev/myvg/mydata-snap
备份完成!
- 备份还原
*二进制日志需要存在1,恢复将backup/backup/data-2015-9-4/*
复制到/mydata/data -a
即可2,打开备份的master status
文件从备份那一刻开始
mysqlbinlog --start-position=369 /mydata/binlog/master-bin.000009 | mysql
3,还原数据后,修改权限及属主属组等,并启动mysql
其他
- mylvbackup:
mylvbackup是一个perl脚本,快速基于lvm备份的mysql