首页 > 数据库 >MySQL 通过 binlog 日志恢复数据

MySQL 通过 binlog 日志恢复数据

时间:2022-11-14 08:56:36浏览次数:42  
标签:binlog name -- 转储 MySQL 日志 数据

binlog 日志,即 binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即主节点维护一个 binlog 日志文件,从节点从 binlog 中同步数据,也可以通过 binlog 日志来恢复数据;

binlog 日志包括两类文件;第一个是二进制索引文件(后缀名为.index),第二个为日志文件(后缀名为.00000*),记录数据库所有的 DDL 和 DML (除了查询语句 select)语句事件

1.1 基础命令

-- 登录 MySQL 查看 binlog 日志的状态
SHOW VARIABLES LIKE '%log_bin%';

-- 查看所有 binlog 日志文件
SHOW MASTER LOGS;

-- 查看最后一个 binlog 日志的编号名称及其最后一个操作事件 pos 结束点的值
SHOW MASTER STATUS;

-- 刷新日志
FLUSH LOGS;

-- 清空所有 binlog 日志命令
RESET MASTER;

每当 mysql.service 服务重启时,会自动执行刷新 binlog 日志命令,mysqldump 备份数据时加 -F 选项也会刷新binlog 日志

1.2 恢复数据

1.2.1 场景

当前数据:


进行数据备份:

mysqldump -h 101.201.233.67 -P 10000 -u root --single-transaction --flush-logs --master-data=2 --all-databases > ./ali_all.sql -p

进行数据新增:

进行数据修改:

删库跑路!!

See the source image

1.2.2 数据还原

dba 上场

Step1:刷新 binlog

刷新 binlog 重新创建一个日志的目的是接下来所有操作的数据都会写入到新的日志中,旧日志中不会在写入任何数据。旧日志的数据就是备份之后到删库之前的所有操作日志,重建日志就不会有过多的数据影响恢复

FLUSH LOGS;

Step2:备份文件恢复

mysql -h 101.201.233.67 -P 10000 -u root -p < ali_all.sql

可以看到此时数据只恢复到 mysqldump 那一时刻,接下来的数据需要用 binlog 进行恢复

Step 3:解析 binlog 信息

mysqlbinlog binlog.000002 > binlog.sql

-- 打开 binlog.sql

可以看到 end_log_pos 1919 是进行更新的最后位置

Step4:执行复原

mysqlbinlog --stop-position=1919 binlog.000002 | mysql -h 101.201.233.67 -P 10000 -u root -p

至此,数据就已经全部恢复啦

1.3 mysqlbinlog 语法

mysqlbinlog [options] logfile1 logfile2 ...

选项:

  • -d,--database=name 仅显示指定数据库的转储内容
  • -o,--offset=N 跳过前 N 行的日志条目
  • -r,--result-file=name 将输入的文本格式的文件转储到指定的文件
  • -s,--short-form 使用简单格式
  • --set-charset=name 在转储文件的开头增加'SET NAMES character_set'语句
  • --start-datetime=name 转储日志的起始时间
  • --stop-datetime=name 转储日志的截止时间
  • -j,--start-position=N 转储日志的起始位置
  • --stop-position=N 转储日志的截止位置

标签:binlog,name,--,转储,MySQL,日志,数据
From: https://www.cnblogs.com/chaosmoor/p/16887939.html

相关文章

  • mysql benchmark
    数据库创建用户密码数据库,字段值均为benchmark。安装sysbench,执行命令。测试结果:#u-ubuntu-vmexportMYSQL_HOST=192.168.1.10#准备数据sysbench--db-driver=my......
  • MySQL高级6【MVCC-其他日志-主从复制-备份与恢复】尚硅谷
    【第16章多版本并发控制】1.什么是MVCCMVCC(MultiversionConcurrencyControl),多版本并发控制。顾名思义,MVCC是通过数据行的多个版本管理来实现数据库的并发控制。这......
  • Ubuntu 20.04 安装部署 MySQL 8.0
    1.规划官网:MySQL社区官网,下载包需要创建oracle账户,本地使用的是Linux通用的二进制包mysql-8.0.31-linux-glibc2.12-x86_64.tarmd5:89e902edeb75216c366e878f3c9e85be......
  • MySQL优化
    一、       MySQL数据库-SQL优化MySQLDBMS-MySQLDatabaseManagementSystem。数据库管理系统。1       结构图   2       MySQL......
  • 使用MySQL时出现The server time zone value '�й���׼ʱ��' is unrecogni的解决方法
    问题:Causedby:com.mysql.cj.exceptions.InvalidConnectionAttributeException:Theservertimezonevalue'�й���׼ʱ��'isunrecognizedorrepresentsmorethanoneti......
  • MySQL数据库连接参数
    数据库连接参数driver-class-name:com.mysql.cj.jdbc.Driver//&serverTimezone=GMT%2B8连接使用的时区,一般是MySQL8+版本使用的url:jdbc:mysql://localhost:3306/......
  • redhat持久化日志与实战练习
    持久化日志默认情况下,RedHatEnterpriseLinux7将系统日志存储在/run/log/journal中,该日志存储在tmpfs(临时文件系统)上。这意味着在重新启动时,所有存储的信息都将丢失。如......
  • MySQL
     MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle公司。MySQL是一种关联数据库管理系统,关联数据库将数据保存在不同的表中,而不是将所有数据......
  • Centos7 Mysql 双机热备实现数据库高可用
    mysql双主热备,也称主主互备,目的是mysql数据库高可用,只支持双机,原因是mysql的复制是一主多从,但一个从服务器只能有一个主服务器。双机热备的条件是双机mysql版本必须一致。服......
  • MySQL 联合索引、复合索引
    复合索引也叫联合索引,经常使用,遇到问题,可以看下这3篇文章:1. https://www.jb51.net/article/229580.htm2.https://blog.csdn.net/CSDN_LGY_Java/article/details/11159......