LVM快照备份原理图mysql
2.1 LVM: 几乎热备、物理备份,加读锁,直接备份原卷,那么你就得等备份操做完成后才能解锁.sql
2.2而LVM快照就是备份完成就能够解锁,速度极快,这就是为何是几乎热备的缘由数据库
2.3前提:innoDB引擎的事务日志必须跟数据文件在同一个LV卷上;ibdata1 ib_logfile0 ib_logfile1若分开则建立快照时间点不一致,备份数据不一致,建立备份无心义。快照只能对逻辑卷LVM进行备份,而且只能对同一个卷组的逻辑卷进行备份。innoDB最好每表一空间缓存
备份操做步骤:app
1.创建lvm卷组myvg-mydata,挂载到/mydata/data下ide
[root@station253 ~]# lvcreate -L 2G -n mydata /dev/mapper/myvg-mydataspa
Logical volume "mydata" created日志
2.初始化Mysql将数据目录指向/mydata/data并创建数据库blog
3.同步日志并加读锁,不要关闭终端,不然锁将失效,滚动日志事务
mysql> SET sync_binlog=1; 未提交事务日志马上写入文件
mysql> SET sql_log_bin=0; 关闭二进制日志
mysql> FLUSH TABLES WITH READ LOCK; 全部表加读锁
mysql> SHOW MASTER STATUS;
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB |
| mysql-bin.000002 | 1473 | | |
4. 新建终端为数据所在的卷建立快照:目的卷大小为原卷2倍,目标卷与原卷在同一卷组上;mysqldump是重读sql文件重执行极慢,lvm snap是在底层文件系统级别复制块,速度极快;
[root@station253 ~]# lvcreate -L 4G -n mydata-snap -p r -s /dev/mapper/myvg-mydata
Logical volume "mydata-snap" created
5.迅速释放读锁
mysql> UNLOCK TABLES;
6.挂载快照,拷备出来,卸载快照,删除快照
[root@station253 ~]# mount /dev/mapper/myvg-mydata-snap /snap
[root@station253 ~]# cp -aR /snap/* /backup
[root@station253 ~]# umount /snap
[root@station253 ~]# lvremove/dev/mapper/myvg-mydata-snap
7.模拟数据库崩溃,注意快照回来修正数据库属组属主,不然mysqld没法启动
[root@station253 ~]# servivce mysqld stop
[root@station253 ~]# rm -R /mydata/data/*
[root@station253 ~]# cp -aR /backup /* /mydata/data
[root@station253 ~]# chown -R mysql.mysql /mydata/data
[root@station253 ~]# servivce mysqld start
8. 恢复后马上重作未提交事务,打开二进制日志
mysql> SHOW MASTER STATUS;
mysql> SET sync_binlog=1; 未提交事务日志马上写入文件
mysql> SET sql_log_bin=1;
mysql> SHOW MASTER STATUS;
恢复时需注意问题:innodb引擎启动数据库时,由于有buffer pool缓存存在会对未提交事务回滚、已提交的事务同步到磁盘文件,有崩溃恢复过程。