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、数据文件和事务日志要在同一个逻辑卷上;

[[email protected] 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可用空间
[[email protected] mydata]#

过程:

  1.给mysql表加锁

mysql> flush tables with read lock;
Query OK, 0 rows affected (0.00 sec)

2、通过另一个终端,保存二进制日志文件及相关位置信息;

[[email protected] 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

[[email protected] 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、挂载快照卷,备份,删除快照卷

[[email protected] mydata]# mount -r /dev/myvg/back_test /mnt/
[[email protected] mnt]# cp -rfia ./*  /tmp/ [[email protected] /]# 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[[email protected] /]#

6、增量备份二进制日志,如果有多个事务可以根据472对应的时间点来备份

[[email protected] mydata]# mysqlbinlog --start-position=472 mysql-bin.000030 mysql-bin.000031 >/root/lv_back.sql
  //根据时间点备份多个事务,注意时间格式[[email protected] mydata]# mysqlbinlog --start-time=‘2015-08-06 17:32:08‘ mysql-bin.000030 mysql-bin.000031 >/root/lv_back.sql  

7.模拟mysql损坏

[[email protected] /]# rm /mydata/* -rf[[email protected] /]# service mysqld stopMySQL server PID file could not be found!                  [FAILED]

8.恢复

  可以不复制二进制日志,可以把二进制日志删除

[[email protected] 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 |+----+--------+-----+------+
时间: 2024-10-10 21:41:21

lvm快照备份mysql的相关文章

MySQL备份与恢复常用方法总结(mysqldump/xtrabackup/lvm快照备份/二进制日志及时点恢复)

MySQL备份与恢复常用方法总结 (mysqldump/xtrabackup/lvm快照备份/逻辑备份与恢复/二进制日志及时点恢复) 自言:学习在于总结,把所了解的类似东西放到一起更能加深记忆 一.了解备份相关知识 1)按服务器备份时状态可分为:     热备份:读.写不受影响:     温备份:仅可以执行读操作:     冷备份:离线备份:读.写操作均中止:2)按服务器备份数据集可分为:     物理备份:复制数据文件:     逻辑备份:将数据导出至文本文件中:3)按服务器备份数据量可分为:

MySQL基于LVM快照的备份恢复

目录 1.数据库全备份 2.准备LVM卷 3.数据恢复到LVM卷 4.基于LVM快照备份数据 5.数据灾难恢复 6.总结 写在前面: 测试环境中已安装有mysql 5.5.36数据库,但数据目录没有存放在LVM卷,此次要演示基于LVM的数据备份和恢复,所以就把mysql的数据先迁移到LVM上再做快照卷的备份. 如果innodb表基于LVM来做备份,那事务日志文件和数据文件要在同一个LVM的逻辑卷上,因为在同一时刻我们只能对一个逻辑卷做快照,如果事务日志与数据文件不在同一卷上,那做快照后会导致事务

Mysql数据库理论基础之十三 ---- LVM逻辑卷快照备份

一.简介 由MySQL AB公司开发,是最流行的开放源码SQL数据库管理系统,主要特点: 1.是一种数据库管理系统 2.是一种关联数据库管理系统 3.是一种开放源码软件,且有大量可用的共享MySQL软件 4.MySQL数据库服务器具有快速.可靠和易于使用的特点 5.MySQL服务器工作在客户端/服务器模式下,或嵌入式系统中 InnoDB存储引擎将InnoDB表保存在一个表空间内,该表空间可由数个文件创建.这样,表的大小就能超过单独文件的最大容量.表空间可包括原始磁盘分区,从而使得很大的表成为可能

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

这里我们讨论Linux操作系统的备份. 在生产环境,客户都会要求做全系统的数据备份,用于系统崩溃后的一种恢复手段.这其中就包含操作系统数据的备份恢复. 由于是生产环境,客户都会要求备份不中断业务,也就是在线备份. 今天我们介绍使用LVM快照实现Linux操作系统在线备份的一种方法. 使用LVM实现操作系统在线备份的简要原理是:LVM是Linux自带的卷管理软件,LVM支持快照,而Linux又支持将LVM卷作为操作系统分区,因此可以使用LVM的快照功能实现操作系统的在线备份. 1. 分区规划 上面

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

本文首发于烂泥行天下. 上一篇文章介绍了有关KVM利用LVM快照备份和恢复虚拟机的功能,这篇文章我们来介绍,如何利用LVM快照功能为KVM快速部署虚拟机. 部署虚拟机需要以下几个步骤: 1. 创建LVM快照 2. 修改虚拟机的XML配置文件 3. 通过virsh define命令定义虚拟机 4. 启动虚拟机,并修改相关网络设置 既然是利用LVM的快照功能,那么我们就先创建一个快照.如下: lvcreate -L 100M -s -n lvmsp2 /dev/vg1/lvmsp 有关KVM相关的文

mysql之lvm快照方式备份恢复

好像一般大家都不用这个吧,这里也仅是当做记录吧. 其实lvm快照不管是什么存储引擎都可以做到接近热备,看起来也还不错的样子.不过却也需要一些所必须的条件. 如:LVM卷,而且也有足够的空闲空间来做快照,并且事务日志也要与数据文件在一起. 好啦,废话不多说,我们先看看怎么用吧. 大体步骤: 1.全局锁. 2.滚动二进制日志,并做好记录 3.创建lvm快照. 4.释放锁. 5.从快照盘手动复制数据. 6.卸载并移除快照盘. 来吧. 先来看看lvm的情况: [[email protected] bac

Linux-6.5下 MariaDB-10基于LVM快照的备份数据 详解

理解部分: LVM是逻辑盘卷管理(Logical Volume Manager)的简称,它是Linux环境下对磁盘分区进行管理的一种机制,LVM是建立在硬盘和分区之上的一个逻辑层,来提高磁盘分区管理的灵活性.LVM可以对分区在线扩容,快照,镜像和条带化,功能非常强大.这篇文章的主题就是其中一个功能--快照. 快照(Snapshot)就是关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像.快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品: 其实

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

使用mysqldump备份时,如果存储引擎为MyISAM,则只能实现温备份,并需使用选项--lock-all-tables锁定所有表.如果存储引擎为InnoDB,则加上--single-transaction选项,可以实现热备.使用mysqldump进行逻辑备份,还存在如下问题:浮点数据丢失精度: 备份出的数据更占用空间:不过可压缩后以大大节省空间 不适合对大数据库(如一个库超过10G)做完全备份 另外对InnoDB而言,需要使用mysql> FLUSH TABLES WITH READ LOC

快照方式备份MySQL数据库及举例

快照方式备份MySQL数据库及举例 作者: 红豆殺 日期: 2011 年 03 月 17 日发表评论7条评论查看评论 一.创建逻辑卷 依照如下连接的文档创建一个逻辑卷 http://www.178-go.com/tags/lvm 要求:物理卷20G;卷组名为vg0;逻辑卷2G,逻辑卷名为mydata 创建逻辑卷挂载点,并挂载之 # mkdir /mydata # mount /dev/vgo/mydata /mydata 二.安装MySQL数据库 如果机器已装有mysql,则此步可省略 只需修改