MYSQL-binlog日志(windows10+mysql5.7)

一、binlog日志开启

1、在mysql安装目录下找到 my.ini 文件

2、在my.ini 文件的 [mysqld] 部分,添加以下内容

server_id=2023 
log_bin=mysql-bin
binlog_format=row

* server_id是设置服务器的ID,可自定义数值

*log_bin=mysql-bin 启动二进制日志binlog,并指定日志的文件名前缀为mysql-bin

*binlog_format=row 设置记录格式为ROW

3、保存 my.ini 后重启MySQL服务

1)方法一:以管理员权限打开命令提示符,输入

# 停止mysql
net stop mysql

# 启动mysql
net start mysql

2)方法二:在任务管理器中找到mysql服务,右键手动重启

4、查看binlog日志是否已启用 

连接上mysql数据库后,输入

show variables like '%log_bin%';

如果返回值中“log_bin”的值为ON,则表示已经启动了binlog日志。

* 返回结果中的“log_bin_basename”,展示了binlog日志的前缀名及存储位置 

5、查看已有的binlog文件及正在使用的binlog文件

# 查看已有的binlog文件
show binary logs;
# 或者
show master logs;

# 查看正在使用的binlog文件
show master status;

6、生成新的binlog日志

方式一:重启mysql服务

方式二:使用命令

flush logs;

二、数据恢复(基于节点id)

1、创建表、插入及更改数据

# 创建表test
create table test (
	id int not null auto_increment primary key,
	name VARCHAR(10) DEFAULT null
) ENGINE=InnoDB auto_increment=1 DEFAULT CHARSET=utf8;

# 插入值
INSERT into test VALUES(2,"xiuaohong");

#修改值
update test set name = "dahong" where id = 2;
update test set name = "buhong" where id = 2;

2、查看binlog记录事件

show binlog events in '当前使用的binlog日志';

3、 数据恢复

注意:用命令提示符按照个人情况修改后运行以下命令

mysqlbinlog --no-defaults --start-position=571 --stop-position=719 binlog文件的绝对路径 | mysql -u MySQL账号 -p

* --no-defaults 如果没加这个参数,命令执行时候会遇到报错(mysqlbinlog: [ERROR] unknown variable ‘default-character-set=utf8‘)

* --start-position=571 要回退的那一步操作的“BEGIN”的“End_log_pos”

* --stop-position=791 要回退的那一步操作“COMMIT”的“End_log_pos”

注意:如果是要恢复为插入时候的数值,可以把该条记录删除,选择插入时的记录进行恢复;如果是删库恢复,需要把从建库到删除前的最后一条对库的操作记录全部执行。

结果:

三、数据恢复(基于时间)

1、确认时间

注意:用命令提示符按照个人情况修改后运行以下命令

# 查看binlog
mysqlbinlog --no-defaults 具体binlog文件的绝对路径
# 或者
mysqlbinlog --no-defaults -v --set-charset=utf8 具体binlog文件的绝对路径
# -v 表示使用伪sql代码形式查看

# 转为其他文件形式进行查看
mysqlbinlog --no-defaults -v --set-charset=utf8 具体binlog文件的绝对路径 > 转换后的文件的绝对路径
# 该命令将伪sql代码状态下的binlog日志复制一份,源文件不变

* 若不记得具体时间可配合“基于节点id”方法中看到的节点id

2、数据恢复

mysqlbinlog --no-defaults --start-datetime="2023-12-13 11:42:58" --stop-datetime="2023-12-13 11:58:40" binlog文件的绝对路径 | mysql -u MySQL账号 -p

四、补充

无法以该方法恢复数据可尝试【记一次通过binlog日志恢复MySQL数据库的经历_mysql 从日志恢复-CSDN博客】 (未实践)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值