mysql 通过bin-log恢复数据方法详解
来源:互联网 发布:spss软件如何下载 编辑:程序博客网 时间:2024/06/05 02:34
转自:http://www.111cn.net/database/mysql/51632.htm
mysql 通过bin-log恢复数据方法详解
今天看了同事不小心删除了mysql数据库中的用户表。还好有打开mysql的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_password
port =3306
socket =/tmp/mysql.sock
default-character-set-utf8
.......
[mysqld]
port= 3306
socket= /var/lib/mysql/mysql.sock
log-slow-queries=mysql-slowlog
log-error=mysql.err
log=mysql.log
log-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日志
- mysql 通过bin-log恢复数据方法详解
- mysql通过bin-log日志恢复
- mysql bin-log回滚恢复数据
- mysql通过mysql-bin文件恢复数据
- 通过Mysql-bin日志恢复还原数据
- MySQL主从数据库之Mysql bin-log日志恢复数据
- Mysql的Bin log数据恢复:不小心删除数据库
- 利用 MySQL bin-log 恢复数据表
- msyql从bin-log日志恢复数据
- 数据恢复(1) bin-log
- MySQL bin-log分析方法
- MySQL bin-log分析方法
- mysql bin-log日志处理详解
- mysql bin-log日志与mysqldump备份与恢复
- mysql bin-log日志与mysqldump备份与恢复
- mysql5.6 bin-log 日志设置、查看、恢复数据
- mysql 数据恢复 通过binlog恢复数据
- mysql通过binlog恢复数据
- Spring4笔记----动态代理
- 软件设计架构之DDD,SOA,原始,REST,Actor,CQRS
- PyGobject(四十二)布局容器之ButtonBox
- 反射+注解或去数据库查询语句
- 程序员的观察力
- mysql 通过bin-log恢复数据方法详解
- Linux 文件权限管理 之 RWX
- 利用JAXBContext将xml文件转换成List<T>
- 浅谈Java反射(1)
- KMP算法
- Spring从入门到精通视频教程合集
- hdoj 1010 Tempter of the Bone (dfs 奇偶剪枝)
- Lucene学习笔记之(五)lucene的特殊查询
- Linux 文件权限管理 之 ACL