【雷火UX平台开发】MySQL误操作数据恢复
SQL分类
(2) ROLLBACK
a) 只能在一个事务处理内使用(执行一条 START TRANSACTION 命令之后)
b) 只对DML生效(只能回退insert、update、delete、不能回退create、drop、select)
(3) SET TRANSACTION
备份与恢复类型
常用备份的方法
7. 恢复损坏的表
闪回恢复
2. 常见闪回工具
(1) Mysqlbinlog
i) 功能受sql版本影响:MySQL 8.0以前版本无法正确识别加密或压缩的二进制日志文件。二进制日志文件;MySQL 8.0以后版本使用--read-from-remote-server可以读取加密二进文件,可以自动解压缩;
ii) 若二进制日志中包含\0(null)字符,在无法解析;
iii) 如果连接丢失(服务器重新启动/网络中断),mysql不会重新连接;
b) 优点:
i) 官方自带,无须额外安装;
ii) 支持离线解析,也支持在线解析。
i) SHOW BINARY LOGS/ SHOW MASTER LOGS:查二进制日志是否加密(或查看文件头是否携带0xFD62696E进行区分);
ii) REPLICATION CLIENT:授允许使用查看二进制日志是否加密;
iii) read_binlog_magic:通过读取二进制表头记录的Magic num值,判断二进制文件是否加密:Magic num= 0xFE62696E代表文件未加密;Magic num= 0xFE62696E代表文件加密。
(2) binlog2sql
i) 需要Python环境,通过生成回滚/前滚SQL实现数据的恢复。
i) 支持二进制日志文件的解析,但是由于允许过滤对象,相对于Mysqlbinlog,解析得到的SQL比较“干净”;
ii) 支持DML和DDL。
(3) MyFlash
i) 需要动态编译成二进制脚本以后执行;
ii) 通过生成反向二进制文件实现数据的恢复,即生成的回滚数据仍然是二进制格式的需要借助二进制解释程序进行解析;
iii) 借助二进制文件展开相关工作,需要启用二进制文件。若未启用二进制文件,则无法使用。
b) 优点:
i) 通过rename的方式备份数据表的方式,实现了DDL的回滚;
ii) 支持离线解析。
(4) my2sql
a) 缺点:
i) 借助二进制文件展开相关工作,需要启用二进制文件,且指定该二进制文件格式为row, binlog_row_image=full;
ii) 只能回滚DML,不能回滚DDL;
iii) 不支持离线解析。
i) 可以直接下载linux二进制版本执行,无特殊环境要求;
ii) 生成标准SQL
iii) 支持闪回、前滚、事务分析功能。
[1] SQL四种语言:DDL,DML,DCL,TCL https://www.cnblogs.com/henryhappier/archive/2010/07/05/1771295.html
[2] MySQL误操作闪回恢复利器之my2sql https://cloud.tencent.com/developer/article/1806352
[3]备份与恢复https://dev.mysql.com/doc/refman/8.0/en/backup-and-recovery.html
往期推荐