mysqlbinlog 恢复数据的四种方法

mysqlbinlog 命令

作用:mysqlbinlog 是用来解析mysql的binlog日志的。

[[email protected] data]# file mysql-bin.000001

mysql-bin.000001: MySQL replication log

[[email protected] data]#

mysqlbinlog日志无法直接用cat 查看,需要用mysqlbinlog命令转换为普通文件才能查看

也只有用mysqlbinlog命令把binlog日志转化为普通文件之后,才能用这个普通文件进行数据恢复

参数解析:

–start-datetime=datetime

从二进制日志中第1个日期时间等于或晚于datetime参量的事件开始读取。datetime值相对于运行mysqlbinlog的机器上的本地时区。该值格式应符合DATETIME或TIMESTAMP数据类型。例如:

shell> mysqlbinlog –start-datetime=”2004-12-25 11:25:56″ binlog.000003该选项可以帮助点对点恢复。

–stop-datetime=datetime

从二进制日志中第1个日期时间等于或晚于datetime参量的事件起停止读。关于datetime值的描述参见–start-datetime选项。该选项可以帮助及时恢复。

–start-position=N

从二进制日志中第1个位置等于N参量时的事件开始读。

–stop-position=N

从二进制日志中第1个位置等于和大于N参量时的事件起停止读。

-d 指定恢复binlog日志中的某个库的日志

##########################################

1、例子:基于位置点恢复

其中drop tables test1这个误操作的end_log_pos为9917,几下这个id,得出它前后操作的id分别为9916,9918

我们将进行位置恢复操作

只给stop指定位置,那么从日志文件开始恢复数据,恢复到stop指定时间点

mysqlbinlog --stop-position=‘9916‘ /var/log/mysql-bin.000001 | mysql -uroot -p

只给定start指定位置,那么就从start指定位置开始恢复,恢复到文件的结束

mysqlbinlog --start-position=‘9918‘ /var/log/mysql-bin.000001 | mysql -uroot -p

如果即给了start开始位置点,也给定了stop停止时间点,那么就是从开始点开始到停止位置点结束

##########################################

2、基于时间点恢复

只给stop时间,不给start时间,就从文件的开头开始恢复,恢复到指定的stop时间停止恢复

mysqlbinlog -–stop-datetime=”20014-12-25 11:25:56“ /var/log/mysql-bin.000001 | mysql -uroot -p

只给start时间,就是从start指定的时间开始恢复,恢复到binlog文件的结束

mysqlbinlog -–start-datetime=”20014-12-25 11:29:56“ /var/log/mysql-bin.000001 | mysql -uroot -p

如果给了开始时间和结束数据,那就是恢复开始到结束stop时间点的数据

##########################################

3、恢复指定库的数据 -d

—database=db_name,-d db_name

只列出该数据库的条目(只用本地日志)。仅仅恢复指定数据库的数据,如下面的,仅仅恢复数据库lvnian的数据而已,其他库的数据不会恢复

mysqlbinlog -d lvnian /var/log/mysql-bin.000001 | mysql -uroot -p

时间: 2024-10-12 17:40:59

mysqlbinlog 恢复数据的四种方法的相关文章

http之post方法 提交数据的四种方法

http协议中,post方法用来向服务端提交数据, 这里介绍四种方式: application/x-www-form-urlencoded multipart/form-data application/json text/xml 由于是在http协议下工作,这里先看下http协议的样子. http协议的特点: 建议在TCP/IP之上的应用层,用ASCII码传输: http请求分为三部分,请求请求行,消息头,消息体,其中消息头和消息体用(CR/LF)空行隔开: <method> <req

在Activity间传递数据的四种方法及返回结果

1.通用方法 使用intent的PutExtra方法传入,用getExtra等方法获得数据 主类 Intent intent=new Intent(MainActivity.this,OtherActivity.class); intent.putExtra("name", "张三"); intent.putExtra("age", 23); intent.putExtra("address", "北京")

Android提交数据到服务器的两种方式四种方法

Android应用开发中,会经常要提交数据到服务器和从服务器得到数据,本文主要是给出了利用http协议采用HttpClient方式向服务器提交数据的方法. /** * @author Dylan * 本类封装了Android中向web服务器提交数据的两种方式四种方法 */ public class SubmitDataByHttpClientAndOrdinaryWay { /** * 使用get请求以普通方式提交数据 * @param map 传递进来的数据,以map的形式进行了封装 * @p

IOS开发之——四种方法解析Jason数据(转)

本文将介绍TouchJson. SBJson .JSONKit 和 iOS5所支持的原生的json方法,解析国家气象局API,TouchJson和SBJson需要下载他们的库 TouchJson包下载: http://download.csdn.net/detail/enuola/4523169 SBJson 包下载: http://download.csdn.net/detail/enuola/4523177 JSONKit包下载:http://download.csdn.net/detail

mysql insert插入时实现如果数据表中主键重复则更新,没有重复则插入的四种方法

[CSDN下载] Powerdesigner 设计主键code不能重复等问题 [CSDN博客] Oracle中用一个序列给两个表创建主键自增功能的后果 [CSDN博客] MySQL自增主键删除后重复问题 [CSDN博客] mysql 主从复制 双主从复制原理 防止主键重复问题(必看) [CSDN博客] replace into导致mysql自增列导致主键重复问题分析 [CSDN博客] 一个循环更新某库所有表所有非主键列的值方法(sql 2005 & mysql) [CSDN博客] mysql i

使用mysqlbinlog恢复数据

一.开启bin-log 1.安装mysql [[email protected] ~]# yum -y install mysql mysql-devel mysql-server 2.开启bin-log功能 [[email protected] ~]# vi /etc/my.cnf       1 [mysqld]       2 datadir=/var/lib/mysql       3 socket=/var/lib/mysql/mysql.sock       4 user=mysql

Spring Security3的四种方法概述

使用Spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过,并经过验证: 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现,并经过验证. 三种是细分角色和权限,并将用户.角色.权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,     并分别实现Ac

使用Spring Security3的四种方法概述

使用Spring Security3的四种方法概述 那么在Spring Security3的使用中,有4种方法: 一种是全部利用配置文件,将用户.权限.资源(url)硬编码在xml文件中,已经实现过,并经过验证: 二种是用户和权限用数据库存储,而资源(url)和权限的对应采用硬编码配置,目前这种方式已经实现,并经过验证. 三种是细分角色和权限,并将用户.角色.权限和资源均采用数据库存储,并且自定义过滤器,代替原有的FilterSecurityInterceptor过滤器,     并分别实现Ac

两个变量交换的四种方法

对于两种变量的交换,我发现四种方法,下面我用Java来演示一下. 1.利用第三个变量交换数值,简单的方法. class TestEV //创建一个类 { public static void main(String[]args) { int x =5,y=10; //定义两个变量 int temp = x; //定义第三临时变量temp并提取x值 x = y; //把y的值赋给x y = temp; //然后把临时变量temp值赋给y System.out.println("x="+x