oceanbase 物理备库是否可以使用已经存在的租户去建立

【 使用环境 】测试环境
【 OB or 其他组件 】ob
【 使用版本 】4.3.5.0
【问题描述】想咨询一下,我目前两个已经创建了租户的 oceanbase 节点,比如 A 上面有租户:tenant3 B上面有租户 tenant2;能否使用B 上面的 tenant2 租户作为 A 上面 tenant3的物理备库

@论坛小助手

根据文档库中的信息,从 OceanBase V4.1.0 版本开始,物理备库的产品形态变更为租户级主备。这意味着主备租户所属的集群不一定相同,并且主备租户之间无感知,即主租户不记录备租户的信息,备租户也不记录主租户信息。

对于您的问题,在两个已经创建了租户的 OceanBase 节点中,可以将一个节点上的租户设置为另一个节点上租户的物理备库。具体来说,您可以使用 B 上面的 tenant2 租户作为 A 上面 tenant3 的物理备库。但需要注意以下几点:

  • 主租户和备租户既可以是单副本的租户,也可以是多副本或具备仲裁高可用能力的租户,不同的部署方式为租户提供不同级别的副本级容灾能力。(参考:物理备库 → 物理备库配置
  • 主租户和备租户的租户名称不要求相同,租户的资源规格、配置、Locality 等也不要求必须相同。
  • 在创建备租户时,需要结合源端租户的资源使用情况及实际的业务需求情况,来确定是否适合将已有的租户作为备租户。(参考:创建备租户前准备 → 选择待创建的备租户个数

综上所述,您可以在测试环境中尝试将 B 上的 tenant2 设置为 A 上 tenant3 的物理备库,但请确保评估并满足上述条件。此外,请注意版本差异可能带来的影响,您当前使用的版本为 4.3.5.0,而提供的文档片段基于 V4.1.0 版本,建议查阅对应版本的具体操作指南以确保兼容性和正确性。

具体信息可参考以下文档:

  1. 物理备库
  2. 物理备库概述
  3. OceanBase 术语
  4. 创建备租户前准备
  5. ACTIVATE STANDBY
  6. 创建服务

不行吧,我尝试使用 B 上已经存在的 tenant2 作为 A 实例 tenant3的物理备库,会报错tenant2 已存在

根据文档库中的信息,您的问题确实存在一定的限制。当您尝试使用 B 上已经存在的 tenant2 作为 A 实例 tenant3 的物理备库时遇到错误“tenant2 已存在”,这是因为 OceanBase 不支持直接将一个已存在的租户设置为另一个租户的物理备库。

具体来说,在物理备库场景中创建备租户的方式是通过 CREATE STANDBY TENANT 语句来创建一个新的空备租户,然后该备租户会自动进入持续同步状态从主租户同步数据(参考:CREATE STANDBY TENANT → 描述)。而不能直接使用一个已有数据和配置的租户作为备租户,因为这会导致命名冲突和其他潜在的问题。

对于您当前的需求,建议采取以下步骤:

  1. 在 B 实例上创建一个新的空备租户用于与 A 实例上的 tenant3 进行物理备份。例如:

    CREATE STANDBY TENANT tenant3_standby;
    
  2. 确保新创建的备租户能够正确地从主租户同步数据,并验证其读取一致性等功能是否正常工作。

  3. 如果需要保留 tenant2 中的数据或功能,可以考虑将其迁移到新的备租户中,或者在业务允许的情况下进行合并等操作。

总之,OceanBase 不支持直接使用已有的租户作为物理备库,因此您需要按照上述方法创建一个新的备租户来进行物理备份。如果您有更多关于如何迁移或整合现有租户的具体需求,请提供更多信息以便我们进一步帮助您解决问题。

具体信息可参考以下文档:

  1. ACTIVATE STANDBY
  2. 物理备库同步过程中卡住
  3. 使用限制
  4. Failover
  5. CREATE STANDBY TENANT
  6. 其他问题
  7. 功能使用限制
  8. Switchover

(小助手的答复已结束,如未能解决您的问题,请继续提问并等待其他同学的回复,谢谢!)

可以的,需要确保租户不同名

需要怎么操作呢?比如我想做的操作是
两个实例:oceanbaseA 和 oceanbaseB,上面分别有集群 cluster1(有租户 tenant) 和 cluster2(cluster1的备租户 tenant1_2),当 cluster1 上面的租户异常后,使用命令 failover 切换到了 cluster2。等待 cluster1 启动后,将 tenant 作为 tenant1_2 的备租户。并且不重建cluster1 上面的 tenant,保留原来的数据,这样可以吗?

failover后备租户是必须要重建的。

必须重建指的是需要创建出新的备租户吗?如果我再 cluster1 上面还有一个租户 tenant1bak。里面有 tenant 的数据,可以使用 tenant1bak 作为 cluster2 上面 tenant1_2 的备租户吗?

应该是可以的,这两者的主备关系没变。
前提是增量一直保留着

是这样