快照备份原理(从其他博客看的):

原理:通过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的更多相关文章

  1. lvm快照备份数据库(Mysql5.7)

    备份的目的 能够防止由于机械故障以及人为误操作带来的数据丢失,例如将数据库文件保存在了其它地方. 备份的分类 以操作过程中服务的可用性分: 冷备份:cold backup mysql服务关闭,mysq ...

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

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

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

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

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

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

  5. Mysql备份系列(4)--lvm-snapshot备份mysql数据(全量+增量)操作记录

    Mysql最常用的三种备份工具分别是mysqldump.Xtrabackup(innobackupex工具).lvm-snapshot快照.前面分别介绍了:Mysql备份系列(1)--备份方案总结性梳 ...

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

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

  7. mysql 基于lvm快照的备份

    1.查看磁盘数 ls /dev/ | grep sd 2.快照备份 pvcreate /dev/sdb #制作成物理卷vgcreate testvg /dev/sdblvcreate -L200M - ...

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

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

  9. MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)

    MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...

随机推荐

  1. windows下Java调用可执行文件

    缘起: 由于没有找到java转换文件的接口,因此使用java调用exe文件进行文件转换 public void convertFile(){ Runtime rn = Runtime.getRunti ...

  2. 【VS开发】#pragma pack(push,1)与#pragma pack(1)的区别

    这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式. #pragma pack (n)             作用:C编译器将按照n个字节对 ...

  3. (生鲜项目)01. Vue环境搭建

    第一步: nodejs安装 https://nodejs.org/en/download/ 说明安装成功 第二步: cnpm 由于npm需要很多的依赖包,这些包下载都很慢,所以就有了cnpm : ht ...

  4. 记一次Docker中部署Asp.Net Core 3.0的踩坑过程

    最近公司打算重构目前直销报单系统到微信小程序中,目前的系统只能在PC上面使用,这两年也搞过App端,但是由于人员流动和公司架构调整最后都不了了之,只留下一堆写了一半的接口.以前的接口依然是使用Asp. ...

  5. Maven专题

    Maven 教程之 settings.xml 详解

  6. 用easyui从servlet传递json数据到前端页面的两种方法

    用easyui从servlet传递json数据到前端页面的两种方法 两种方法获取的数据在servlet层传递的方法相同,下面为Servlet中代码,以查询表中所有信息为例. //重写doGet方法 p ...

  7. ASP.NET MVC请求参数字符串之区分空与NULL

    开发中经常会写增删改查的功能,这里记录下在更新操作时遇到的一个问题. 假设一个模型对应数据库中某一张表,在更新时便需要区分是一次性更新全部字段还是仅更新部分字段.希望能做到传递某个参数时便更新,未传递 ...

  8. Redis学习笔记(一)— 基本命令和数据类型

    MacOs环境 Redis基本命令 启动服务:redis-server 连接服务:redis-cli -h 指定主机/IP -p 指定端口 -a 指定密码 关闭服务:先shutdown 保存数据并关闭 ...

  9. quartz2.3.0(十四)trigger触发器优先级排序

    job任务类: package org.quartz.examples.example14; import org.slf4j.Logger; import org.slf4j.LoggerFacto ...

  10. 【转载】Windows安装Redis并添加本地自启动服务

    概况 在windows本地搭建redis缓存,添加到本地计算机的服务中,保证每次开机自动启动服务. 第一步:下载redis(我的是计算机win10,64位) https://github.com/Mi ...