mysql 通过bin-log恢复数据方法详解
2016-07-30 10:49
591 查看
转自:http://www.111cn.net/database/mysql/51632.htm
mysql 通过bin-log恢复数据方法详解
mysql中bin-log在mysql默认状态下是没有打开的,我们要先打开mysql 开启bin-log功能,然后再通过备份的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; |
代码如下 | 复制代码 |
show binlog events g; |
代码如下 | 复制代码 |
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); |
代码如下 | 复制代码 |
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日志 |
一、 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//删除#符号 |
代码如下 | 复制代码 |
#cd/usr/local/mysql/bin/ && ls |
代码如下 | 复制代码 |
mysql>showvariables like “%log-bin%; |
代码如下 | 复制代码 |
mysql>flushlogs;//此时就会多一个最新的bin-log日志 mysql>showmaster status;//查看最后一个bin日志 mysql>resetmaster;//清空所有的bin-log日志 mysql>mysqlbinlog–no-defaults mysql-bin.******|more//查看bin-log日志 |
相关文章推荐
- MySql中出现 Illegal mix of collations (latin1_swedish_ci,COERCIBLE) and (gbk_chinese_ci,COERCIBLE) for
- 报错:1130-host ... is not allowed to connect to this MySql server 开放mysql远程连接 不使用localhost
- 数据库Mysql的安装心得
- mac mysql初始密码的重置
- 技术博客么?开始每天一更
- MYSQL 源码解读系列 [线程池。。] ----dennis的博客
- MySQL中的semi-join
- MySQL执行计划解读 转他人文章
- mysql中的外键
- MySQL实现差集(Minus)和交集(Intersect)
- MySQL创建用户与授权
- Mysql常用命令详解
- 【mysql】mysql数据库常用命令
- mysql timestamp 和 date比较
- mysql索引的最左前缀原则
- MySQL DBA 分歧之一 --> 读写分离场景中读写账号是否分离?
- 系统服务列表里面没mysql相关服务
- Mac中安装tar包的Mysql服务
- mysql操作
- mysql主从复制-CHANGE MASTER TO 语法详解