北京SEO

mysql 通过bin-log恢复数据方法详解

2019/10/10/17:35:52  阅读:1874  来源:谷歌SEO算法  标签: Safari浏览器

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

今天看了同事不小心删除了mysql数据库中的用户表,还好有打开mysql的bin-log记录了日志,这样就可以通过日志来还原之前备份的数据,具体的操作是通过mysqlbinlog这个指令来完成的,代码如下:

  1. /mysql/bin/mysqlbinlog--database=fox--start-date="2013-01-225:00:00"--stop-date="2013-01-229:00:00"/mysql/data/mysql-bin.000001|/mysql/bin/mysql-uroot-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).创建一个表,代码如下:

  1. mysql>usetest;
  2. mysql>createtablet1(idint);
  3. mysql>showtables;

2).添加两行数据,代码如下:

  1. mysql>insertintot1values(1);
  2. mysql>insertintot1values(2);
  3. mysql>select*fromt1;

3).备份现有数据(09:30),代码如下:

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

4).在备份完后再添加三行数据记录,代码如下:

  1. mysql>insertintot1values(3);
  2. mysql>insertintot1values(4);
  3. mysql>insertintot1values(5);
  4. --phpfensi.com

5).此时突然数据库损损坏或者认为删除,代码如下:

mysql>droptable t1;

6).用已备份的test.sql来恢复数据库,代码如下:

#mysql -uroot-p123456 test < test.sql

7).从bin-log日志恢复,代码如下:

  1. #/usr/local/mysql/bin/mysqlbinlog–no-defaultsmysql-bin.000006|more//查看bin-log日志,在我的虚力机上bin-log日志从mysql-bin.000005开始
  2. #/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 日志

  1. #vi/etc/my.cnf
  2. [client]
  3. #password=your_password
  4. port=3306
  5. socket=/tmp/mysql.sock
  6. default-character-set-utf8
  7. .......
  8. [mysqld]
  9. port=3306
  10. socket=/var/lib/mysql/mysql.sock
  11. log-slow-queries=mysql-slowlog
  12. log-error=mysql.err
  13. log=mysql.log
  14. log-bin=mysql-bin//删除#符号

2.查看二进制文件(mysql-bin.******),代码如下:

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

3.查看mysqbinlog日志是否开启,代码如下:

mysql>showvariables like “%log-bin%;

4.与Mysqlbin-log有关的日志操作,代码如下:

  1. mysql>flushlogs;//此时就会多一个最新的bin-log日志
  2. mysql>showmasterstatus;//查看最后一个bin日志
  3. mysql>resetmaster;//清空所有的bin-log日志
  4. mysql>mysqlbinlog–no-defaultsmysql-bin.******|more//查看bin-log日志

广告内容

mysql 通过bin-log恢复数据方法详解 mysql 通过bin-log恢复数据方法详解 mysql 通过bin-log恢复数据方法详解

相关阅读

热门评论

昝辉Zac 昝辉Zac

Zac的SEO博客,坚持12年,优化成为生活。

总篇数171

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法