博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【转】【MySQL】mysql 通过bin-log恢复数据方法详解
阅读量:7120 次
发布时间:2019-06-28

本文共 2287 字,大约阅读时间需要 7 分钟。

mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的bin-log进行数据库恢复了。

具体的操作是通过mysqlbinlog这个指令来完成的

/mysql/bin/mysqlbinlog --database=fox --start-date="2013-01-22 5:00:00"  --stop-date="2013-01-22 9:00:00" /mysql/data/mysql-bin.000001 | /mysql/bin/mysql -u root -p123456 -f

具体的参数看下名字就能明白

database:指定具体的数据库

start-date:开始时间
stop-date:结束时间
/mysql/data/mysql-bin.000001:

指定的日志文件

如果你没有备份数据的话,你就必须通过日志文件一个一个还原,记得顺序不能乱。如果你没有备份数据,日志又被部分删除的话,那么就悲剧了。因此,还原只是一种方法,最重要的还是定期备份数据。只要备份数据在,日志文件在,东西都可以解决。

同时记录一些操作日志的方法
查看所有日志:

show master logs;

当前使用的binlog文件

show binlog events g;

产生一个新的binlog日志文件

flush logs;

删除所有二进制日志,并从新开始记录

flush logs;  reset master;

这里突然有一种想法,是否每次备份完数据以后就把之前的日志清理下,这样一旦发生问题,就可以从最近的日志开始还原。这个只是我的一种想法,有什么问题请指正。

同时大家如果希望不在错误操作delete这个可以在mysql启动的时候加入-U这个参数
启动MySQL的时候加上参数 -U

-U, –safe-updates Only allow UPDATE and DELETE that uses keys.

他的作用是防止执行delete的时候没带有条件语句,如果没加上where则语句不执行。

一次完整的Mysqlbin-log日志恢复过程实例

1).创建一个表:

mysql>usetest;mysql>createtable t1(id int);mysql>showtables;

2).添加两行数据:

mysql>insertinto t1 values(1);mysql>insertinto t1 values(2);mysql>select *from t1;

3).备份现有数据(09:30):

#mysqldump -uroot-p123456 test -l -F > /tmp/test.sql

4).在备份完后再添加三行数据(记录):

mysql>insertinto t1 values(3);mysql>insertinto t1 values(4);mysql>insertinto t1 values(5);

5).此时突然数据库损损坏或者认为删除:

mysql>droptable t1;

6).用已备份的test.sql来恢复数据库:

#mysql -uroot-p123456 test < test.sql

7).从bin-log日志恢复:

#/usr/local/mysql/bin/mysqlbinlog–no-defaults mysql-bin.000006|more//查看bin-log日志,在我的虚力机上bin-log日志从mysql-bin.000005开始#/usr/local/mysql/bin/mysqlbinlog--no-defaults --stop-position=”272” mysql-bin.000006 |/usr/local/mysql/bin/mysql -uroot -p123456 //恢复bin-log日志

如果你没有开启bin日志我们可参考正同方法开启

一、 Mysqlbin-log 日志

1.开启Mysqlbin-log 日志

#vi/etc/my.cnf

[client]#password =your_passwordport =3306socket =/tmp/mysql.sockdefault-character-set-utf8.......[mysqld]port= 3306socket= /var/lib/mysql/mysql.socklog-slow-queries=mysql-slowloglog-error=mysql.errlog=mysql.loglog-bin=mysql-bin//删除#符号

 2.查看二进制文件(mysql-bin.******)

#cd/usr/local/mysql/bin/ && ls

 3.查看mysqbinlog日志是否开启

mysql>showvariables like “%log-bin%;

 4.与Mysqlbin-log有关的日志操作

mysql>flushlogs;//此时就会多一个最新的bin-log日志mysql>showmaster status;//查看最后一个bin日志mysql>resetmaster;//清空所有的bin-log日志mysql>mysqlbinlog–no-defaults mysql-bin.******|more//查看bin-log日志

 

扫码关注微信公众号

微信公众号

原文地址:

转载地址:http://flfel.baihongyu.com/

你可能感兴趣的文章
python面向对象[基础]
查看>>
如何使用榛子获得第一条短信验证码?
查看>>
Android进阶必学retrofit源码解析
查看>>
java 进销存 crm websocket即时聊天发图片文字 好友群组 SSM源码
查看>>
Day7:html和css
查看>>
什么是 5G?它比 4G 好在哪里?
查看>>
[译] C++ 和 Android 本地 Activity 初探
查看>>
Java异常简介及异常信息缺失处理
查看>>
VBA+正则表达式解决订单小问题
查看>>
字符编码ASCII、Unicode、UTF-8
查看>>
mybatis+dubbo+ springmvc+zookeeper分布式架构
查看>>
MJRefresh源码解读
查看>>
easyui tabs切换和单个页面手动刷新以及点击添加新的tabs
查看>>
一天4-5小时睡眠也可以高效工作
查看>>
图形化编程语言的设计
查看>>
实现一个前端路由,如何实现浏览器的前进与后退 ?
查看>>
面试题 async/await
查看>>
多线程协作wait、notify、notifyAll方法简介理解使用 多线程中篇(十四)
查看>>
Handler源码剖析
查看>>
微服务监控神器Prometheus的安装部署
查看>>