binlog日志恢复数据
1. 查看是否打开了Binlog
```
show variables like ‘%log_bin%’;
```
ON表示已经打开 OFF表示关闭 默认关闭状态

2. 开启开启binlog
1. 方法一
```
SET SQL_LOG_BIN=1 命令开启
SET SQL_LOG_BIN=0 命令关闭
```
2. 方法二
```
找到mysql的配置文件,添加以下参数。并重启mysql服务
vim /etc/my.cnf
server_id=1
log-bin=mysql-bin
binlog-format=Row
expire_logs_days=5
```
3. 查看所有log文件
```
show master logs;
```

4. 使用Binlog恢复数据
```
刷新binlog日志
Flush logs;
```
1. 查看当前正在binlog日志
```
show master status;
```

测试表, 测试update 【全部改为王五,再改为老王,恢复为全部为王五】

```
update school set name = '王五';
update school set name = ‘老王’;
```
恢复数据最好再次刷新新的binlog日志

查看修改产生的binlog日志文件内容
```
show binlog EVENTS in 'mysql-bin.000014';
```
如果是恢复最后一次修改前数据,则使用记录的倒数第二条日志的结束起止坐标

5. 通过指定位置恢复数据
```
/usr/local/mysql/bin/mysqlbinlog --start-position=219 --stop-position=544 --database=test /data/mysql/data/mysql-bin.000014 | /usr/bin/mysql -uroot -pzhangyou -v test
/usr/local/mysql/bin/mysqlbinlog 为binlog命令
--database=test 指定数据库为test的日志
/data/mysql/data/mysql-bin.000014 为binlog日志
--start-position=219 开始位置
--stop-position=544 结束位置
/usr/bin/mysql -uroot -pzhangyou -v test 连接mysql、并指定需要恢复的数据库 -v 为显示详细信息
```
通过时间恢复
```
/usr/local/mysql/bin/mysqlbinlog --start-datetime="2023-02-03 14:35:50" --stop-datetime="2023-02-03 14:36:48" --database=test /data/mysql/data/mysql-bin.000014 | mysql -uroot -pzhangyou -v test
```

查看binlog日志的几种方式
1. 生成sql文件
/usr/local/mysql/bin/mysqlbinlog --base64-output=DECODE-ROWS -v mysql-bin.000014 > a.sql