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博客

相关推荐
程序猿小D33 分钟前
第24节 Node.js 连接 MongoDB
数据库·mongodb·npm·node.js·编辑器·vim·express
意疏1 小时前
深入解析MySQL Join算法原理与性能优化实战指南
mysql·算法·性能优化
fictionist1 小时前
动态 Web 开发技术入门篇
java·服务器·开发语言·笔记·学习·mysql·spring
果子⌂2 小时前
PostgreSQL --数据库操作
linux·数据库·postgresql
SeaTunnel2 小时前
如何将SeaTunnel MySQL-CDC与Databend 高效整合?格式与方案全解析
数据库·mysql·开源·数据集成·seatunnel·databend
在肯德基吃麻辣烫2 小时前
《Redis》持久化
数据库·redis·缓存
顾三殇2 小时前
【自考】《计算机信息管理课程实验(课程代码:11393)》华师自考实践考核题型解析说明:C++ 与 mysql 实践题型与工具实践题分析
c++·mysql·华师自考实践考核题型分析
xiaolyuh1232 小时前
基于binlog恢复误删除MySQL数据
数据库·mysql
Gauss松鼠会3 小时前
GaussDB分布式数据库调优方法总结:从架构到实践的全链路优化指南
数据库·分布式·sql·database·gaussdb
码海漫游者83 小时前
让Python成为你的网站引擎:Django全栈开发初体验!!!
数据库·python·其他·django