win10中mysql数据库binlog恢复

win10中mysql数据库binlog恢复

昨天有朋友江湖救急,说测试库里的表不小心删除更新了数据。这里也复习下binlog数据恢复,当然需要一定的条件:首先mysql开启binlog,然后每天需要备份对应的数据库

1 单库单表准备

在恢复数据前,先场景复现

1.1 查看二进制日志是否已开启
mysql 复制代码
show variables like 'log_%'; 

-- 常用binlog日志操作命令
--   1.查看所有binlog日志列表
     show master logs;
--   2.查看master状态,即最后(最新)一个binlog日志的编号名称,及其最后一个操作事件pos结束点(Position)值
     show master status;
--   3.刷新log日志,自此刻开始产生一个新编号的binlog日志文件
     flush logs;
--   	注:每当mysqld服务重启时,会自动执行此命令,刷新binlog日志;在mysqldump备份数据时加 -F 选项也会刷新binlog日志;
--   4.重置(清空)所有binlog日志
--      reset master;
--   5.查看具体的恢复点
    show binlog events in 'binlog.000118';
1.2 数据库准备
mysql 复制代码
create database db10;

CREATE TABLE `user` (
  `id` int NOT NULL AUTO_INCREMENT,
  `NAME` varchar(20) DEFAULT NULL,
  `age` int DEFAULT NULL,
  `search_count` int DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

INSERT INTO `user` VALUES (1,'张三',23,25),(2,'李四',24,5),(3,'王五',25,3),(4,'赵六',26,7),(5,'张三丰',93,20),(6,'张无忌',18,23),(7,'张强',33,21),(8,'张果老',65,6);
1.3 备份数据库

在cmd中的mysql执行目录中,运行备份命令

cmd 复制代码
E:\Hadoop_win\Mysql_8\mysql-8.0.29-winx64\bin>mysqldump -uroot -p123456 -B db10 > E:\Hadoop_win\Mysql_8\data\BAK.db10.sql	
1.4 更新数据库表

在备份数据库后,进行库表user的新增更新操作

mysql 复制代码
-- 新增
INSERT INTO db10.`user`
(id, NAME, age, search_count)
VALUES(9, 'TOM', 28, 3);
INSERT INTO db10.`user`
(id, NAME, age, search_count)
VALUES(10, 'Jerry', 24, 6);
-- 更新
update db10.`user`
set NAME = 'Joes'  where id = 2;
update db10.`user`
set NAME = 'Tim'  where id = 3;
select * from db10.`user`;
-- 删除
delete from db10.`user` where id = 5;

2 单库单表恢复

单库单表恢复实现:先从备份恢复数据库,然后从binlog的位置点后续更新恢复数据

2.1 数据库每日备份恢复

在cmd中的mysql执行目录中,运行备份命令恢复

cmd 复制代码
E:\Hadoop_win\Mysql_8\mysql-8.0.29-winx64\bin>mysql -uroot -p123456 -v < E:\Hadoop_win\Mysql_8\data\BAK.db10.sql
2.2 从binlog的位置点后续更新恢复数据

查看所有binlog日志列表

mysql 复制代码
show master logs;

使用mysql语句查看binlog操作记录点

mysql 复制代码
show binlog events in 'binlog.000118';

在cmd中的mysql执行目录中,运行命令恢复

cmd 复制代码
E:\Hadoop_win\Mysql_8\mysql-8.0.29-winx64\bin>mysqlbinlog --no-defaults  --stop-position=2029 --database=db10 E:\Hadoop_win\Mysql_8\data\binlog.000118 | E:\Hadoop_win\Mysql_8\mysql-8.0.29-winx64\bin\mysql -uroot -p123456 -v db10

3 数据恢复展示

4 文章借鉴

mysql通过bin_log恢复数据_mysql数据库导入错文件如何恢复数据没有开启mysqlbinlog-CSDN博客

ERROR] unknown variable 'default-character-set=utf8mb4'_mysqlbinlog: [error] unknown variable 'default-cha-CSDN博客

相关推荐
Musennn19 分钟前
MySQL刷题相关简单语法集合
数据库·mysql
Think Spatial 空间思维1 小时前
【HTTPS基础概念与原理】TLS握手过程详解
数据库·网络协议·https
逝水如流年轻往返染尘1 小时前
MySQL表的增删查改
mysql
laowangpython1 小时前
MySQL基础面试通关秘籍(附高频考点解析)
数据库·mysql·其他·面试
mooyuan天天2 小时前
SQL注入报错“Illegal mix of collations for operation ‘UNION‘”解决办法
数据库·web安全·sql注入·dvwa靶场·sql报错
运维-大白同学2 小时前
go-数据库基本操作
开发语言·数据库·golang
R-sz2 小时前
通过从数据库加载MinIO配置并初始化MinioClient,spring boot之Minio上传
数据库·oracle
洛阳泰山2 小时前
Windows系统部署MongoDB数据库图文教程
数据库·windows·mongodb
医只鸡腿子3 小时前
3.2/Q2,Charls最新文章解读
数据库·数据挖掘·数据分析·深度优先·数据库开发
bang___bang_3 小时前
PostgreSQL内幕剖析——结构与架构
数据库·postgresql