mysql通过binlog恢复数据示例
教程
前提
开启biglog
教程:https://ascendking.blog.csdn.net/article/details/136693938
1.将biglog转换为可读的数据
mysqlbinlog -v /var/lib/mysql/mysql-bin.000001 > /opt/mysql-bin-000001.txt
2.查看位置
# at 1558
#240313 23:04:34 server id 1 end_log_pos 1589 CRC32 0xbba57f9f Xid = 99
COMMIT/*!*/;
# at 1589
#240313 23:10:36 server id 1 end_log_pos 1612 CRC32 0x94b40b04 Stop
SET @@SESSION.GTID_NEXT= 'AUTOMATIC' /* added by mysqlbinlog */ /*!*/;
DELIMITER ;
# End of log file
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
文件中# at 1589中1589就是位置
3.恢复数据
说明:--start-position开始位置, --stop-position结束位置
mysqlbinlog -v /var/lib/mysql/mysql-bin.000001 --start-position=4 --stop-position=1589 | mysql -uroot -p123456
执行后在4和1589之间的操作都会被恢复
特别说明:
前闭后开,就是开始位置的会被执行,结束位置的不会被执行
而且开始位置必须存在,不然报错(比如binlog中有位置426,开始位置必须是426,不能是425)
但是结束位置可以不存在(比如binlog中有位置426,结束位置可以不是426,可以是不存在的427或者不存在的425)