查看记录二进制日志详细信息
SHOW VARIABLES LIKE '%log_bin%'
log_bin 为 ON说明这个参数是开启的,就是说系统是记录了bin log的
log_bin_basename 配置了bin log的文件路径及文件前缀名
log_bin_index 配置了bin log索引文件的路径
查看当前使用日志列表
show master status
根据log_bin_basename的路径查看binlog具体文件
使用binlog日志恢复数据
原理:当数据库发生变化时,binlog会记录数据库中的所有变化;需要恢复的时候可以根据binlog中的开始位置和结束位置还原本部分操作;结束位置一般是数据被破坏或删除之前的位置。
注意:一切操作在本地测试库进行
最好把日志文件拷贝出来,到本地库恢复,因为这个文件记录当前数据库连接下所有库的操作,防止影响其他库的正常数据,所以最好将数据恢复到本地,然后同步回生产库
恢复时需要在binlog中找到两个位置:
- 数据恢复的起始位置
- 数据恢复的结束位置
通过mysqlbinlog将binlog转为sql,以方便查询具体位置
如果没有配置Mysql环境变量 需要进入mysql的安装路径bin目录下 执行命令
将binlog转为sql
mysqlbinlog --set-charset=utf-8 /Users/yuzhenhua/Desktop/iZ8vb9b97xf7mvZ-bin.000003 >data.sql
导出某段时间
mysqlbinlog --start-datetime="2022-09-09 09:00:00" --stop-datetime="2022-09-09 11:00:00" --base64-output=decode-rows -vv /Users/yuzhenhua/Desktop/iZ8vb9b97xf7mvZ-bin.000003 >data.sql
mysqlbinlog%E6%89%A7%E8%A1%8C%E6%81%A2%E5%A4%8D%E6%93%8D%E4%BD%9C">通过mysqlbinlog执行恢复操作
通过偏移量数据修复
mysqlbinlog /Users/yuzhenhua/Desktop/iZ8vb9b97xf7mvZ-bin.000003 --start-position=59571111 --stop-position=93031069 | mysql -f -u 账号 -p密码
/Users/yuzhenhua/Desktop/iZ8vb9b97xf7mvZ-bin.000003 要操作binlog文件
--start-position=59571111 数据恢复的起始位置
--stop-position=93031069 数据恢复的结束位置
-f 遇到错误时强制执行
mysql -uroot -p123456 数据恢复需要登录数据库
-
在
mysqlbinlog
命令中使用--database
选项(部分情况适用)- 基本原理:
- 局限性:
- 基本原理:
- 通过解析二进制日志内容手动筛选(更灵活但复杂)
- 查看日志内容:
- 手动提取相关操作: