灾难恢复是指当数据库中的数据在被有意或无意破坏后复原数据库所需要执行的活动
回收站:回收站在原理上说就是一个数据字典表,放置用户删除的数据库对象信息。用户删除的东西被放入回收站后,其实仍然占据着物理空间,除非您手动进行清除( PURGE )或者对象定期被数据库系统删除
闪回查询:OceanBase提供了记录级别的闪回查询功能,允许用户获取某个历史版本的数据;OceanBase 数据库当前支持通过以下两种方式来进行闪回查询:
创建 Restore Point:当创建了 Restore Point,则可使用闪回查询功能查询 Restore Point 点对应的数据版本
设置undo_retention变量:设置 undo_retention 变量后,可使用闪回查询功能查询当前时间 T 到 T -undo_retention 时间范围内的任意多版本数据
回收站
查看回收站:
使用SHOW RECYCLEBIN语句
开关回收站:(租户中默认回收站为关闭状态)
租户级别的开启关闭语句:set global ‘recyclebin’=on/off;
Session级别的开启关闭语句:set @@recyclebin=on/off;
支持进入回收站的对象有索引、表、库和租户,各模式回收站对象的支持情况如下表所示:
模式 | 索引 | 表 | 数据库 | 租户 |
MySQL | 支持 | 支持 | 支持 | 支持 |
Oracle | 支持 | 支持 | 不支持 | 不支持 |
回收站
恢复回收站数据:使用FLASHBACK命令恢复回收站中的数据库和表对象,只有租户的管理员用户才可以使用该命令
FLASHBACK DATABASE TO BEFORE DROP [RENAME TO database_name];
FLASHBACK TABLE TO BEFORE DROP [RENAME to table_name];
回收站清理:回收站中的数据可以通过 PURGE 命令清理;当一个对象的上层对象被PURGE,那么当前回收站中关联的下一层对象也会被 PURGE
指定库物理删除: PURGE DATABASE
指定表物理删除: PURGE TABLE
指定索引表物理删除: PURGE INDEX
清空整个回收站: PURGE RECYCLEBIN;
闪回查询
闪回查询(Flashback Query)是 Oracle 中记录级别的闪回功能。该功能允许用户获取某个历史版本的数据。OB同时支持MySQL和Oracle两种模式下的查询
闪回查询支持 SCN(time_to_usec())和 TIMESTAMP(usec_to_time())两种维度的查询
示例 1:通过 TIMESTAMP 指定的历史时间并闪回查询一张单表在该历史时间中的状态的数据:
select * from tbl1 as of timestamp TO_TIMESTAMP('2020-08-13 16:20:00','yyyy-mm-dd hh24:mi:ss');
示例 2:通过 TIMESTAMP 指定的历史时间并闪回查询多表在该历史时间中的状态的数据:
select * from tbl1 as of timestamp TO_TIMESTAMP('2020-08-13 16:20:00','yyyy-mm-dd hh24:mi:ss'),tbl2 as of timestamp TO_TIMESTAMP('2020-08-13 16:20:00','yyyy-mm-dd hh24:mi:ss');
示例3:通过 SCN 指定历史时间并闪回查询单表在该历史时间点的状态的数据:
select * from tbl1 as of scn 1582807800000000;
restore point
创建restore point:(租户级)
CREATE RESTORE POINT restore_point;
查询restore point:
SELECT * FROM V$RESTORE_POINT;
查询历史数据:
MySQL模式
SELECT * FROM table_name AS OF SNAPSHOT 10000;
Oracle模式
SELECT * FROM table_name AS OF SCN 10000;
删除 restore point:保留的 restore point 对应的数据会占用相应的存储资源,在分析业务结束后需要手动执行删除 restore point 的操作
DROP RESTORE POINT restore_point;
Restore Point功能的使用限制
不支持物理备份
不支持主备库
不支持在sys租户下创建Restore Point
每个租户内最多可创建10个Restore Point
创建Restore Point后,如果对创建Restore Point前就存在的表执行DDL语句将会报错。
小结:
OB的日志分为可读的服务日志和二进制的事务日志
Clog包括redo log, prepare log, commit log, abort log, clear log,但是不包括undo log
Observer日志级别按严重程度从高到低分为ERROR、USER_ERR、WARN、INFO(default)、TRACE、DEBUG
Observer MySQL模式错误代码4000以前兼容MySQL,4000以后为OB自有的错误码
OB集群在运维过程中,“STOP”命令代表不提供leader副本服务,(如“stop server”代表该observer所有主副
本都被切走)
OB在MySQL模式下,回收站支持INDEX、TABLE、DATABASE、TENANT,在Oracle模式下支持INDEX(3.x)和TABLE