mysql用binlog恢复数据_利用mysql的binlog恢复数据

MySQL Binary Log也就是常说的bin-log, ,是mysql执行改动产生的二进制日志文件,其主要作用有两个:

* 数据回复

* 主从数据库。用于slave端执行增删改,保持与master同步。

1.开启binary log功能

需要修改mysql的配置文件,本篇的实验环境是win7,配置文件为mysql安装目录\MySQL Server 5.1下的my.ini,添加一句log_bin = mysql_bin即可

eg:

[mysqld]

......

log_bin = mysql_bin

......

log_bin是生成的bin-log的文件名,后缀则是6位数字的编码,从000001开始,按照上面的配置,生成的文件则为:

mysql_bin.000001

mysql_bin.000002

......

配置保存以后重启mysql的服务器,用show variables like  '%bin%'查看bin-log是否开启,如图:

08de31814499fcc1db978a0c08d0796d.png

2.查看产生的binary log

bin-log因为是二进制文件,不能通过记事本等编辑器直接打开查看,mysql提供两种方式查看方式,在介绍之前,我们先对数据库进行一下增删改的操作,否则log里边数据有点空。

create table bin( id int(10) primary key auto_increment,name varchar(255));(测试前我已经建表)

insert into bin(name) values ('orange');

1.在客户端中使用  show binlog events in 'mysql_bin.000001'  语句进行查看,为了排序美观,可以在结尾加\G使结果横变纵,此时结尾无需加;语句结束符。

eg:

mysql> show binlog events in 'mysql_bin.000001'\G

...............省略...............

*************************** 3. row ***************************

Log_name: mysql_bin.000001

Pos: 174

Event_type: Intvar

Server_id: 1

End_log_pos: 202

Info: INSERT_ID=2

*************************** 4. row ***************************

Log_name: mysql_bin.000001

Pos: 202

Event_type: Query

Server_id: 1

End_log_pos: 304

Info: use `test`; insert into bin(name) values ('orange')

*************************** 5. row ***************************

...............省略...............

Log_name:此条log存在那个文件中,从上面可以看出这2条log皆存在与mysql_bin.000001文件中。

Pos:log在bin-log中的开始位置

Event_type:log的类型信息

Server_id:可以查看配置中的server_id,表示log是那个服务器产生

End_log_pos:log在bin-log中的结束位置

Info:log的一些备注信息,可以直观的看出进行了什么操作

2.用mysql自带的工具mysqlbinlog,这是我们就需要知道bin-log存在硬盘的什么位置,win7默认存在

C:\ProgramData\MySQL\MySQL Server 5.1\data文件夹下面,如果没有此文件夹,那我们可以通过配置文件中的

datadir="C:/ProgramData/MySQL/MySQL Server 5.1/Data/"

定位,如果还没有,那我就会说“各个系统的搜索功能都做的不错!”。这种查看方式就没那个美观了,如下

C:\ProgramData\MySQL\MySQL Server 5.1\data>mysqlbinlog mysql_bin.000001

/*!40019 SET @@session.max_insert_delayed_threads=0*/;

/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;

DELIMITER /*!*/;

# at 4

#121015 16:35:56 server id 1  end_log_pos 106   Start: binlog v 4,

server v 5.1.51-community-log created 121015 16:35:56 at startup

ROLLBACK/*!*/;

BINLOG '

7Mp7UA8BAAAAZgAAAGoAAAAAAAQANS4xLjUxLWNvbW11bml0eS1sb2cAAAAAAAAAAAAAAAAAAAAA

AAAAAAAAAAAAAAAAAADsyntQEzgNAAgAEgAEBAQEEgAAUwAEGggAAAAICAgC

'/*!*/;

# at 106

#121015 16:36:51 server id 1  end_log_pos 174   Query   thread_id=2     exec_time=0     error_code=0

SET TIMESTAMP=1350290211/*!*/;

SET @@session.pseudo_thread_id=2/*!*/;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=1, @@session.unique_checks=1, @@session.autocommit=1/*!*/;

SET @@session.sql_mode=1344274432/*!*/;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1/*!*/;

/*!\C utf8 *//*!*/;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=33/*!*/;

SET @@session.lc_time_names=0/*!*/;

SET @@session.collation_database=DEFAULT/*!*/;

BEGIN

/*!*/;

# at 174

#121015 16:36:51 server id 1  end_log_pos 202   Intvar

SET INSERT_ID=3/*!*/;

# at 202

#121015 16:36:51 server id 1  end_log_pos 309   Query   thread_id=2     exec_time=0     error_code=0

use test/*!*/;

SET TIMESTAMP=1350290211/*!*/;

insert into bin(name) values('xishizhaohua')

/*!*/;

# at 309

#121015 16:36:51 server id 1  end_log_pos 336   Xid = 28

COMMIT/*!*/;

# at 336

#121015 16:37:25 server id 1  end_log_pos 379   Rotate to mysql_bin.000002  pos: 4

DELIMITER ;

# End of log file

ROLLBACK /* added by mysqlbinlog */;

/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;

虽然排版有点乱,但从图中我们可以得到更多信息,如时间戳,自增的偏移,是否自动提交事务等信息。如下图为从中提取的一部分。

61d29ad9b24a885ff21cf7ca0d1a6989.png

3.利用bin_log恢复数据

1.最长用的就是回复指定数据端的数据了,可以直接恢复到数据库中:

mysqlbinlog  --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 |mysql -uroot -p123456

亦可导出为sql文件,再导入至数据库中:

mysqlbinlog  --start-date="2012-10-15 16:30:00" --stop-date="2012-10-15 17:00:00" mysql_bin.000001 >d:\1.sql

source d:\1.sql

2.指定开始\结束位置,从上面的查看产生的binary log我们可以知道某个log的开始到结束的位置,我们可以在恢复的过程中指定回复从A位置到B位置的log.需要用下面两个参数来指定:

--start-position="50" //指定从50位置开始

--stop-position="100"//指定到100位置结束

注意按位置来的计算的话,需要找到最后那条sql语句的最后那个位置,不能使用下个位置,但是使用时间来恢复的话必须使用下一个sql语句的时间才能恢复到上一条数据。

最后介绍几个bin_log的操作:

1.产看最后一个bin日志文件是那个,现在位置

4aef56868486cdec4471d425e316781e.png

2.启用新的日志文件,一般备份完数据库后执行

a01a291a67653137df82b368bf265a63.png

3.清空现有的所用bin-log

244bab855707e6e4586f0ee92917ada3.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/433418.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Perl,Python,Ruby,Javascript 四种脚本语言比较

Perl 为了选择一个合适的脚本语言学习,今天查了不少有关Perl,Python,Ruby,Javascript的东西,可是发现各大阵营的人都在吹捧自己喜欢的语言,不过最没有争议的应该是Javascript现阶段还不适合用来做独立开发&…

C++中的IPv6网络程序设计

IPv4 最初是由美国国防部开发的用于网际互联(IP)协议,后来它不仅发展了TCP,而且还进一步发展了IPv4(IP 协议4.0版)。IPv4现在已经广泛应用于Internet网络中,同时也应用于大多数计算机系统&#…

python regex_Python 正则表达式

定义在编写处理字符串的程序或网页时,经常会有查找符合某些复杂规则的字符串的需要。正则表达式就是用于描述这些规则的工具。简而言之:正则表达式就是记录文本规则的代码。特点:操作字符串1.更快的方式操作字符串;(表单校验,数据…

python 怎么处理json_Python是怎样处理json模块的

首先,了解下什么是JSON?JSON:JavaScript Object Notation 【JavaScript 对象表示法】JSON 是一种轻量级的数据交换格式,完全独立于任何程序语言的文本格式。一般,后台应用程序将响应数据封装成JSON格式返回。JSON的基本…

UEditor1.2.6.0在.net环境下使用

UEditor1.2.6.0 1.百度百科词条 2.UEditor官方网站 【CKEditorCKFinder的配置实用,可查看博主另一篇文章】 第一次接触UEditor还是在2011年的下半年里,当时由于需要找一款富文本编辑器进行新闻的网站开发,当时UEditor异常较多,就将…

sql 删除数据_从零开始学SQL:是什么、如何安装、基本语法、表格(创建、删除、更新)、数据(插入、删除、更新)...

一、学习知识的黄金圈思维用黄金圈思维分析自己学习SQL,能增加自己的效率和坚持下去的动力。二、SQL基础知识1.数据库概念: database ,按照数据结构来组织、存储和管理数据的仓库。2.关系数据库:多张表表之间的关系表:…

ubuntu ip设置

在Debian(ubuntu就是Debian类linux)中网卡的设置可以通过/etc/network/interfaces文件来进行,具体可分为三种不同的配置方式:DHCP自动获取、静态分配IP地址和PPPoE宽带拨号。 具体设置如下: 在进行配置之前,首先进入/etc/networ…

在mysql中你可以为视图创建索引_mysql中创建视图、索引

数据库的三级模式两级映射: 存储文件------>基本表----->视图 内模式 ------->模式 ------>外模式 一、视图 1、什么是视图: 视图是从一个或多个表中导出来的表,是一种虚拟存在的表。 视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据。 这样,用…

mysql 转换编码

ALTER TABLE tablename CONVERT TO CHARACTER SET UTF8;转载于:https://www.cnblogs.com/wuruile/p/3164920.html

嵌入式Linux操作系统的版本查询

嵌入式Linux版本查询: uname -a 显示内核版本 uname -m 显示ARM处理器内核信息 uname -v 显示操作系统的编译时间 linux版本:在linux/utsrelease.h中定义: [cpp] view plaincopy#define UTS_RELEASE "2.6.31-liuqimingxinguodu.com--…

函数使用了堆栈的字节超过_在C语言中如何访问堆栈?

堆栈一般是用来保存变量之类的东西(静态变量在内存中,虽然堆栈就是内存的一部分,但为了防止歧义,还是分成两部分来说),一般情况下没必要去故意读取堆栈的值,变量用变量名就可以直接访问&#xf…

怎么解决相位抵消_【录音教程】如何防止话筒拾音的声学相位抵消

设想一下你以单声道的模式为一个吉他歌手做扩声,一支人 声听起来比较古怪,有点“空”,同时有滤波器之类的效果声。为什么会这样?主唱话筒拾取歌手的演唱,同时拾取箱琴的话筒也串入了歌手的声音(见图1)。吉 他话筒离主唱…

win32 ipv6 bind 10014问题

这两天实验了一下,windows xp系统下的 ipv6 udp网络通信。要在windows xp下测试ipv6,首先在命令行窗口下 执行 ipv6 install 和 net start tcpipv6 命令。 在bind本地地址时,发现没法使用 in6addr_any 这通配地址。即下面这种使用方式&a…

string 找出所有数字 index_发现规律,解决整数转罗马数字

嗨,各位!我们又准时见面了,即将迎来难得的周末时光,我们今天来一道相对简单的题目逻辑梳理的题目,原定的动态规划的常见题型我们放在周末进行更新。话不多说,我们先看题目: 01 . 题目罗马数字包…

ASP.NET MVC的路由

好久没写博文了,感觉最近好像少了点动力。唉!这回就看看这个MVC的路由。 说这个路由机制其实不是MVC里面特有的,ASP.NET里面本身就有的,只不过在WebForm里面一般比较少用,而在MVC里就是把原本的路由扩展了。原本对不知…

win32 ipv6 sendto recvfrom

1. sendto 在windows xp下进行ipv6的udp网络通信时,目标地址应该像如下方式构造 addrinfo hins, *res; memset(&hins, 0, sizeof(hins)); hins.ai_family AF_INET6; hins.ai_socktype SOCK_DGRAM; hins.ai_protocal IPPROTO_UDP; hins.ai_flags AI_NUERICH…

vscode python环境配置_用VScode配置Python开发环境

前言VScode是一个相当优秀的IDE,具备开源、跨平台、模块化、插件丰富、启动时间快、颜值高、可高度定制等等优秀的特质,不愧是微软爸爸的私生子。所以用VScode来编写Python,也是相当的好用的。所以,今天我们就来讲讲,怎…

java情书_Java情书已写好,就差妹子了!

我是Java程序员我用我的方式表达对你的爱!我能抽象出整个世界...但是我却不能抽象出你...你肯定是一个单例,因为你是那样的独一无二...所以我的世界并不完整...我可以重载甚至覆盖这个世界里的任何一种方法...但是却不能覆盖对你的思念...也许命中注定了…

JS中的正则表达式小小的技巧---TEST方法的使用

TEST 方法 返回一个 Boolean 值,它指出在被查找的字符串中是否存在模式。 rgexp.test(str) 参数 rgexp 必选项。包含正则表达式模式或可用标志的正则表达式对象。 str 必选项。要在其上测试查找的字符串。 说明 test 方法检查在字符串中是否存在一个模式&#xff0c…

windows下手动配置ipv6地址

在XP,2003等早期版本中,ipv6地址在“网络连接”的属性配置里是无法手工配置的,只能使用netsh配置。配置方法如下:首先,安装IPV6协议,ipv6 install 第二步,查看当前使用的本地连接信息: 如上图&a…