阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

mysqlbinlog工具基于日志恢复详细解释

385次阅读
没有评论

共计 4264 个字符,预计需要花费 11 分钟才能阅读完成。

如果每天都会生成大量的二进制日志,这些日志长时间不清理的话,将会对磁盘空间带来很大的浪费,所以定期清理日志是 DBA 维护 MySQL 的一个重要工作

1)RESET MASTER
在上面查看日志存放的文件夹中,二进制日志命名的格式是以 mysql-bin.*,* 代表日志的序号, 序号是递增的, 其中还有 mysql-bin.index 是日志的索引文件, 记录了日志的最大序号
 我们执行 RESET MASTER 命名删除全部日志

mysqlbinlog 工具基于日志恢复详细解释

 查看删除后的日志

mysqlbinlog 工具基于日志恢复详细解释

 可以看到, 以前的日志全部被清空, 新的日志从 00001 开始

2)PURGE MASTER LOGS TO & PURGE MASTER LOGS BEFORE
执行 PURGE MASTER LOGS TO ‘mysql-bin.******’ 命令,是将 ’******’ 编号之前的所有日志进行删除
 执行 PURGE MASTER LOGS BEFORE ‘yyyy-mm-dd hh:mm:ss’ 命令,是将在 ’yyyy-mm-dd hh:mm:ss’ 时间之前的所有日志进行删除

3)-EXPIRE_LOGS_DAYS
此参数是设置日志的过期天数,过期的日志将会被自动删除,这有利于减少我们管理日志的工作量,需要修改 my.cnf

mysqlbinlog 工具基于日志恢复详细解释

这里我们设定保存日志为 3 天,3 天之后过期的日志将被自动删除

恢复
 bin-log 是记录着 mysql 所有事件的操作,当 mysql 发生灾难性错误时,可以通过 bin-log 做完整恢复,基于时间点的恢复,和基于位置的恢复

完整恢复,假定我们每天凌晨 2 点都会使用 mysqldump 备份数据库,但在第二天早上 9 点由于数据库出现了故障,数据无法访问,需要恢复数据,先使用昨天凌晨备份的文件进行恢复到凌晨 2 点的状态,在使用 mysqlbinlog 恢复自 mysqldump 备份以来的 binlog
 mysql localhost mysql-bin.000001 | mysql -uroot -p
这样数据库就可以完全的恢复到崩溃前的完全状态

 基于时间点的恢复,由于误操作,比如说删除了一张表,这时使用上面讲的完全恢复是没有用的,因为日志里面还存在误操作的语句,,我们需要的是恢复到误操作前的状态,然后跳过误操作的语句,再恢复后面操作的语句,假定我们删除了一张表的误操作发生在 10:00 这个时间点,我们可以使用下面的语句用备份和 binlog 将数据恢复到故障前

mysqlbinlog –stop-date=’2010-09-04 9:59:59′ /var/log/mysql-bin.000001 | mysql -uroot -p

然后跳过误操作的时间点,继续执行后面的 binlog

mysqlbinlog –start-date=’2010-09-04 10:01:00′ /var/log/mysql-bin.000001 | mysql -uroot -p

其中 –stop-date=’2010-09-04 9:59:59′ 和 –start-date=’2010-09-04 10:01:00′ 其中的时间是你误操作的时间点,当然了,这个时间点你需要你自己计算的,而且这个时间点还可以涉及到的不只是误操作,还可以有正确的操作也被跳过去了。

基于位置恢复,由于上面提到的,使用基于时间点的恢复可能出现,在一个时间点里面可能存在误操作和其他正确的操作,所以我们需要一种更为精确的恢复方式
 使用 mysqlbinlog 查看二进制,可看到

 

 其中 drop tables test1 这个误操作的 end_log_pos 为 8879917,几下这个 id, 得出它前后操作的 id 分别为 8879916,8879918
我们将进行位置恢复操作

mysqlbinlog –stop-position=’8879916′ /var/log/mysql-bin.000001 | mysql -uroot -p

 mysqlbinlog –start-position=’8879918′ /var/log/mysql-bin.000001 | mysql -uroot -p

服务器生成的二进制日志文件写成二进制格式。要想检查这些文本格式的文件,应使用 mysqlbinlog 实用工具。
 应这样调用 mysqlbinlog:
shell> mysqlbinlog [options] log-files…例如,要想显示二进制日志 binlog.000003 的内容,使用下面的命令:
shell> mysqlbinlog binlog.0000003 输出包括在 binlog.000003 中包含的所有语句,以及其它信息例如每个语句花费的时间、客户发出的线程 ID、发出线程时的时间戳等等。
 通常情况,可以使用 mysqlbinlog 直接读取二进制日志文件并将它们用于本地 MySQL 服务器。也可以使用–read-from-remote-server 选项从远程服务器读取二进制日志。
 当读取远程二进制日志时,可以通过连接参数选项来指示如何连接服务器,但它们经常被忽略掉,除非你还指定了–read-from-remote-server 选项。这些选项是–host、–password、–port、–protocol、–socket 和–user。
 还可以使用 mysqlbinlog 来读取在复制过程中从服务器所写的中继日志文件。中继日志格式与二进制日志文件相同。

mysqlbinlog 支持下面的选项:
·
—help,-?
 显示帮助消息并退出。
·
—database=db_name,-d db_name
只列出该数据库的条目 (只用本地日志)。
·
–force-read,-f
使用该选项,如果 mysqlbinlog 读它不能识别的二进制日志事件,它会打印警告,忽略该事件并继续。没有该选项,如果 mysqlbinlog 读到此类事件则停止。
·
–hexdump,-H
在注释中显示日志的十六进制转储。该输出可以帮助复制过程中的调试。在 MySQL 5.1.2 中添加了该选项。
·
–host=host_name,-h host_name
获取给定主机上的 MySQL 服务器的二进制日志。
·
–local-load=path,-l pat
为指定目录中的 LOAD DATA INFILE 预处理本地临时文件。
·
–offset=N,-o N
跳过前 N 个条目。
·
–password[=password],-p

  此处含有隐藏内容,需要正确输入密码后可见!

当连接服务器时使用的密码。如果使用短选项形式 (-p),选项和 密码之间不能有空格。如果在命令行中–password 或 - p 选项后面没有 密码值,则提示输入一个密码。
·
–port=port_num,-P port_num
用于连接远程服务器的 TCP/IP 端口号。
·
–position=N,-j N
不赞成使用,应使用–start-position。
·
–protocol={TCP | SOCKET | PIPE | -position

使用的连接协议。
·
–read-from-remote-server,-R
从 MySQL 服务器读二进制日志。如果未给出该选项,任何连接参数选项将被忽略。这些选项是–host、–password、–port、–protocol、–socket 和–user。
·
–result-file=name, -r name
将输出指向给定的文件。
·
–short-form,-s
只显示日志中包含的语句,不显示其它信息。
·
–socket=path,-S path
用于连接的套接字文件。
·
–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 参量时的事件起停止读。
·
–to-last-logs,-t
在 MySQL 服务器中请求的二进制日志的结尾处不停止,而是继续打印直到最后一个二进制日志的结尾。如果将输出发送给同一台 MySQL 服务器,会导致无限循环。该选项要求–read-from-remote-server。
·
–disable-logs-bin,-D
禁用二进制日志。如果使用–to-last-logs 选项将输出发送给同一台 MySQL 服务器,可以避免无限循环。该选项在崩溃恢复时也很有用,可以避免复制已经记录的语句。注释:该选项要求有 SUPER 权限。
·
–user=user_name,-u user_name
连接远程服务器时使用的 MySQL 用户名。
·
–version,-V
显示版本信息并退出。

MySQL 5.6.12 切换 binlog 二进制日志路径  http://www.linuxidc.com/Linux/2016-01/126979.htm

关于使用 MySQL binlog 对数据进行恢复的实战  http://www.linuxidc.com/Linux/2016-01/127808.htm

MySQL 5.6.12 切换 binlog 二进制日志路径  http://www.linuxidc.com/Linux/2016-01/126979.htm

mysqlbinlog 解析 binlog 乱码问题解密  http://www.linuxidc.com/Linux/2016-01/126978.htm

MySQL 通过 binlog 来恢复数据  http://www.linuxidc.com/Linux/2015-12/126897.htm

MySQL binlog 组提交与 XA(两阶段提交)  http://www.linuxidc.com/Linux/2015-11/124942.htm

MySQL 使用备份和 binlog 进行数据恢复 http://www.linuxidc.com/Linux/2014-12/110875.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-06/132466.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4264字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7802859
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛NAS-11:咪咕视频订阅部署全攻略

星哥带你玩飞牛 NAS-11:咪咕视频订阅部署全攻略 前言 在家庭影音系统里,NAS 不仅是存储中心,更是内容...
【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件

【开源神器】微信公众号内容单篇、批量下载软件 大家好,我是星哥,很多人都希望能高效地保存微信公众号的文章,用于...
在Windows系统中通过VMware安装苹果macOS15

在Windows系统中通过VMware安装苹果macOS15

在 Windows 系统中通过 VMware 安装苹果 macOS15 许多开发者和爱好者希望在 Window...
我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用AI做了一个1978年至2019年中国大陆企业注册的查询网站

我用 AI 做了一个 1978 年至 2019 年中国大陆企业注册的查询网站 最近星哥在 GitHub 上偶然...
还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手!

还在找免费服务器?无广告免费主机,新手也能轻松上手! 前言 对于个人开发者、建站新手或是想搭建测试站点的从业者...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛NAS-14:解锁公网自由!Lucky功能工具安装使用保姆级教程

星哥带你玩飞牛 NAS-14:解锁公网自由!Lucky 功能工具安装使用保姆级教程 作为 NAS 玩家,咱们最...
星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛NAS-12:开源笔记的进化之路,效率玩家的新选择

星哥带你玩飞牛 NAS-12:开源笔记的进化之路,效率玩家的新选择 前言 如何高效管理知识与笔记,已经成为技术...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...