oceanbase 物理备库是否支持 mysqldump 或者 obdump 命令备份

【 使用环境 】测试环境
【 OB or 其他组件 】 observer
【 使用版本 】4.3.5
【问题描述】我建立了一个物理备库的 observer,发现使用 mysqldump 命令指定备库做备份时,会提示standby tenant is read only;想确认一下备库是否支持备份,无论是mysqldump 还是 obdump命令

@论坛小助手

根据文档库中的信息,可以明确以下几点:

  1. 物理备库的只读特性
    物理备库在 OceanBase 数据库中是只读的(standby tenant is read only),这是设计上的限制。因此,直接对物理备库执行写操作或修改操作是不允许的。这与您遇到的 standby tenant is read only 提示一致。

  2. 备份工具的支持情况

    • mysqldump: 根据文档片段 4 和 7 的内容,mysqldump 是用于 MySQL 数据库的备份工具,而 OceanBase 数据库支持通过 mydumper 工具来替代 mysqldump 进行数据导出。此外,文档明确指出,mysqldump 并不适用于 OceanBase 数据库的物理备库场景。
    • obdump: 在检索到的文档中,并未提到 obdump 命令的存在或其功能。因此,无法确认 obdump 是否为官方支持的工具。
  3. 物理备库是否支持备份
    根据文档片段 2 的描述,物理备库的主要用途是提供高可用性、灾难恢复以及降低主数据库的压力。虽然物理备库本身不能直接进行备份操作,但可以通过以下方式间接实现备份:

    • 使用主库进行备份:由于物理备库的数据来源于主库,可以通过对主库执行备份操作(如使用 mydumper 或物理备份功能)来间接备份备库的数据。
    • 使用物理备份功能:根据文档片段 1 和 3 的描述,OceanBase 数据库提供了基于日志归档和数据快照的物理备份功能,这些功能可以在主库上执行,并且适用于物理备库的恢复需求。

综合结论

根据上述分析,物理备库不支持直接使用 mysqldumpobdump 命令进行备份,原因在于物理备库是只读的。如果需要备份物理备库的数据,建议采取以下措施:

  1. 从主库备份:使用 mydumper 或物理备份功能对主库进行备份,从而间接备份物理备库的数据。
  2. 利用物理备份功能:通过 OceanBase 数据库提供的物理备份功能(如日志归档和数据快照),确保备库的数据一致性。

如果您需要进一步确认 obdump 的具体功能或适用场景,请提供更多官方文档或说明,以便更准确地解答您的问题。

检索到的文档如下:

  1. 备份架构
  2. 物理备库
  3. 使用 mydumper 和 myloader 从 MySQL 数据库迁移数据到 OceanBase 数据库
  4. oceanbase.DBA_OB_BACKUP_SET_FILES
  5. 物理备库同步过程中卡住

使用官方工具OBDUMPER
快速入门-V4.3.3.1-文档-分布式数据库使用文档

1 个赞

我知道这个命令,这个命令可以备份备库么?

根据文档库中的信息,严格来说,mysqldump 或者 obdump(如果存在的话)并不适合直接用于 OceanBase 物理备库的备份。以下是详细的原因和解答:

  1. 物理备库的只读特性
    根据文档片段 4 的描述,物理备库是只读的(standby tenant is read only)。这意味着您无法对物理备库执行任何写操作,包括通过 mysqldump 或其他类似工具进行数据导出。

  2. 关于 mysqldump

    • mysqldump 是 MySQL 官方提供的逻辑备份工具,适用于逻辑导出表结构和数据。
    • 在 OceanBase 数据库中,虽然兼容了部分 MySQL 语法,但 mysqldump 并不完全适配 OceanBase 的所有特性,尤其是针对物理备库的场景。
    • 如果尝试在物理备库上运行 mysqldump,会因为只读限制而失败,正如您遇到的错误提示:standby tenant is read only
  3. 关于 obdump

    • 在检索到的文档中,并未明确提到 obdump 命令的存在或其功能。因此,无法确认 obdump 是否为官方支持的工具,也无法确定它是否能够用于物理备库的备份。
    • 如果 obdump 是社区版中自定义开发的工具,请提供更详细的说明或文档链接,以便进一步确认其适用性。
  4. 物理备库的备份建议
    根据文档片段 3 和 6 的内容,OceanBase 提供了专门的物理备份功能,可以满足物理备库的备份需求:

    • 主库备份间接覆盖备库:由于物理备库的数据来源于主库,可以通过对主库执行全量或增量备份来间接备份备库的数据。
    • 使用物理备份功能:通过 obclientobshell 等工具发起物理备份任务(如文档片段 3 中的 SET ENCRYPTION ON IDENTIFIED BY 'password' ONLY;),确保备库的数据一致性。

综合结论

  • mysqldump 不支持物理备库备份:由于物理备库是只读的,mysqldump 无法直接用于备份。
  • obdump 的支持情况未知:目前没有明确的文档支持 obdump 的功能,请提供更多细节以确认。
  • 推荐使用物理备份功能:通过主库的全量或增量备份,或者直接使用 OceanBase 提供的物理备份功能,来实现物理备库的备份需求。

如果您需要进一步确认 obdump 的具体功能,请提供更多官方文档或说明,以便更准确地解答您的问题。

详情请参考:

  1. SQL FAQ
  2. 创建备租户前准备
  3. 发起全量数据备份
  4. 日志传输服务概述
  5. 发起租户级备份
  6. BACKUP
  7. 物理备库同步过程中卡住
  8. 查看单个租户备份任务
  9. obshell 备份命令组

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

备库是只读的,应该不允许导出

1 个赞

你说的备库是备租户吗?备租户可以导出

如何在备副本、备集群上导出?如何弱读导出?

A:v4.2.6 之前的版本,可以通过 --weak-read 在备副本导出,不支持在备集群导出。

v4.2.6 及之后的版本,可以自行配置 sql 会话变量

添加以下预执行 sql:SET ob_read_consistency = WEAK;