千家信息网

mysqlbinlog工具基于日志恢复的示例分析

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章将为大家详细讲解有关mysqlbinlog工具基于日志恢复的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1)RESET MASTER在上面查看日志
千家信息网最后更新 2025年02月23日mysqlbinlog工具基于日志恢复的示例分析

这篇文章将为大家详细讲解有关mysqlbinlog工具基于日志恢复的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。



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



查看删除后的日志



可以看到,以前的日志全部被清空,新的日志从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


这里我们设定保存日志为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[password]
当连接服务器时使用的密码。如果使用短选项形式(-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
显示版本信息并退出。

关于"mysqlbinlog工具基于日志恢复的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

日志 二进制 时间 服务器 服务 文件 事件 数据 语句 格式 帮助 输出 参量 命令 备份 密码 数据库 进制 从二 工具 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 内网代理服务器上外网 数据库原理试题及其答案 字节跳动网络安全防护 服务器管理员黑玩家 签完软件开发合同后悔了6 自学软件开发的环境 鸠鸠互联网科技是否诈骗 增加网络安全管理人员编制 学校网络安全应急预案免费 买火车票软件开发 国家网络安全违规行为举报邮箱 电脑登录服务器超时怎么办 软件开发生产率计算公式 上海潮江网络技术有限公司 云之遥 服务器 张家口云财务软件网络技术 金山区智能网络技术销售公司 行情服务器链接失败怎么解决 湖南加固服务器云主机 电视认证服务器异常怎么解决 金蝶服务器的系统管理 怎样把流量引到数据库防火墙 求生而服务器 壹粒籽软件开发有限公司 网络技术有限公司广告语 上海网络技术转让行业标准 金山区机电软件开发解决方案 网络安全宣传学校 北京仁科互联网络技术有限公司 南京网络安全
0