• 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 statusG'>/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 |
    +----+--------+-----+------+




  • 相关阅读:
    第三周学习进度表
    思维导图
    第二周学习进度表
    调查问卷
    微感想
    C/C++数组取值的真实实现——一个初学者的常见疑惑
    保存所有标签页,以便下次打开继续工作
    内存越界调到心态爆炸
    C语言VC6的一个asprintf实现,或:VC6上C语言使用asprintf, snprintf的坑
    Learning and Inference for Hierarchically Split PC中文字幕
  • 原文地址:https://www.cnblogs.com/kankanhua/p/4709301.html
Copyright © 2020-2023  润新知