lvm快照备份mysql
快照备份原理(从其他博客看的):
原理:通过lvm快照给lvm真身拍个照片,当lvm真身发送改变时,lvm快照把lvm真身改变之前的内容存放在快照上,这样在lvm快照有效的这段时间内,我们看到的lvm快照上的内容始终是lvm真身在创建lvm快照时内容,通过备份lvm快照即可达到在线备份lvm真身的目的。需要注意的是,当lvm快照比lvm真身小时,若lvm真身发生的改变大于lvm快照,则lvm快照将变得无法读取而失效; 若lvm快照大于等于lvm真身,则不会发生前面的情况。
当一个snapshot创建的时候,仅拷贝原始卷里数据的元数据(meta- data)。创建的时候,并不会有数据的物理拷贝,因此snapshot的创建几乎是实时的,当原始卷上有写操作执行时,snapshot跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在改变之前被拷贝到snapshot预留的空间里,因此这个原理的实现叫做写时复制(copy-on- write)。
在写操作写入块之前,CoW将原始数据移动到snapshot空间里,这样就保证了所有的数据在snapshot创建时保持一致。而对于snapshot的读操作,如果是读取数据块是没有修改过的,那么会将读操作直接重定向到原始卷上,如果是要读取已经修改过的块,那么就读取拷贝到snapshot中的块。
lvm快照备份几乎热备:
前提:
1、数据文件要在逻辑卷上;
2、此逻辑卷所在卷组必须有足够空间使用快照卷;
3、数据文件和事务日志要在同一个逻辑卷上;
[root@localhost mydata]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/VolGroup-lv_root 4.0G 3.7G 125M 97% /
tmpfs 935M 0 935M 0% /dev/shm
/dev/sda1 485M 39M 421M 9% /boot
/dev/mapper/myvg-mylv 886M 151M 691M 18% /mydata //这是mysql数据库文件和二进制日志文件还有151M可用空间
[root@localhost mydata]#
过程:
1.给mysql表加锁
mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)
2、通过另一个终端,保存二进制日志文件及相关位置信息;
[root@localhost mydata]# mysql -e 'show master status\G'>/backup/master.info
*************************** 1. row ***************************
File: mysql-bin.000030
Position: 472
Binlog_Do_DB:
Binlog_Ignore_DB:
3、给/mydata创建快照卷,名字为back_test
[root@localhost mydata]# lvcreate -L 30M -s -n back_test /dev/mapper/myvg-mylv
Rounding up size to full physical extent 32.00 MiB
Logical volume "back_test" created
4、释放锁,插入数据
mysql> insert into student (name) value ('david');
ERROR 1223 (HY000): Can't execute the query because you have a conflicting read
lock
mysql> unlock tables;
Query OK, 0 rows affected (0.00 sec)
mysql> insert into student (name) value ('david2');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> insert into student (name) value ('david3');
Query OK, 1 row affected, 1 warning (0.00 sec)
mysql> commit
-> ;
Query OK, 0 rows affected (0.05 sec)
5、挂载快照卷,备份,删除快照卷
[root@localhost mydata]# mount -r /dev/myvg/back_test /mnt/
[root@localhost mnt]# cp -rfia ./* /tmp/
[root@localhost /]# lvremove /dev/myvg/back_test
Do you really want to remove active logical volume back_test? [y/n]: y
Logical volume "back_test" successfully removed
[root@localhost /]#
6、增量备份二进制日志,如果有多个事务可以根据472对应的时间点来备份
[root@localhost mydata]# mysqlbinlog --start-position=472 mysql-bin.000030 mysql-bin.000031 >/root/lv_back.sql
//根据时间点备份多个事务,注意时间格式
[root@localhost mydata]# mysqlbinlog --start-time='2015-08-06 17:32:08' mysql-bin.000030 mysql-bin.000031 >/root/lv_back.sql
7.模拟mysql损坏
[root@localhost /]# rm /mydata/* -rf
[root@localhost /]# service mysqld stop
MySQL server PID file could not be found! [FAILED]
8.恢复
可以不复制二进制日志,可以把二进制日志删除
[root@localhost mydata]# cp -riaf /tmp/* /mydata/ //将文件复制到mysql的数据文件位置
chown -R mysql:mysql /mydata/* //如果/mydata下的属主不是 mysql权限,需要修改为mysql权限 mysql>set sql_log_bin=0 //根据情况看是否关闭
mysql> \. /root/lv_back.sql //还原二进制日志事务 查看热备后执行的事务是否恢复 mysql> select * from student;
+----+--------+-----+------+
| id | name | age | Cid |
+----+--------+-----+------+
| 1 | sean | 22 | 6 |
| 5 | alice | 0 | NULL |
| 6 | tom | 0 | NULL |
| 7 | david2 | 0 | NULL |
| 8 | david3 | 0 | NULL |
+----+--------+-----+------+
lvm快照备份mysql的更多相关文章
- lvm快照备份数据库(Mysql5.7)
备份的目的 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 备份的分类 以操作过程中服务的可用性分: 冷备份:cold backup mysql服务关闭,mysq ...
- MySQL基于LVM快照的备份恢复(临时)
目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...
- MySQL数据物理备份之lvm快照
使用lvm快照实现物理备份 优点: 几乎是热备(创建快照前把表上锁,创建完后立即释放) 支持所有存储引擎 备份速度快 无需使用昂贵的商业软件(它是操作系统级别的) 缺点: 可能需要跨部门协调(使用操作 ...
- Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份
这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...
- Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录
Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...
- 烂泥:KVM利用LVM快照快速部署虚拟机
本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了有关KVM利用LVM快照备份和恢复虚拟机的功能,这篇文章我们来介绍,如何利用LVM快照功能为KVM快速部署虚拟机. 部署虚拟机需要以下几 ...
- mysql 基于lvm快照的备份
1.查看磁盘数 ls /dev/ | grep sd 2.快照备份 pvcreate /dev/sdb #制作成物理卷vgcreate testvg /dev/sdblvcreate -L200M - ...
- mysql数据库基于LVM快照的备份
lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上 2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁 3 ...
- MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)
MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...
随机推荐
- Photoshop如何自定义形状
Photoshop如何自定义形状,自定义形状定义一次,可以随便使用,而且形状无大小,填充后不会有像素问题,普通人可把常用的自定义成形状,很方便.PS中有一些自定义的形状,自己可以随便使用,但是不是很全 ...
- css选择器测试2-用ul和li简单排版
之前的博文:测试了一些css样式的优先级,都是比较常见的选择器 ,这里测试一些其他一些选择方式. *:通配符,所有页面的元素都走这个.设置多个class:一个标签里不能有两个class,如果想要设置多 ...
- 高级UI-画笔Paint
在UI这一块,谈到自定义,就离不开画笔和画布的使用话题,在自定义控件的时候,为了做出炫酷的效果,我们往往会使用画笔和画布,那么这里我们就先来看看画笔的使用吧 简单使用例子 自定义一个View publ ...
- 在ObjectARX中创建OPM项目的时候出现 MIDL1012: argument illegal for switch / header错误的解决方式
修改为 这样新建的带有MIDL项目就不会提示错误这个错误了. 如果你已经建立好项目,可以尝试修改MIDL的配置,头文件可能是.h没有文件名,所以出现MIDL1012错误,修改为项目名称的.h即可,保持 ...
- (转)JVM原理讲解和调优
背景:jvm实际调优在面试时候经常被问到,所以有必要认真总结一番. 转自:JVM原理讲解和调优 四.JVM内存调优 首先需要注意的是在对JVM内存调优的时候不能只看操作系统级别Java进程所占用的内存 ...
- Prometheus入门到放弃(6)之AlertManager进阶
前面几个篇幅,我们介绍了alertmanger报警配置,在实际运维过程中,我们都会遇到,报警的重复发送,以及报警信息关联性报警.接下来我们就介绍下通过alertmanger对告警信息的收敛.一.告警分 ...
- Response的应用
1.HttpServletResponse概述 service方法中的response的类型是ServletResponse,而doGet/doPost方法的response的类型是HttpServl ...
- java笔记4—继承
继承: 作用: 提高了代码的复用性. 让类与类之间产生了关系,为多态提供了前提 继承中成员变量的特点: 继承中成员函数的特点: 方法重写: 注意:重写方法必须和被重写的方法具有相同的方法名,参数列表和 ...
- Python规范:用用assert
什么是assert assert的语法: assert_stmt ::= "assert" expression ["," expression] 例: ass ...
- mysql中sum与if,case when 结合使用
1.sum与if结合使用 如图:数据表中,count_money 字段可为正,可为负.为正表示收入,负表示支出. 统计总收入,总支出. select sum(if(count_money > 0 ...