mysqlbinlog命令详解 Part 10 恢复MySQL
时间:2022-07-23
本文章向大家介绍mysqlbinlog命令详解 Part 10 恢复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
好了 今天的内容就说到这里,下节再见
- Spring整合Quartz分布式调度
- [接口测试 - 基础篇] 11 掌握下python解析YAML格式也是需要的
- 如何用Python创建眼下火爆的区块链?这篇干货请收藏
- [接口测试 - 基础篇] 10 别啊,还有INI格式呢,别忘记我
- [接口测试 - 基础篇] 09 其实吧,读写csv格式也是要掌握的
- 【源码分享】机器学习之Python支持向量机
- [接口测试 - 基础篇] 08 封装个基本的excel解析类
- 关关的刷题日记10——Leetcode 1. Two Sum 方法1
- BZOJ 2463: [中山市选2009]谁能赢呢?(新生必做的水题)
- 10个Python面试常问的问题
- 关关的刷题日记11——Leetcode 1. Two Sum 方法2、3
- 计蒜客:百度的科学计算器(简单)【python神解】
- 关关的刷题日记12——Leetcode 189. Rotate Array 方法1、2、3
- 关关的刷题日记13——Leetcode 414. Third Maximum Number
- MySQL 教程
- MySQL 安装
- MySQL 管理与配置
- MySQL PHP 语法
- MySQL 连接
- MySQL 创建数据库
- MySQL 删除数据库
- MySQL 选择数据库
- MySQL 数据类型
- MySQL 创建数据表
- MySQL 删除数据表
- MySQL 插入数据
- MySQL 查询数据
- MySQL where 子句
- MySQL UPDATE 查询
- MySQL DELETE 语句
- MySQL LIKE 子句
- mysql order by
- Mysql Join的使用
- MySQL NULL 值处理
- MySQL 正则表达式
- MySQL 事务
- MySQL ALTER命令
- MySQL 索引
- MySQL 临时表
- MySQL 复制表
- 查看MySQL 元数据
- MySQL 序列 AUTO_INCREMENT
- MySQL 处理重复数据
- MySQL 及 SQL 注入
- MySQL 导出数据
- MySQL 导入数据
- MYSQL 函数大全
- MySQL Group By 实例讲解
- MySQL Max()函数实例讲解
- mysql count函数实例
- MYSQL UNION和UNION ALL实例
- MySQL IN 用法
- MySQL between and 实例讲解
- Java开发岗面试题--基础篇(一)
- leetcode链表之找出倒数第k个节点
- MAC下安装nginx的正确姿势 实践笔记
- 关于 ThreadLocal 你需要知道的几点
- 关于Guava ForwardingMap
- http post Request header is too large 开发环境和线上版本解决方案
- 像java一样使用js contains 数组包含方法 实践笔记
- 服务治理之重试篇
- 一次排查线上接口偶发异常耗时引起的思考!
- 台阶很高,青蛙跳不跳?
- 从零开始认识堆排序
- Redis SDS 深入一点,看到更多!
- Centos7下Oracle 11g r2 本地/远程 用exp/imp命令快速导入导出数据 实践笔记
- js常用函数大全107个
- xtraReprot 动态绑定数据 数据列动态