mysql用binlog文件进行数据恢复
2015-10-28 18:43
671 查看
MySQL备份一般采取全备份加日志备份的方式,比如每天执行一次全备份,每小时执行一次二进制日志备份。这样在MySQL Server故障后可以使用全备份和日志备份将数据恢复到最后一个二进制日志备份前的任意位置或时间。用来进行全备和日志备的工具各种各样,各有其特色,在这里不做描述。本文主要讲解一下在回复完全备份后,如何应用备份的二进制日志来将数据恢复到指定的位置或时间点。
这里有个十分重要的工具——mysqlbinlog,专门用来查看二进制日志。我们以一些列子来说明问题:先看看如何在MySQL Server中直接查看有哪些二进制日志文件及文件中包含哪些事件。首先,查看正在使用的binlog日志mysql> show master status;
![](http://s3.51cto.com/wyfs02/M01/75/04/wKioL1YwpxiRC_9lAADTt39O-Lw805.jpg)
mysql> show binlog events in "mysql-bin.000002";这条命令查看记录在binlog日志中执行的sql命令。例如:先创建一个数据库,在库中建一个表,表中添加数据。mysql> create database user_test;Query OK, 1 row affected (0.00 sec) mysql> use user_test;Database changed mysql> create table test(id char(3),name varchar(20),age varchar(3));Query OK, 0 rows affected (0.36 sec) mysql> insert into test values(1,'wangdi',27);Query OK, 1 row affected (0.01 sec)mysql> select * from test;+------+--------+------+| id | name | age |+------+--------+------+| 1 | wangdi | 27 |+------+--------+------+1 row in set (0.00 sec)这时删除数据库:mysql> drop database user_test;Query OK, 1 row affected (0.08 sec) 数据库删除之后,想要恢复查看binlog中的信息mysql> show binlog events in "mysql-bin.000002";找到文件中的sql语句,执行即可。 也可以应用mysqlbinlog工具[root@master data]# /usr/local/mysql/bin/mysqlbinlog --start-position=4797 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p4797 是我创建数据库的节点,执行完命令后恢复数据库,但是这里只是恢复一个库,里面的表数据没有[root@master data]# /usr/local/mysql/bin/mysqlbinlog --start-position=4954 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p4954 是我创建表的节点,执行完命令后恢复表结构,但是表里的数据没有[root@master data]# /usr/local/mysql/bin/mysqlbinlog --start-position=5224 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p5224 是插入数据的语句,这样被删除的数据库就恢复了。 重新查看一下:mysql> select * from test;+------+--------+------+| id | name | age |+------+--------+------+| 1 | wangdi | 27 |+------+--------+------+
这里有个十分重要的工具——mysqlbinlog,专门用来查看二进制日志。我们以一些列子来说明问题:先看看如何在MySQL Server中直接查看有哪些二进制日志文件及文件中包含哪些事件。首先,查看正在使用的binlog日志mysql> show master status;
![](http://s3.51cto.com/wyfs02/M01/75/04/wKioL1YwpxiRC_9lAADTt39O-Lw805.jpg)
mysql> show binlog events in "mysql-bin.000002";这条命令查看记录在binlog日志中执行的sql命令。例如:先创建一个数据库,在库中建一个表,表中添加数据。mysql> create database user_test;Query OK, 1 row affected (0.00 sec) mysql> use user_test;Database changed mysql> create table test(id char(3),name varchar(20),age varchar(3));Query OK, 0 rows affected (0.36 sec) mysql> insert into test values(1,'wangdi',27);Query OK, 1 row affected (0.01 sec)mysql> select * from test;+------+--------+------+| id | name | age |+------+--------+------+| 1 | wangdi | 27 |+------+--------+------+1 row in set (0.00 sec)这时删除数据库:mysql> drop database user_test;Query OK, 1 row affected (0.08 sec) 数据库删除之后,想要恢复查看binlog中的信息mysql> show binlog events in "mysql-bin.000002";找到文件中的sql语句,执行即可。 也可以应用mysqlbinlog工具[root@master data]# /usr/local/mysql/bin/mysqlbinlog --start-position=4797 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p4797 是我创建数据库的节点,执行完命令后恢复数据库,但是这里只是恢复一个库,里面的表数据没有[root@master data]# /usr/local/mysql/bin/mysqlbinlog --start-position=4954 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p4954 是我创建表的节点,执行完命令后恢复表结构,但是表里的数据没有[root@master data]# /usr/local/mysql/bin/mysqlbinlog --start-position=5224 --stop-position=5425 /usr/local/mysql/data/mysql-bin.000002 |mysql -uroot -p5224 是插入数据的语句,这样被删除的数据库就恢复了。 重新查看一下:mysql> select * from test;+------+--------+------+| id | name | age |+------+--------+------+| 1 | wangdi | 27 |+------+--------+------+
相关文章推荐
- sql2005 附加数据库出错(错误号:5123)解决方法
- mysql database manual(mysql数据库手册)
- 什么是DAO Database Access Object
- master数据库损坏的解决办法有哪些
- UI Events 用户界面事件
- sql2005 create file遇到操作系统错误5拒绝访问 错误1802
- SQLServer中master数据库分析
- MySQL里Create Index 能否创建主键 Primary Key
- 在数据库‘master’中拒绝CREATE DATABASE权限问题的解决方法
- Sample script that deletes a SQL Server database
- 解决MYSQL出现Can''t create/write to file ''#sql_5c0_0.MYD''的问题
- linux whatis与whatis database 使用及查询方法(man使用实例)
- SQL Server2008 数据库误删除数据的恢复方法分享
- oracle误删数据恢复方法小结
- 21个JavaScript事件(Events)属性汇总
- CREATE FUNCTION sqlserver用户定义函数
- ThinkPHP中的create方法与自动令牌验证实例教程
- 用MyEclipse配置DataBase Explorer(图示)
- oracle Dataguard数据库不同步处理备忘 推荐