【 使用环境 】 环境
【 OB 】
【 使用版本 】 4.2
【问题描述】 看了文档提到系统租户信息和资源的管理都是在 RootService 服务上,RootService 依赖于__all_core_table 等核心表,为什么说备份时 不需要备份系统租户呢?
顶起来
- 系统租户的数据主要用于集群管理和元数据存储,这些数据并不包含用户的业务数据,而是用于维护数据库的运行状态和配置信息。
- 即使系统租户的数据丢失,也可以通过其他副本来进行恢复,不影响集群的基本功能。
- 虽然系统租户的数据对于集群运行至关重要,有些信息通常不是通过传统的物理备份和恢复来保护的,而是通过系统的自我管理和数据复制机制来确保其可用性。
所以通常再备份时,重点是备份用户租户的数据,确保业务数据的安全。而且sys租户不支持备份恢复能力
但是 普通租户也是 有多副本的呀? 为啥 普通租户 由多副本 机制不能恢复?额 难道是 系统租户在多副本之间的数据同步是强一致性的? 另外 我发现 普通租户的 meta租户也是不参与备份的,,这个 普通租户的meta用户 也不用备份么?但是在 store/clog 目录下 看 系统组合 和 meta租户也都是会产生 clog的… 有clog 应该就 也是依赖于 基线数据+增量日志保证数据 正确性的吧?
所以对 这俩 租户 为啥 不参与备份 感觉 还是不太理解,,
技术实现上可能有一定的原因,这里就说设计上的一个分析推测。
业务使用但是租户数据,sys租户跟业务没有关系。不过租户的运行离不开 sys租户。租户的备份和还原也离不开所在集群的sys租户的支持。那么问题来了,sys租户如果有物理备份,那还原技术肯定跟普通的租户还原逻辑不一样。普通租户的还原只需要有一个集群(集群就有sys租户)的支持(资源支持、还原逻辑实现等)。而sys租户的还原就没有这个条件(不可能有另外一个sys租户来支持它)。普通租户可以在 A 集群备份,在B集群还原,跟sys租户没有绑定关系。
OB 并没有针对 sys租户实现一种备份还原逻辑。恢复 sys租户就像恢复整个集群一样,而集群通常是三副本部署,这个在还原的时候还得重复 bootstrap。辛辛苦苦还原一个 sys租户对业务毫无帮助,还不如全新部署一个新集群。 还原普通的租户就没这个问题,因为集群已经存在了。
所以 SYS 租户的备份恢复对业务可用性意义不大。SYS租户故障如果影响到业务租户的正常使用,此时就要走 OB的主备切换了(V3是集群级别的主备,V4是租户级别的主备)。这是最极端的故障场景。
meta租户里没有业务数据,所以备份恢复意义也不大。还原租户备份的步骤里会新建一个租户(自然也有对应的meta租户)。
多谢 老师 的回答
看了下… 意思就是说 sys 租户是集群初始化时产生的,不需要备份,至于bootstrap后的sys用户的数据,是在恢复时使用备份集中的 meta数据 重建时,自动填充 到里面的,meta租户 里面的数据也一样。。 是这个意思吧?
你可以观察一下OCP里租户还原任务的每个步骤日志。里面有 SQL。
还原租户大概包括下面步骤,可能不同版本会有点小区别。
-
- 在目标集群里创建资源单元规格。这个规格是OCP 还原租户的时候指定的,可以跟租户备份到时候规格不一样。
-
- 在目标集群里使用上面资源规格分配资源池,这一步会分配资源。如果目标集群资源不足,这一步就失败了。等人为处理。人为处理方法无非就是自己调低资源单元规格,先把资源池分配出来。
-
- 使用上面资源池还原租户的数据。就是还原分区了,并行还原。
1 2 3 都会在目标集群的 sys租户里写下对应的元数据,跟原来的 sys租户没有关系。
3 还原新的租户会自带 meta租户。 meta租户里没有业务数据分区的内容,不存在往meta里还原数据。meta租户有自己的数据,应该是跟 新的租户有关系。
明白了 多谢老师的 耐心 解答