mysql的恢复_MYSQL的恢复

恢复就简单多了! 只要执行该备份文件就行了,该备份文件是SQL哦!

恢复完全备份mysql

-uroot -p < backup.sql

就这么简单!

恢复增量备份mysqlbinlog

MySQL-bin.000002 … | MySQL -u root -p

注意此次恢复过程亦会写入日志文件,如果数据量很大,建议先关闭日志功能

增量恢复也是怎么简单的哦!

mysqlbinlog 这个工具是解析BINLOG二进制 翻译成SQL语句,然后管道给MYSQL去执行。

有的时候你想精确恢复到,那么下面就可以完成。

mysqlbinlog常见的选项有以下几个:

--start-datetime:从二进制日志中读取指定等于时间戳或者晚于本地计算机的时间

--stop-datetime:从二进制日志中读取指定小于时间戳或者等于本地计算机的时间

取值和上述一样

--start-position:从二进制日志中读取指定position

事件位置作为开始。

--stop-position:从二进制日志中读取指定position

事件位置作为事件截至

开始时间我们知道了,那结束怎么知道呢?

方法一:使用mysqlbinlog读取binlog日志:

[root@vm-002

~]# cd var/lib/mysql/

[root@vm-002

mysql]# mysqlbinlog mysql-bin.000003

方法二:登录服务器,并查看(推荐此种方法)

mysql> show

binlog events in 'mysql-bin.000003';

+------------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------+

|

Log_name | Pos | Event_type | Server_id | End_log_pos | Info |

+------------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------+

|

mysql-bin.000003 | 4 | Format_desc | 1 | 106 | Server ver: 5.1.73-log, Binlog

ver: 4 |

|

mysql-bin.000003 | 106 | Query | 1 | 173 | BEGIN |

|

mysql-bin.000003 | 173 | Intvar | 1 | 201 | INSERT_ID=3 |

|

mysql-bin.000003 | 201 | Query | 1 | 444 | use `ops`; insert into

ops.member(`name`,`sex`,`age`,`gsan','w',21,'cls5'),('lisi','m',20,'cls4'),('wangwu','w',26,'cls6')

|

|

mysql-bin.000003 | 444 | Xid | 1 | 471 | COMMIT * xid=66 */ |

|

mysql-bin.000003 | 471 | Query | 1 | 538 | BEGIN |

|

mysql-bin.000003 | 538 | Query | 1 | 646 | use `ops`; update ops.member set

name='李四' where id= |

|

mysql-bin.000003 | 646 | Xid | 1 | 673 | COMMIT * xid=68 */ |

|

mysql-bin.000003 | 673 | Query | 1 | 740 | BEGIN |

|

mysql-bin.000003 | 740 | Query | 1 | 848 | use `ops`; update ops.member set

name='小二' where id= |

|

mysql-bin.000003 | 848 | Xid | 1 | 875 | COMMIT * xid=69 */ |

|

mysql-bin.000003 | 875 |

Query | 1 | 954 | drop

database ops |

|

mysql-bin.000003 | 954 | Rotate | 1 | 997 | mysql-bin.000004;pos=4 |

+------------------+-----+-------------+-----------+-------------+----------------------------------------------------------------------------------------------------------------------------+

通过分析,造成数据库破坏的pos点区间是介于 875--954 之间(这是按照日志区间的pos节点算的),只要恢复到875前就可。

mysqlbinlog --stop-position=875  --database=zyyshop  MySQL-bin.000002

| MySQL -u root -p

--database=zyyshop 指定只恢复zyyshop数据库(一台主机上往往有多个数据库,只限本地log日志)

方法一:使用mysqlbinlog读取binlog日志:

[root@vm-002 mysql]# mysqlbinlog mysql-bin.000003

.............

.............

BEGIN

/*!*/;

#

at 173

#160925

21:57:19 server id 1 end_log_pos 201 Intvar

SET

INSERT_ID=3/*!*/;

#

at 201

#160925

21:57:19 server id 1 end_log_pos 444 Query thread_id=3 exec_time=0

error_code=0

use

`ops`/*!*/;

SET

TIMESTAMP=1474811839/*!*/;

insert

into ops.member(`name`,`sex`,`age`,`classid`)

values('yiyi','w',20,'cls1'),('xiaoer','m',22,'cls3'),('zhangsan','w',21,'cls5'),('lisi','m',20,'cls4'),('wangwu','w',26,'cls6')

#执行的sql语句

/*!*/;

#

at 444

#160925 21:57:19 server

id 1 end_log_pos 471 Xid = 66    #开始执行的时间

COMMIT/*!*/;

#

at 471

#160925 21:58:41 server

id 1 end_log_pos 538Query thread_id=3 exec_time=0 error_code=0    #结束时间

恢复到更改“name='李四'”之前的数据

mysqlbinlog --start-datetime="2016-09-25 21:57:19"

--stop-datetime="2016-09-25 21:58:41" --database=zyyshop  MySQL-bin.000002| MySQL -uroot -p

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值