备份的目的

能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方。

备份的分类

以操作过程中服务的可用性分:

冷备份:cold backup mysql服务关闭,mysql离线
温备份:warm backup mysql服务在线,但是不允许写请求,例如 read lock,在线的某些功能需要中止。
热备份:hot backup 备份同时,业务读写请求继续,业务不受干扰。(没有绝对的热备份,无限接近,停止的时间忽略不计)

myisam :不支持热备
innodb : 需要专用工具

以操作方式区分:

逻辑备份: 备份的是建表、建库、插入等操作所执行SQL语句(DDL DML DCL),适用于中小型数据库,效率相对较低(相对复杂,且在恢复过程中容易丢失数据,不推荐使用)

物理备份: 直接复制数据库文件,适用于大型数据库环境,不受存储引擎的限制,
但不能恢复到不同的MySQL版本。(推荐使用)

lvm快照备份的优缺点

优点:
几乎是热备 (创建快照前把表上锁,创建完后立即释放)
支持所有存储引擎
备份速度快
无需使用昂贵的商业软件(它是操作系统级别的)

缺点:
可能需要跨部门协调(使用操作系统级别的命令,DBA一般没权限)
无法预计服务停止时间
数据如果分布在多个卷上比较麻烦 (针对存储级别而言)

lvm 快照备份原理:

LVM对LV提供的快照功能,只对LVM有效。
当一个snapshot创建的时候,仅拷贝 原始卷 里数据的 元数据(meta-data)。因此建立快照的速度非常快

创建的时候,并不会有数据的物理拷贝,因此 snapshot的创建几乎是实时的,当原始卷上有写操作执行时,
snapshot 跟踪原始卷块的改变,这个时候原始卷上将要改变的数据在 改变之前被拷贝到 snapshot预留的空间里,
因此这个原理的实现叫做写时复制 (copy-on-write)。

在写操作写入块之前,将原始数据移动到 snapshot空间里,这样就保证了所有的数据在snapshot创建时保持一致。
而对于snapshot的读操作,如果是读取数据块是没有修改过的,那么会将读操作直接重定向到原始卷上,如果是要
读取已经修改过的块,那么就读取拷贝到snapshot中的块。

LVM 快照备份流程:

LVM快照: 锁表时间接近热备
1. 加全局读锁
mysql> flush tables with read lock;
2.创建快照, lvcreate -L 500M -s -n lv-mysql-snap /dev/datavg/lv-mysql ;
3.刷新二进制日志 mysql> flush logs
4 释放锁  mysql>unlock tables
5. 挂载 快照设备 ,并从快照设备中,对数据库文件进行打包与 压缩
6、卸载快照设备
7、 移除快照设备 lvremove -f /dev/datavg/lv-mysql-snap
产生了一份新的 二进制日志。
此时,手动插入 几条数据,修改几条数据 ======》 体现最新的 二进制日志中。!

模拟崩溃:

停止服务,删除 数据库所有文件 ( 二进制日志不要和数据库数据放在同一目录 )
要求,恢复所有数据,包括 刚才 新增 和 修改了的 数据。

恢复流程:

1、恢复最近的一次 完全备份, mysql-2018-9-19-full.tar.gz /mysql 解压。
2、将最近的一份二进制日志 进行导出 mysqlbinlog /data/mysql-binlog/mysql.000025 > /tmp/a.sql
3、启动mysql服务(产生一份新的二进制日志 ),登录mysql
4、设置 临时 停止记录 二进制 日志。 mysql> set session sql_log_bin=0;
5、mysql> source /tmp/a.sql;
6、mysql> set session sql_log_bin=1; 重新开启二进制日志功能

至此,恢复完成! 用 select 语句 进行 查询验证,看数据是否恢复 。

lvm快照备份数据库(Mysql5.7)的更多相关文章

  1. lvm快照备份mysql

    快照备份原理(从其他博客看的): 原理:通过lvm快照给lvm真身拍个照片,当lvm真身发送改变时,lvm快照把lvm真身改变之前的内容存放在快照上,这样在lvm快照有效的这段时间内,我们看到的lvm ...

  2. 使用LVM快照进行数据库备份

    使用mysqldump备份时,如果存储引擎为MyISAM,则只能实现温备份,并需使用选项--lock-all-tables锁定所有表.如果存储引擎为InnoDB,则加上--single-transac ...

  3. Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)

    备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...

  4. MySQL基于LVM快照的备份恢复(临时)

    目录1.数据库全备份2.准备LVM卷3.数据恢复到LVM卷4.基于LVM快照备份数据5.数据灾难恢复6.总结 写在前面:测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷, ...

  5. Linux操作系统备份之一:使用LVM快照实现Linux操作系统数据的在线备份

    这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就 ...

  6. MySQL数据物理备份之lvm快照

    使用lvm快照实现物理备份 优点: 几乎是热备(创建快照前把表上锁,创建完后立即释放) 支持所有存储引擎 备份速度快 无需使用昂贵的商业软件(它是操作系统级别的) 缺点: 可能需要跨部门协调(使用操作 ...

  7. 烂泥:KVM利用LVM快照快速部署虚拟机

    本文由秀依林枫提供友情赞助,首发于烂泥行天下. 上一篇文章介绍了有关KVM利用LVM快照备份和恢复虚拟机的功能,这篇文章我们来介绍,如何利用LVM快照功能为KVM快速部署虚拟机. 部署虚拟机需要以下几 ...

  8. Mysql数据库备份—-通过LVM快照实现备份还原

    一.实验环境 一台测试机:A(172.18.30.1) 操作系统:Centos7 操作对象数据库版本:mariadb-10.2 二.实现目的 从A机器(172.18.30.1)简单搭建数据库,创建测试 ...

  9. mysql数据库基于LVM快照的备份

    lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上          2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁          3 ...

随机推荐

  1. openwrt 编译

    完整的编译过程: http://www.280i.com/tech/3353.html源更新: https://blog.csdn.net/ypbsyy/article/details/8121836 ...

  2. MyBatis3

    一.连接数据库的配置单独放在一个properties文件中 之前,我们是直接将数据库的连接配置信息写在了MyBatis的conf.xml文件中,如下: <?xml version="1 ...

  3. cout,cerr和clog的区别

    官方解释: cout——Standard output stream Object of class ostream that represents the standard output strea ...

  4. 高可用Redis(十):Redis原生命令搭建集群

    1.搭建Redis Cluster主要步骤 1.配置开启节点 2.meet 3.指派槽 4.主从关系分配 2.环境说明 两台虚拟机,IP地址分别为:192.168.81.100和192.168.81. ...

  5. C# 关于X86/X64/AnyCpu 的关系

    电脑硬件CPU可以分为x86与x64, x86的机器只能安装32位的操作系统,如XP, WIN7_86, x64的机器既可以安装32位的系统,又可以安装64位的系统,只是在x64的机器上安装32位的系 ...

  6. 使用Set集合对List集合进行去重

    /** * 使用Set集合对List集合进行去重 **/ public class SetTest { /** * List集合的泛型为Integer类型 * * @author hongwei.li ...

  7. Javascript执行上下文和执行栈

    什么是执行上下文? 执行上下文就是当前JavaScript代码被解析和执行时所在环境的抽象概念,JavaScript中运行任何的代码都是在执行上下文. 什么是执行栈? 执行栈,在其他编程语言中也被叫做 ...

  8. 编译问题解决:LINK : fatal error LNK1104: 无法打开文件“*.dll”

    一.引言 编译项目的时候,总会遇到些奇怪的问题,比如说以下这种: LINK : fatal error LNK1104: 无法打开文件“..\bin\ICPRegistration.dll” 我在编译 ...

  9. K3 WISE 开发插件《K3 WISE常用数据表整理》

    在后台数据库ICClassType表中,字段FID<0的是老单,FID>0的是新单. ----------------系统设置------------------------ FStatu ...

  10. AES CBC PKCS7 C# C++

    c++算法见:https://blog.csdn.net/csdn49532/article/details/50686222 c#:https://gitee.com/koastal/codes/6 ...