MySQL Flashback 闪回功能详解
MySQL Flashback 是 MySQL 中的一种闪回功能,用于快速恢复由于误操作丢失的数据。在 DBA 误操作时,可以把数据库恢复到以前某个时间点(或者说某个 binlog 的某个 pos)。Flashback 功能是利用 binlog 完成的,第一个实现该功能的是阿里云的彭立勋,他在 MySQL 5.5 版本上就已实现,并将其提交给 MariaDB。
Flashback 工具可以对 rows 格式的 binlog 进行逆向操作,delete 反向生成 insert、update 生成反向的 update、insert 反向生成 delete。MySQL 的 binlog 以 event 的形式,记录了 MySQL 中所有的变更情况,利用 binlog 我们就能够重现所记录的所有操作。
MySQL 引入 binlog 主要有两个用途/目的:一是为了主从复制;二是用于备份恢复后需要重新应用部分 binlog,从而达到全备+增备的效果。MySQL 的 binlog 有三种格式:statement、row、mixed。Statement 模式基于 SQL 语句的模式,一般来说生成的 binlog 尺寸较小,但是某些不确定性 SQL 语句或函数在复制过程可能导致数据不一致甚至出错;Row 模式基于数据行的模式,记录的是数据行的完整变化。相对更安全,推荐使用(但通常生成的 binlog 会比其他两种模式大很多);Mixed 模式是混合模式,可以根据情况自动选用 statement 抑或 row 模式;这个模式下也可能造成主从数据不一致。
要使用 mysqlbinlog flashback 工具,需要设置 binlog_format = row。Flashback 安装需要下载 mysqlbinlog 工具,执行 mysqlbinlog --help 命令,可能会报错,需要安装新版本的 libstdc++.so.6。安装完后执行 mysqlbinlog --help,若报错:mysqlbinlog: /lib64/libc.so.6: version `GLIBC_2.14' not found,需要安装新版本的 libc.so.6。
Flashback 工具使用注意点:
1. 使用 mysqlbinlog 工具需要设置 binlog_format = row。
2. flashback 工具不能用于 statement 模式的 binlog。
3. 在使用 flashback 工具时,需要确保 binlog 的完整性和正确性。
4. 使用 flashback 工具时,需要注意数据一致性问题。
MySQL Flashback 闪回功能可以快速恢复由于误操作丢失的数据,是 DBA 的一种重要解决方案。但是,需要正确地使用 flashback 工具,避免出现数据不一致等问题。