来源:自学PHP网 时间:2015-04-16 10:50 作者: 阅读:次
[导读] 前提要求:事务日志跟数据文件必须在同一个卷上;创建快照卷之前,要请求MySQL的全局锁;在快照创建完成之后手动释放锁;请求全局锁完成之后,做一次日志滚动;做二进制日志文件...
前提要求: 事务日志跟数据文件必须在同一个卷上; 创建快照卷之前,要请求MySQL的全局锁;在快照创建完成之后手动释放锁; 请求全局锁完成之后,做一次日志滚动;做二进制日志文件及位置标记(手动进行);
1、为数据施加读锁,滚动二进制日志文件并记录当前二进制文件起始时间段: 2、做快照; 3、释放读锁: 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、将数据库停止,删除数据,尝试恢复数据 8、启动mysql服务并查看数据是否恢复: 9、使用二进制日志恢复后来创建的用户: mysql> source /tmp/20141121.sql;
总结: 备份过程: 1、对MySQL数据库了施加读锁,防止在备份过程中有用户插入数据而导致备份后的数据不一致 2、回滚日志,使当前状态的数据做一个完整的备份,之后的数据用二进制日志恢复 3、使用SHOW MASTER STATUS命令记录日志的开始时间 4、使用lvcreate命令对lv做快照 5、去除读锁
恢复过程: 6、将创建好的lv快照挂载到目录,并将里面的数据复制出来 7、卸载快照、再删除快照 8、将从快照复制出来的数据复制到/data/mydata 9、使用mysqlbinlog结合之前记录的开始时间点导出需要的二进制数据为一个xx.sql文件 10、将sql文件导入数据库即完成整改恢复过程 |
自学PHP网专注网站建设学习,PHP程序学习,平面设计学习,以及操作系统学习
京ICP备14009008号-1@版权所有www.zixuephp.com
网站声明:本站所有视频,教程都由网友上传,站长收集和分享给大家学习使用,如由牵扯版权问题请联系站长邮箱904561283@qq.com