赞
踩
OceanBase提供回收站,主要用于存储用户删除的数据库和表等信息。
在当前版本中,支持进入回收站的对象有索引、表、库和租户,各模式回收站对象的支持情况如下表所示。
模式 | 索引(Index) | 表(T able) | 数据库(Dat abase) | 租户(Tenant ) |
---|---|---|---|---|
MySQL | 支持 | 支持 | 支持 | 支持 |
Oracle | 支持 | 支持 | 不支持 | 不支持 |
- 直接 DROP 索引不会进入回收站,删除表时,表上的索引会随主表一起进入回收站。
- 不能对回收站的对象做任何查询和 DML 操作,DDL 操作中也仅支持 Purge 和 Flashback 操作。
使用限制:
在很多应用系统中,用户需要查询数据库中的某个时间点,或者特定版本的数据来完成一些数据分析或汇总之类的操作。
OceanBase 数据库在 V2.2.7x 版本中提供了 Restore Point 功能,允许用户在租户上创建 Restore Point,将历史版本的数据保存下来。Restore Point 功能类似于租户的快照点,可以通过闪回查询的方式来访问特定版本的历史数据。
当前 Restore Point 功能的使用限制如下:
由于 Restore Point 功能依赖 GTS 维护全局的一致性快照,故在使用 Restore Point 时,需要开启 GTS。
OceanBase 数据库提供了记录级别的闪回查询(Flashback Query)功能,该功能允许用户获取某个历史版本的数据。
其中,Oracle 模式支持 AS OF SCN 和 AS OF TIMESTAMP 两种语法来查询;MySQL 模式支持通过 AS OF SNAPSHOT 语法来查询。
备份恢复是 OceanBase 数据库高可用特性的核心组件,主要用于保障数据的安全,包括预防存储介质损坏和用户的错误操作等。如果存储介质损坏或者用户误操作而导致了数据丢失,可以通过恢复的方式恢复用户的数据。
目前 OceanBase 数据库支持 OSS、NFS 和 COS 三种备份介质,提供了备份、恢复、管理三大功能。
OceanBase 数据库从 V2.2.52 版本开始支持集群级别的物理备份。物理备份由基线数据、日志归档数据两种数据组成,因此物理备份由日志归档和数据备份两个功能组合而成:
OceanBase 数据库支持租户级别的恢复,恢复是基于已有数据的备份重建新租户的过程。用户只需要一个 alter system restore tenant 命令,就可以完成整个恢复过程。恢复过程包括租户系统表和用户表的 Restore 和 Recover 过程。Restore 是将恢复需要的基线数据恢复到目标租户的 OBServer,Recover 是将基线对应的日志恢复到对应OBServer。
OceanBase 数据库目前支持集群级别和租户级别的备份相关操作,且支持手动删除指定的备份和自动清理过期备份的功能。
当用户用系统租户登录到备份集群以后,需要先用 SQL 发起日志归档,等日志归档发起完成启动阶段以后,才可以发起基线备份。
日志归档是定期备份到备份目的端的,只需要用户发起一次 alter system archivelog ,日志备份就会在后台持续进行。日志归档是由每个 PG(PartitionGroup)的 Leader 负责定期将该 PG 的日志归档到备份介质指定的路径,RS(RootService)负责定期统计日志归档的进度,并更新到内部表。
数据备份是需要用户触发的,比较常见的场景是周六触发一次全量备份,周二和周四触发一次增量备份。当用户发起数据备份请求时,该请求会首先被转发到 RS 所在的节点上;RS 会根据当前的租户和租户包含的 PG 生成备份数据的任务,然后把备份任务分发到 OBServer 上并行地执行备份任务;OBServer 负责备份 PG 的元信息和宏块到指定的备份目录,宏块按照 PG 为单位进行管理。
对于用户可见的流程主要有两步:
对于单个 PG 来说,恢复的流程就是将 PG 的元信息和宏块数据拷贝到指定的 OBServer,构建出一个只有基线数据的 PG;然后再把 PG 的日志拷贝到指定的 OBServer,回放到该 PG 的 MemTable 中。这个流程中如果日志的量比较大,可能会触发转储操作。
在执行备份操作前,如果需要使用 NFS 软件作为备份目的地,可参考本节内容部署 NFS。
一般建议使用 OSS 或者专用的 NFS 硬件设备,可以考虑使用阿里云的 NFS 硬件设备。
备份成功后,可以根据业务需要,开启自动清理功能,系统会自动清理已过期的备份数据。当前仅支持集群级别备份数据的自动清理。
备份备份是对备份数据和日志备份的再次备份。OceanBase 数据库支持集群级别和租户级别的备份备份操作。
使用限制:在执行备份备份操作时,需要保证源端备份中至少有一份有效备份数据。
在 OceanBase 数据库中,备份数据的校验主要是对数据的有效性和完整性进行校验。数据的有效性主要是指数据文件是否有 bit 翻转等情况,可以通过计算 Checksum校验和来判断数据的有效性。数据的完整性主要是指数据文件是否有丢失。
当前主要支持以下几种场景的数据校验:
注意事项:在校验备份数据前,请确认待校验的数据满足以下条件。
- 所有备份数据均为备份成功的数据。
- 仅支持校验未被清理的备份数据。
在执行恢复操作前,您需要执行一些恢复前的准备操作,包括创建资源、设置加密信息、打开恢复配置等。
恢复会先根据用户输入的命令,从备份目的端将需要的宏块数据从对应的全量备份和增量备份中恢复到目标租户,然后再拉取和回放事务日志。
在某些使用场景下(例如,跨城部署场景),由于备份介质的访问问题,会导致集群中某些 OBServer 无法访问备份介质,此时需要您通过设置 backup_zone 配置项,指定哪些 OBServer 可以备份。
以两地三中心的部署架构为例,部署架构图如下图所示。
图中,OceanBase 数据库主库的 5 副本跨越了 3 个机房和 2 个城市,即 2(深圳南山)+2(深圳宝安)+1(杭州)的模式。正常情况下,Leader 主要集中在南山的 2 个Zone 里。假设备份介质 NFS 部署在深圳南山机房,可以跨同城机房访问 NFS,但不允许跨城市访问 NFS,则南山和宝安机房的 OBServer 可以访问 NFS,且南山机房的 OBServer 访问 NFS 属于同机房访问,而宝安机房的 OBServer 访问 NFS 会产生跨机房网络流量;杭州机房的 OBServer 则无法访问 NFS。
OceanBase 集群的多副本机制提供了丰富的容灾能力,在机器级、机房级、城市级故障情况下,可以实现自动切换,并且不丢失数据,即 RPO = 0。
OceanBase 数据库的主备库高可用架构是 OceanBase 数据库高可用能力的重要补充。当主集群出现计划内或计划外(多数派副本故障)的不可用情况时,备集群可以接管服务,并且提供无损切换(RPO = 0)和有损切换(RPO > 0)两种容灾能力,最大限度降低服务的停机时间。
OceanBase 数据库支持创建、维护、管理及监控一个或多个备集群。备集群是生产库数据的热备份。管理员可以选择将资源密集型的报表操作分配到备集群,以便提高系统的性能和资源利用率。
OceanBase 主备库配置支持 1 个主集群和最多 31 个备集群。可以采用 SQL 命令或 OCP 来管理主集群和备集群。
主集群即生产集群,是唯一接受业务写入和强一致性读的集群,它的角色是 PRIMARY。
备集群是主集群的一个数据备份,用于保证事务的一致性,它的角色是 PHYSICAL STANDBY。
主集群会自动向备集群传输 REDO 日志,备集群收到 REDO 日志后会进行持久化,然后执行 REDO 回放操作,恢复用户数据和 Schema,保证与主集群物理一致。
OceanBase 数据库还提供了多种数据校验机制,通过多种途径保证备集群恢复的数据与主集群数据的一致性,包括:
部署备集群前,您需要了解以下信息:
在 OceanBase 数据库中,系统租户可以对普通租户进行管理。主备集群之间的系统租户是相互独立的,不会物理同步数据,但是备集群会感知主集群普通租户的变化,保证同步所有普通租户的数据。备集群从主集群的系统租户逻辑同步的租户管理操作包括创建租户、删除租户和重命名租户。
备集群也支持独立进行部分的租户管理操作,当前支持在主备集群上独立运维的租户管理操作如下:
此外,主备库配置下,主备集群均不支持物理恢复租户。
OceanBase 数据库的日志传输服务负责自动将主集群的 REDO 日志传输到备集群,它提供了以下能力:
OceanBase 数据库支持以下两种传输模式,每个备集群均需要独立配置:
OceanBase 数据库是多日志流系统,默认情况下,每个分区一个日志流。主备集群之间以日志流为单位同步日志,不同日志流之间相互独立。
以单个分区的日志流为例,主集群分区的主副本生成日志后,会同步给本集群的多数派版本,并且等待多数派持久化成功。此时,如果没有需要强同步的备集群,则系统立即返回日志持久化成功;如果有需要强同步的备集群,则主集群的主副本会给备集群的主副本发送日志,然后等待备集群的主副本应答成功后才返回日志持久化成功。同时,备集群的主副本收到日志后,会同步给本集群的多数派副本,待本集群的多数派持久化成功后,就会应答主集群的主副本成功。
综上所述,强同步模式下,备集群直接从主集群的主副本同步日志,不能自由选择上游副本。但是对于异步同步的备集群,OceanBase 数据库提供了按 Region 级联的传输日志策略,备集群可以就近选择上游副本,即备集群可以优先选择同 Region 的主集群的副本或者同 Region 的其他备集群副本作为上游副本。
异步同步模式下,OceanBase 数据库提供的按 Region 级联的传输日志策略,能够尽可能地保证跨 Region 部署场景下,仅传输一份日志,降低跨 Region 的网络带宽占用。
下图所示为备集群级联主集群同 Region 的副本的场景,其中:
下图所示为备集群级联备集群的场景,其中:
OceanBase 数据库支持三种保护模式。
保护模式类型:
保护模式功能本质上用于定义主集群以何种模式(强同步或异步同步)向不同的备集群传输日志,备集群以何种方式接收日志以及数据是否无损。
OceanBase 数据库提供了两个字段来描述保护模式的配置及主备集群的状态:
接着将从以下两个场景来描述这两个字段的取值及其含义。
最大性能模式切换为最大保护模式场景:
默认情况下,主集群和备集群均处于最大性能模式,主集群异步向所有备集群传输日志,备集群数据落后于主集群,数据是有损的。主集群和备集群的保护模式和保护级别均显示为 MAXIMUM PERFORMANCE 。
最大保护模式下,主集群会强同步日志给 SYNC 备集群, SYNC 备集群最终会达到数据无损状态。整个模式过程不是原子的,会存在中间状态。下图展示了从最大性能模式切换为最大保护模式时,< PROTECTION_MODE , PROTECTION_LEVEL >二元组状态的转换流程。
最大性能模式切换为最大可用模式的场景:
最大可用模式是最大性能和最大保护两种保护模式的结合。最大可用模式下,主集群会存在两种状态:强同步日志给 SYNC 备集群和异步同步日志给 SYNC 备集群,两种状态会动态变化,同时影响备集群的状态。下图展示了从最大性能模式切换为最大可用模式时,
< PROTECTION_MODE , PROTECTION_LEVEL > 二元组状态的转换流程。
获取集群信息:查询 V$OB_CLUSTER 视图,获取各个集群的角色、状态、保护模式和保护级别。
选择切换方式:角色切换操作主要包括以下两种。
选择待切换的备集群:当存在多个备集群时,需要选择合适的备集群作为待切换的目标集群。主要考虑以下几点:
执行 Failover 流程的注意事项及影响:
obclient> ALTER SYSTEM ACTIVATE PHYSICAL STANDBY CLUSTER FORCE;
obclient> ALTER SYSTEM FAILOVER TO 'obcluster' CLUSTER_ID=2;
前提条件:在操作前,您需要根据执行无损 Failover 操作前原主集群的状态来判断是否能够重新接入建立主备关系.
注意:原主集群接入时,由于接入流程不会完整校验数据的一致性,需要人工保证执行 Failover 操作前主备集群的数据一致。如果执行 Failover 操作前主备集群数据不一致,接入后可能会出现数据 Checksum校验错误。
操作步骤:确认可接入后,原主集群的接入流程如下。
操作步骤:在新主集群上,开启其他备集群的同步。
说明:为了保证安全,要求主备集群中只能存在一个真正的主集群。如果主集群可用,则在备集群上执行Failover 命令会报错。因此,在执行 Failover 命令前,需要确认主集群处于不可用状态,避免后续 Failover 命令执行失败。
注意:如果执行 Failover 前修改了配置项,Failover 执行完成后请务必恢复配置项的值,以免影响后续集群的正常工作。
执行有损 Failover 后,新主集群与原主集群以及其他备集群的数据会不一致,不支持接入原主集群和其他备集群。如果您想恢复主备关系,需要执行重建流程。
执行有损 Failover 后其他集群的恢复流程:
执行 Failover 后数据的订正流程:
执行有损 Failover 或无损 Failover 后,新主集群相比原主集群可能会丢失一部分数据,OceanBase 数据库提供了集群的只读模式功能,方便订正新主集群与原主集群的数据。
备集群各个分区的全功能型副本或者只读副本会实时回放 REDO 日志,并且能够承载读服务。OceanBase 数据库支持单分区读和跨分区一致性读,始终保证读取结果是一个快照,从而保证事务的一致性。
由于不同分区以及不同副本的回放进度不同,默认情况下,可能导致先后两次读取的
数据版本出现回退的情况。因此,OceanBase 数据库提供了单调读开关。开启单调读开关后,内部会维护租户级别单调递增的可读版本号,每次读取时都会获取全局最新的可读版本号作为快照版本,保证读取的数据越来越新,不会回退。
同时,OceanBase 数据库支持有界旧(Bounded Staleness)一致性读,保证读取的数据不会落后于主集群最新数据的特定时间,默认为 5 秒。如果备集群落后超过阈值,则读操作会重试等待,直到超时或者备集群追上。
注意:备集群的普通租户仅支持弱一致性读,如果发起强一致性读、写或者 DDL 操作,则会报错。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。