使用mysqlbinlog命令恢复数据

mtain 2023年06月30日 212次浏览

恢复方案

1. 全部恢复新机器

  1. 将mysql数据目录中的binlog复制到新机器
  2. 执行/usr/bin/mysqlbinlog bin-log.xxx | /usr/bin/mysql

2. 固定备份+binlog时间段恢复

  1. mysqldump导出的备份数据,恢复到数据库
  2. 备份始点以后使用binlog恢复
/usr/bin/mysqlbinlog --base64-output=decode-rows -v --start-date='2023-01-01 02:00:00' --stop-date='2023-01-01 10:00:00'  /var/lib/mysql/mysql-bin.000017 >/data/mysqlbinlogsql_restore_2023-01-01.sql
  1. 检查并执行重做脚本

查用操作

1. 查询drop表的位置

mysqlbinlog binlog.000001 | grep -n  "drop database"
或者
mysqlbinlog --set-charset=utf8  binlog.000001 > tmp.sql

2. 查询当前binlog

# 查询当前binlog
mysql> show master logs;

# 防止数据污染,可以创建新的binlog文件
flush logs;

3. MySQL开启binlog

[mysqld]
server-id=10
log-bin=mysql-bin
binlog-format=ROW

# binlog状态查看
mysql> show variables like '%log_bin%';