【MySQL】MariaDB10.2新特性--Flashback
MariaDB10.2新特性--Flashback
Flashback可以回滚到旧的数据,用于解决用户误删除数据的问题。
实战例子
MariaDB [zsd]> select * from test;
+------+-----------+
| id | name |
+------+-----------+
| 1 | 张盛东 |
| 2 | 刘忠浩 |
| 3 | 胡轲 |
+------+-----------+
3 rows in set (0.001 sec)
MariaDB [zsd]> select now();
+---------------------+
| now() |
+---------------------+
| 2019-09-26 16:17:51 |
+---------------------+
1 row in set (0.000 sec)
MariaDB [zsd]> delete from test;
Query OK, 3 rows affected (0.012 sec)
MariaDB [zsd]> commit;
Query OK, 0 rows affected (0.000 sec)
MariaDB [zsd]> select * from test;
Empty set (0.000 sec)
对插入之前的时间点,做基于时间点的闪回查询,如下:
[mysql@oradb ~]$ mysqlbinlog /u01/data/binlog/mysql-bin.000003 -vv -d zsd -T test --start-datetime="2019-09-26 16:17:51" --flashback
mariadb它比Oracle更好的是,你知道恢复的数据是什么,如下:
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=1*/;
/*!40019 SET @@session.max_insert_delayed_threads=0*/;
/*!50003 SET @OLD_COMPLETION_TYPE=@@COMPLETION_TYPE,COMPLETION_TYPE=0*/;
DELIMITER /*!*/;
#190926 15:25:20 server id 30200 end_log_pos 256 CRC32 0x508a050f Start: binlog v 4, server v 10.3.18-MariaDB-log created 190926 15:25:20 at startup
# Warning: this binlog is either in use or was not closed properly.
ROLLBACK/*!*/;
BINLOG '
4GeMXQ/4dQAA/AAAAAABAAABAAQAMTAuMy4xOC1NYXJpYURCLWxvZwAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAADgZ4xdEzgNAAgAEgAEBAQEEgAA5AAEGggAAAAICAgCAAAACgoKAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAEEwQADQgICAoKCgEPBYpQ
'/*!*/;
#190926 16:17:56 server id 30200 end_log_pos 1073 CRC32 0x57f3bac4 Annotate_rows:
#Q> delete from test
#190926 16:17:56 server id 30200 end_log_pos 1126 CRC32 0x1d0d9eaf Table_map: `zsd`.`test` mapped to number 33
# Number of rows: 3
#190926 16:17:56 server id 30200 end_log_pos 1359 CRC32 0xb26e3c08 Xid = 98
BEGIN/*!*/;
#190926 16:17:56 server id 30200 end_log_pos 1328 CRC32 0x97af664e Update_rows: table id 33 flags: STMT_END_F
BINLOG '
NHSMXRP4dQAANQAAAGYEAAAAACEAAAAAAAEAA3pzZAAEdGVzdAAEAw8REQQ8AAYGA6+eDR0=
NHSMXRj4dQAAygAAADAFAAAAACEAAAAAAAEABP//8AMAAAAG6IOh6L2yXYxrKARwLV2MdDQHfbTw
AwAAAAbog6HovbJdjGsoBHAtf////w9CP/ACAAAACeWImOW/oOa1qV2MauMNiCVdjHQ0B3208AIA
AAAJ5YiY5b+g5rWpXYxq4w2IJX////8PQj/wAQAAAAnlvKDnm5vkuJxdjGrjDYglXYx0NAd9tPAB
AAAACeW8oOebm+S4nF2MauMNiCV/////D0I/Tmavlw==
'/*!*/;
### UPDATE `zsd`.`test`
### WHERE
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='胡轲' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
### @3=1569483560.290861 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### @4=1569485876.490932 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### SET
### @1=3 /* INT meta=0 nullable=1 is_null=0 */
### @2='胡轲' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
### @3=1569483560.290861 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### @4=2147483647.999999 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### UPDATE `zsd`.`test`
### WHERE
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='刘忠浩' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
### @3=1569483491.886821 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### @4=1569485876.490932 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### SET
### @1=2 /* INT meta=0 nullable=1 is_null=0 */
### @2='刘忠浩' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
### @3=1569483491.886821 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### @4=2147483647.999999 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### UPDATE `zsd`.`test`
### WHERE
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='张盛东' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
### @3=1569483491.886821 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### @4=1569485876.490932 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### SET
### @1=1 /* INT meta=0 nullable=1 is_null=0 */
### @2='张盛东' /* VARSTRING(60) meta=60 nullable=1 is_null=0 */
### @3=1569483491.886821 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
### @4=2147483647.999999 /* TIMESTAMP(6) meta=6 nullable=0 is_null=0 */
COMMIT
/*!*/;
COMMIT
/*!*/;
DELIMITER ;
# End of log file
ROLLBACK /* added by mysqlbinlog */;
/*!50003 SET COMPLETION_TYPE=@OLD_COMPLETION_TYPE*/;
/*!50530 SET @@SESSION.PSEUDO_SLAVE_MODE=0*/;
执行flashback恢复操作
目的:闪回数据库zsd
中的test
表。
[mysql@oradb ~]$ mysqlbinlog /u01/data/binlog/mysql-bin.000003 -vv -d zsd -T test --start-datetime="2019-09-26 16:17:51" --flashback | mysql -uroot -predhat
[mysql@oradb ~]$ mysql -uroot -predhat
MariaDB [(none)]> use zsd;
Database changed
MariaDB [zsd]> select * from test;
+------+-----------+
| id | name |
+------+-----------+
| 1 | 张盛东 |
| 2 | 刘忠浩 |
| 3 | 胡轲 |
+------+-----------+
3 rows in set (0.000 sec)
MariaDB [zsd]>
可以看到之前删除的三条数据,恢复了。
参考文献
https://mariadb.com/kb/en/library/flashback/
【MySQL】MariaDB10.2新特性--Flashback的更多相关文章
- 【MySQL】MariaDB10.3新特性--闪回查询
MariaDB10.3新特性--闪回查询 System-Versioned表特性的引入,可以对表进行闪回.完成类似于Oracle的闪回查询. 修改已有表为System-Versioned MariaD ...
- [转帖 ]MySQL 5.7 新特性 JSON
MySQL 5.7 新特性 JSON 的创建,插入,查询,更新 作者: 我不是鱼 (2016-08-31 16:13)分类: MySQL 标签: MySQL JSON MySQL JSON 应用 ...
- Mysql 8.0 新特性测试
Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Po ...
- MySQL 8.0 新特性梳理汇总
一 历史版本发布回顾 从上图可以看出,基本遵循 5+3+3 模式 5---GA发布后,5年 就停止通用常规的更新了(功能不再更新了): 3---企业版的,+3年功能不再更新了: 3 ---完全停止更新 ...
- MySQL 5.7新特性之Generated Column(函数索引)
MySQL 5.7引入了Generated Column,这篇文章简单地介绍了Generated Column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- 初识 MySQL 5.6 新特性、功能
背景: 之前介绍过 MySQL 5.5 新功能.参数,现在要用MySQL5.6,所以就学习和了解下MySQL5.6新的特性和功能,尽量避免踩坑.在后续的学习过程中文章也会不定时更新. 一:参数默认值的 ...
- MySQL 5.7新特性之generated column
MySQL 5.7引入了generated column,这篇文章简单地介绍了generated column的使用方法和注意事项,为读者了解MySQL 5.7提供一个快速的.完整的教程.这篇文章围绕 ...
- 11G新特性 -- flashback data archive(1)
虽然可以依赖undo数据来查询row的旧版本数据,甚至可以执行逻辑恢复.但是你不能期待在undo中找到非常旧的数据.undo数据主要是用来提供读一致性. 在11G中,提供了Flashback Data ...
- MySQL 5.6新特性 -- Multi-Range Read
如果基表很大,数据没有被缓存,在二级索引上使用范围扫描读取行可能会导致大量的随机磁盘访问.使用Multi-Range Read新特性,mysql可以减少对磁盘的随机读的次数:首先,mysql只是扫描索 ...
随机推荐
- Python 摘要算法hashlib 与hmac
参考链接:https://www.liaoxuefeng.com/wiki/1016959663602400/1017686752491744 摘要算法(也成为哈希算法)是用来防篡改的,因为我们的即使 ...
- vue服务端打包及自动部署
上次给CI环境搭建好了,这次写了一个脚本用于服务端打包及部署使用,解决了前端需要频繁打包的问题,即时将代码推到工程库,服务端自动打包作发布,然后测试人员即时测试,尽早发现问题. 发布原理: 我没有通过 ...
- pip下载速度慢解决方法
添加镜像链接 解决方式: 更改pip的数据源.目前国内比较知名的有豆瓣的,清华的.都是pipy官网的镜像. 清华:https://pypi.tuna.tsinghua.edu.cn/simple 阿里 ...
- https://www.cnblogs.com/kxm87/p/9268622.html
数据库使用MySQL,ORM使用spring data jpa 1 因此需要再pom.xml文件中添加相应jar包.如下: <!-- 引入jap --> <dependency> ...
- 倒计时3天!i春秋四周年盛典狂欢,钜惠不停
六月注定是不平凡的 感恩父亲节 父爱如山亦如海 难忘毕业季 青春无悔不散场 嗨购618 优惠福利送不停 更值得期待的是 在这个不平凡的六月 迎来了i春秋四周年庆典 当周年庆遇到618 会擦出怎样的火花 ...
- chattr lsattr文件隐藏属性
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...] lsattr [-adlRvV][文件或目录...] 改变/显示文件隐藏属性 chatt ...
- 配置全文搜索引擎solr
前言 solr是apache下的一个子项目,用java编写基于Lucene开发的全文搜索服务器,不同于Lucene,solr一个完成的搜索服务器,提供了众多接口调用,而Lucene只是个工具包.如果用 ...
- IEDA创建Springboot项目
随着技术的更新对于开发速度的追求,我们越来越不能忍受的是Spring框架对于集成开发以后大量的配置问题.所以SprigBoot应运而生,SpringBoot框架其实就是在Spring框架的外边包裹上了 ...
- Mysqldump一次备份多个指定数据库
今天碰到了,就作个记录. mysqldump -u user -p --databases DB1 DB2 --single-transaction --master-data=2 --default ...
- lf 前后端分离 (1) auth,token认证
一.关于登录验证 用户在登录的时候会通过验证以及滑动解锁,注意的是需要后端if verify(request.data): 来判断是否发送了那三个验证数据 通过 random_str=str(uuid ...