当前位置:Gxlcms > 数据库问题 > 关于MySql数据库误操作数据找回的办法

关于MySql数据库误操作数据找回的办法

时间:2021-07-01 10:21:17 帮助过:26人阅读

### INSERT INTO `test`.`frame_ou` 2 ### SET 3 ### @ouguid=111 /* VARSTRING(50) meta=50 nullable=0 is_null=0 */ 4 ### @ouname=组织部 /* VARSTRING(50) meta=20 nullable=1 is_null=0 */ 5 ### @oulevel=1 /* SHORTINT meta=0 nullable=1 is_null=0 */

  然后执行下flashback   mysqlbinlog -vv mysql-bin.000004 -B,然后就会发现

### DELETE FROM `test`.`frame_ou`
### WHERE
###   @ouguid=111 /* VARSTRING(50) meta=50 nullable=0 is_null=0  */
###   @ouname=组织部 /* VARSTRING(50) meta=20 nullable=1 is_null=0 */
###   @oulevel=1 /* SHORTINT meta=0 nullable=1 is_null=0 */

  同理,delete操作将会被转换为insert,update被转换为反向的update;若在一个事务中既有insert、update、delete语句,通过使用-B参数后,不仅三种DML语句完成了逆向转换,并且语句顺序也会发生颠倒。

在binlog中找到误操作的pos变化区间后,使用mysqlbinlog -B 恢复:

# mysqlbinlog -B --start-position=431 --stop-position=509 mysql-bin.000004 | mysql -uroot -p

  注意事项:

  1)        binlog_format=row

  2)        只支持insert、update、delete

  3)        不支持drop 、truncate、alter等DDL语句

关于MySql数据库误操作数据找回的办法

标签:版本   ddl   nlog   没有   并且   let   drop   数据库恢复   自学   

人气教程排行