数据库

 首页 > 数据库 > MySql > 使用lvm-snapshot备份mysql数据库

使用lvm-snapshot备份mysql数据库

分享到:
【字体:
导读:
         摘要:前提要求:事务日志跟数据文件必须在同一个卷上;创建快照卷之前,要请求MySQL的全局锁;在快照创建完成之后手动释放锁;请求全局锁完成之后,做一次日志滚动;做二进制日志文件及位置标记(手动进行);1、为数据施加读锁,滚动二进制日志文件并记录当前二进制文件起始时间段:2、做快照;3、释放读锁:4、挂载快照,将快 ...

使用lvm-snapshot备份mysql数据库

前提要求:

事务日志跟数据文件必须在同一个卷上;

创建快照卷之前,要请求MySQL的全局锁;在快照创建完成之后手动释放锁;

请求全局锁完成之后,做一次日志滚动;做二进制日志文件及位置标记(手动进行);


1、为数据施加读锁,滚动二进制日志文件并记录当前二进制文件起始时间段:

wKioL1RvSi_D4vfuAAFtKk5G1DY490.jpg

2、做快照;

wKiom1RvSoDiv_mdAABmlT0HCyc181.jpg

3、释放读锁:

wKioL1RvSx7D11F2AAAutnKi6FY453.jpg

4、挂载快照,将快照里面的数据复制出来,并删除快照:

[root@localhost mydata]# mount /dev/VG/mysql  /mnt/ -o ro

[root@localhost mydata]# mkdir /mysqlback

[root@localhost mydata]# cp -a /mnt/ /mysqlback/20141121

[root@localhost mydata]# umount /mnt/

[root@localhost mydata]# lvremove  /dev/VG/mysql

Do you really want to remove active logical volume mysql? [y/n]: y

  Logical volume "mysql" successfully removed


5、向一个表插入数据是数据发生改变,要在最后使用二进制日志恢复此信息。

mysql> INSERT INTo  newtb values('jack');

Query OK, 1 row affected (0.01 sec)

mysql> select * from newtb;

+------+

| Name |

+------+

| tom  |

| jack |

+------+

2 rows in set (0.00 sec)

6、结合之前记录的二进制日志开始时间导出成一个文件

[root@localhost mydata]# mysqlbinlog  --start-position=107  mysql-bin.000011  > /tmp/20141121.sql

7、将数据库停止,删除数据,尝试恢复数据

wKiom1RvTj2gy3E0AAJsJ4-Pw4g601.jpg

8、启动mysql服务并查看数据是否恢复:

wKiom1RvTrjR7p6fAAM4fDuE2lU178.jpg

9、使用二进制日志恢复后来创建的用户:

mysql> source /tmp/20141121.sql;

wKioL1RvUK7zh8yUAAA5lIuAUOw949.jpg


总结:

备份过程:

1、对MySQL数据库了施加读锁,防止在备份过程中有用户插入数据而导致备份后的数据不一致

2、回滚日志,使当前状态的数据做一个完整的备份,之后的数据用二进制日志恢复

3、使用SHOW MASTER STATUS命令记录日志的开始时间

4、使用lvcreate命令对lv做快照

5、去除读锁


恢复过程:

6、将创建好的lv快照挂载到目录,并将里面的数据复制出来

7、卸载快照、再删除快照

8、将从快照复制出来的数据复制到/data/mydata

9、使用mysqlbinlog结合之前记录的开始时间点导出需要的二进制数据为一个xx.sql文件

10、将sql文件导入数据库即完成整改恢复过程

欢迎大家访问我的个人网站 萌萌的IT人
使用lvm-snapshot备份mysql数据库
分享到:
浅谈触发器和存储过程
浅谈触发器和存储过程   去年初识SQL数据库的时候就接触了着两个概念,但是对于这两对兄弟从何而来,又有什么作用几乎一片空白。慢慢的经历了一次又一次的机房收费,跟他们打了一次又一次的照面,然后是最近敲牛腩新闻发布系统,牛腩老师恨不得所有的SQL语句都写成存储过程,所有稍复杂的多表操作都要用上触发器,才发现在...
分布式缓存GemFire架构介绍
分布式缓存GemFire架构介绍 1什么是GemFire GemFire是一个位于应用集群和后端数据源之间的高性能、分布式的操作数据(operational data)管理基础架构。它提供了低延迟、高吞吐量的数据共享和事件分发。GemFire充分利用网络中的内存和磁盘资源,形成一个实时的数据网格(data fabric or grid)。   GemFire的主要特性有: ...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……