暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

mysqlbinlog命令详解 Part 10 恢复MySQL

宅必备 2019-05-14
166

 

往期专题请查看www.zhaibibei.cn
这是一个坚持Oracle,Python,MySQL原创内容的公众号


前情提要

mysqlbinlog命令详解 Part 1-实验环境准备

mysqlbinlog命令详解 Part 2 - MySQL 事件类型

mysqlbinlog命令详解 Part 3  - 查看十六进制格式内容

mysqlbinlog命令详解 Part 4 -查看行事件具体SQL语句

mysqlbinlog命令详解 Part 5 通过位置和时间查看日志

mysqlbinlog命令详解 Part 6 读取远程MySQL服务器日志

mysqlbinlog命令详解 Part 7 备份二进制日志文件

mysqlbinlog命令详解 Part 8 指定 Server ID

mysqlbinlog命令详解 Part 9 MySQL备份策略

实验环境

此次实验的环境如下

  • MySQL 5.7.25

  • Redhat 6.10

  • binlog模式采用row模式

前面的一些章节我们对mysqldump常用命令进行了讲解

这个专题的内容为mysqlbinlog命令的详解

mysqlbinlog是MySQL中用来处理binlog的工具

上节的内容为新建一个备份策略

这节内容讲如何使用mysqldump恢复MySQL

1. 还原策略

我们假设周五早上9点发生了故障导致无法打开

我们现在需要将其恢复到最近的时间点

1.1 还原周日零点的备份

操作系统命令行

shell> mysql -h127.0.0.1 -usystem -P3306 -p < /tmp/backup_sunday_0_AM.sql

复制

mysql命令行

shell> mysql -h127.0.0.1 -usystem -P3306 -p

mysql>
source /tmp/backup_sunday_0_AM.sql

复制

1.2 还原周日零点直到周五零点的备份

我们假设这期间总共生成5个二进制文件

shell> mysqlbinlog mysql-bin.000001  mysql-bin.000002  mysql-bin.000003 mysql-bin.000004  mysql-bin.000005  | mysql -h127.0.0.1 -usystem -P3306 -p

复制

注意,需要将所有需要的二进制文件写在一起,不可分多次

如果在开始备份时没有指定--flush-logs参数,则需要首先查看备份时所处的位置

-- Position to start replication or point-in-time recovery from 
-- CHANGE MASTER TO MASTER_LOG_FILE='masterbin.000001,MASTER_LOG_POS=100;

复制

之后针对该二进制文件进行基于位置点的恢复

mysqlbinlog    --start-position=100  /path/to/log/master-bin.000001  | mysql -h127.0.0.1 -usystem -P3306 -p

复制

1.3 恢复至最新状态

如果损坏数据库的二进制文件还存在,则可利用其进行恢复

假设周五零点到九点的二进制文件为mysql-bin.000006 mysql-bin.000007  则可以使用如下命令

shell> mysqlbinlog mysql-bin.000006  mysql-bin.000007 | mysql -h127.0.0.1 -usystem -P3306 -p

复制

1.3.1 基于时间点恢复

这里我们同样可以恢复到早上8点

首先使用mysqlbinglog查看早上8点在哪个二进制文件中

这里假设在mysql-bin.000007 中

之后用如下语句恢复

mysqlbinlog   --stop-datetime ="2019-04-16 08:00:00"  /path/to/log/master-bin.000007 | mysql -h127.0.0.1 -usystem -P3306 -p

复制

也可以指定起始时间

mysqlbinlog  --start-datetime="2019-04-16 08:00:00"   /path/to/log/master-bin.000007 | mysql -h127.0.0.1 -usystem -P3306 -p

复制

1.3.2 基于事件位置恢复

我们同样可以通过事件的位置来进行恢复

我们假设一个drop表的操作发生在master-bin.000007的位置100处

我们可以使用下面语句

mysqlbinlog    --stop-position=100  /path/to/log/master-bin.000001  | mysql -h127.0.0.1 -usystem -P3306 -p

复制

2. 参考链接

https://dev.mysql.com/doc/refman/5.7/en/backup-and-recovery.html

好了 今天的内容就说到这里,下节再见





可点击阅读原文获得更好的阅读体验,推荐在PC端阅读


也可在公众站内搜索中回复 mysqlbinlog搜索相关内容

或直接打开个人网页搜索


http://www.zhaibibei.cn


往期专题包括:


  • Python 自动化运维

  • MySQL  安装

  • 打造属于自己的监控系统

  • Python爬虫基础

  • Oracle awr报告全解析

  • Oracle ASM全解析

  • Oracle Data Guard全解析

  • Oracle ClusterWare全解析

  • Oracle常见参数解析

  • Oracle常见故障处理

  • Oracle SQL优化案例


文章转载自宅必备,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论