文档首页/ 表格存储服务 CloudTable/ 最佳实践/ 集群运维/ 通过OBS协议备份恢复Doris业务数据
更新时间:2025-08-14 GMT+08:00
分享

通过OBS协议备份恢复Doris业务数据

应用场景

为了确保Doris数据安全,避免因表目录或文件损坏导致集群不可用,或在执行表迁移等重大操作时,需备份数据。从而保证系统在出现异常或未达到预期结果时可以及时恢复数据,对业务的影响降到最低。

操作流程:

约束限制

  • 该操作仅适用于Doris 2.0.5以上引擎版本。
  • 该操作仅适用于Doris存算一体集群。
  • 备份恢复目前只允许拥有admin权限的用户执行。
  • 一个数据库中只允许有一个正在执行的备份作业。

准备工作

步骤一:创建OBS文件系统并获取AK/SK

创建OBS并行文件系统

  1. 登录对象存储服务控制台。
  2. 选择左侧导航栏“并行文件系统”,进入并行文件系统管理页面。
  3. 单击页面右上角“创建并行文件系统”,进入创建页面。
  4. 配置“基础配置”、“并行文件系统配置”、“功能配置”,确认参数无误,单击“立即创建”。具体请参见创建并行文件系统章节。
    • 企业项目需要和Doris集群保持一致。
    • 如果设置私有桶,请在权限控制中创建访问策略
  5. 在并行文件系统列表中单击新建的并行文件系统名称,单击“概览”,查看并记录“Endpoint”信息。

获取AK/SK

  1. 将鼠标移到右上角登录用户名处,在下拉列表中选择“我的凭证”。
  2. 在“API凭证”中,记录并保存“账号ID”的值,作为DomainID。
  3. 单击“访问密钥”页签,单击“新增访问密钥”,输入验证码或密码。单击“确定”,生成并下载访问密钥,在.csv文件中获取AK/SK信息。

    AK/SK为敏感信息,防止丢失带来安全隐患。

步骤二:备份Doris集群数据

  1. 使用SSH登录工具,通过弹性IP远程登录到Linux弹性云服务器。

    具体登录操作步骤请参见弹性云服务器《用户指南》中的“ SSH密码方式登录”章节。

  2. 连接Doris集群。具体请参见使用MySQL客户端连接Doris普通集群
    ./mysql -uadmin -ppassword -h集群内网地址 -P9030
  3. 创建仓库example_repo。
    CREATE REPOSITORY `example_repo`
    WITH OBS
    ON LOCATION "obs://cloudtable-test-obs/backup"
    PROPERTIES
    (
    "obs.endpoint"="***",
    "obs.access_key"="***",
    "obs.secret_key"="***"
    );
    • example_repo:在OBS中创建的存储仓库,用于备份数据。
    • ON LOCATION:指定OBS上的存储路径。
  4. 查看已创建的仓库。
    SHOW REPOSITORIES;

    显示结果如下,表示仓库创建成功。

    +--------+--------------+---------------------+------------+---------------------+--------+------+--------+
    | RepoId | RepoName     | CreateTime          | IsReadOnly | Location            | Broker | Type | ErrMsg |
    +--------+--------------+---------------------+------------+---------------------+--------+------+--------+
    | 10785  | example_repo | 2025-07-29 11:38:27 | false      | obs://z125-n/BUCKUP | -      | OBS  | NULL   |
    +--------+--------------+---------------------+------------+---------------------+--------+------+--------+
  5. 全量备份数据表demo数据库下的表到仓库example_repo中。
    BACKUP SNAPSHOT demo.snapshot_label1
    TO example_repo
    ON (example_tbl)
    PROPERTIES ("type" = "full");
    • demo.snapshot_label1:为备份快照名称。
    • TO example_repo:指定将快照备份到名为“example_repo”的仓库中。
    • ON (example_tbl):指定备份对象。
    • type:指备份的类型。full:全量备份,适用于首次备份和定期完整备份。
  6. 执行以下命令查看BACKUP作业执行情况。
    show BACKUP;
  7. 在远端仓库中查看备份是否成功。
    SHOW SNAPSHOT ON example_repo WHERE SNAPSHOT = "snapshot_label1";
    • ON example_repo:指定要查询的存储库名称为example_repo。
    • snapshot_label1:为所查询的快照名称。

    显示结果如下表示在远端仓库中备份数据成功。

    +-----------------+---------------------+--------+
    | Snapshot        | Timestamp           | Status |
    +-----------------+---------------------+--------+
    | snapshot_label1 | 2025-07-29-14-18-54 | OK     |
    +-----------------+---------------------+--------+

步骤三:恢复Doris集群数据

  1. 使用SSH登录工具,通过弹性IP远程登录到Linux弹性云服务器。

    具体登录操作步骤请参见弹性云服务器《用户指南》中的“ SSH密码方式登录”章节。

  2. 连接Doris集群。具体请参见使用MySQL客户端连接Doris普通集群
    ./mysql -uadmin -ppassword -h集群内网地址 -P9030
  3. 创建仓库example_repo(选)。
    • 在同一个集群不同数据库进行备份恢复时,只需在备份数据集群创建仓库example_repo。
    • 不同集群进行备份恢复数据时,需要在恢复数据集群中创建仓库example_repo。
    CREATE REPOSITORY `example_repo`
    WITH OBS
    ON LOCATION "obs://cloudtable-test-obs/backup"
    PROPERTIES
    (
    "obs.endpoint"="***",
    "obs.access_key"="***",
    "obs.secret_key"="***"
    );
  4. 从远端已备份数据仓库中恢复数据。从example_repo中恢复demo中的表example_tbl到数据库demo1中。
    RESTORE SNAPSHOT demo1.`snapshot_label1`
    FROM `example_repo`
    ON ( `example_tbl` )
    PROPERTIES
    (
    "backup_timestamp"="2023-08-16-20-13-55",
    "replication_num" = "3"
    );

    “backup_timestamp”可通过以下命令获取:

    SHOW SNAPSHOT ON example_repo WHERE SNAPSHOT = "snapshot_label1";
  5. 执行以下命令查看恢复作业的执行情况。
    SHOW RESTORE\G;
  6. 在demo1数据库中查看恢复的数据表。如果显示example_tbl数据表,证明数据恢复成功。
    show tables;
    +-----------------+
    | Tables_in_demo1 |
    +-----------------+
    | example_tbl     |
    +-----------------+

常见问题

  • 问题现象:数据恢复失败,提示指定了错误的备份时间戳。如图所示:

  • 解决办法:远端备份仓库时间戳错误,将“:”修改“-”。

相关文档