记录一次mysql数据库使用binlog实现数据回退操作

数据恢复需谨慎,生产数据库中的数据建议每天全库备份

恢复数据和数据表引擎有关, 二进制日志恢复的效果确实受存储引擎影响。推荐使用InnoDB。

对于不同引擎恢复建议

InnoDB可以直接使用二进制日志恢复

mysqlbinlog --no-defaults --stop-position=xxx binlog.000062 | mysql -u root -p

对于MyISAM

# 建议先备份,使用--force参数,并做好数据不一致的准备
mysql -u root -p --force < recovery.sql

# 或者转换为InnoDB后再恢复
ALTER TABLE admin_role ENGINE=InnoDB;

使用binlog恢复流程如下:

-- 查看所有表的引擎类型
SELECT table_name, engine 
FROM information_schema.tables 
WHERE table_schema = '数据库';

-- 查看特定表的引擎
SHOW CREATE TABLE 数据库.数据表;
查看 bin-log 是否开启,ON表示已开启
show variables like 'log_bin';

在这里插入图片描述

查询所有日志
show binary logs;

在这里插入图片描述

查看当前正在使用的二进制日志文件(即最新活跃的)
SHOW MASTER STATUS;

在这里插入图片描述

可操作性不大的查询日志方式(不推荐)

-- 查看所有二进制日志事件
SHOW BINLOG EVENTS;
-- 查看特定二进制日志文件的事件
SHOW BINLOG EVENTS IN 'binlog.000062';
查看日志记录 -未解码版本 
mysqlbinlog --no-defaults --start-datetime="2025-10-31 09:00:00" --stop-datetime="2025-10-31 09:50:00" d:/mysql-8.0.26-winx64/data/binlog.000062

其中
Write_rows: INSERT 操作
Delete_rows: DELETE 操作
Update_rows: UPDATE 操作

# 使用详细模式查看,会显示解码后的行数据
mysqlbinlog --no-defaults -v --base64-output=decode-rows --start-datetime="2025-10-31 11:00:00" --stop-datetime="2025-10-31 11:05:00" d:/mysql-8.0.26-winx64/data/binlog.000062

# 只恢复 oldage_assess 数据库的操作--database指定的数据库,--stop-position恢复该节点前的所有数据
mysqlbinlog --no-defaults --database=assess --stop-position=6463692 d:/mysql-8.0.26-winx64/data/binlog.000062 > d:/oldage_only_recovery.sql

--force忽略错误继续执行
mysql -u root -p assess --force < d:/oldage_only_recovery.sql

在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值