大数据Doris(五十六):RESOTRE数据恢复

news2025/1/11 7:52:47

文章目录

RESOTRE数据恢复

一、RESTORE数据恢复原理

二、RESTORE 数据恢复语法

三、RESOTRE数据恢复案例

1、在 Doris 集群中创建 mydb_recover 库

2、执行如下命令恢复数据

3、查看 restore 作业的执行情况

四、注意事项


RESOTRE数据恢复

Doris 支持BACKUP方式将当前数据以文件的形式,通过 broker 备份到远端存储系统中。之后可以通过 RESOTRE命令进行恢复,从远端存储系统中将数据恢复到任意 Doris 集群。通过这个功能,Doris 可以支持将数据定期的进行快照备份。也可以通过这个功能,在不同集群间进行数据迁移。该功能需要 Doris 版本 0.8.2+,使用该功能,需要部署对应远端存储的 broker。如 BOS、HDFS 等。

一、RESTORE数据恢复原理

恢复操作需要指定一个远端仓库中已存在的备份,然后将这个备份的内容恢复到本地集群中。当用户提交 Restore 请求后,系统内部会做如下操作:

1、在本地创建对应的元数据

这一步首先会在本地集群中,创建恢复对应的表分区等结构。创建完成后,该表可见,但是不可访问。

2、本地snapshot

这一步是将上一步创建的表做一个快照。这其实是一个空快照(因为刚创建的表是没有数据的),其目的主要是在 Backend 上产生对应的快照目录,用于之后接收从远端仓库下载的快照文件。

3、下载快照

远端仓库中的快照文件,会被下载到对应的上一步生成的快照目录中。这一步由各个 Backend 并发完成。

4、生效快照

快照下载完成后,我们要将各个快照映射为当前本地表的元数据。然后重新加载这些快照,使之生效,完成最终的恢复作业。

二、RESTORE 数据恢复语法

RESTORE 语句用于将之前通过 BACKUP 命令备份的数据,恢复到指定数据库下。该命令为异步操作。提交成功后,需通过 SHOW RESTORE 命令查看进度。仅支持恢复 OLAP 类型的表。

RESTORE语法如下:

RESTORE SNAPSHOT [db_name].{snapshot_name}
FROM `repository_name`
[ON|EXCLUDE] (
`table_name` [PARTITION (`p1`, ...)] [AS `tbl_alias`],
...
)
PROPERTIES ("key"="value", ...);

以上命令注意点如下: 

  • 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
  • ON 子句中标识需要恢复的表和分区。如果不指定分区,则默认恢复该表的所有分区。所指定的表和分区必须已存在于仓库备份中。
  • EXCLUDE 子句中标识不需要恢复的表和分区。除了所指定的表或分区之外仓库中所有其他表的所有分区将被恢复。
  • 可以通过 AS 语句将仓库中备份的表名恢复为新的表。但新表名不能已存在于数据库中。分区名称不能修改。
  • 可以将仓库中备份的表恢复替换数据库中已有的同名表,但须保证两张表的表结构完全一致。表结构包括:表名、列、分区、Rollup等等。
  • 可以指定恢复表的部分分区,系统会检查分区 Range 或者 List 是否能够匹配。
  • PROPERTIES 目前支持以下属性:
    • "backup_timestamp" = "2018-05-04-16-45-08":指定了恢复对应备份的哪个时间版本,必填。该信息可以通过 SHOW SNAPSHOT ON repo; 语句获得。
    • "replication_num" = "3":指定恢复的表或分区的副本数。默认为3。若恢复已存在的表或分区,则副本数必须和已存在表或分区的副本数相同。同时,必须有足够的 host 容纳多个副本。
    • "reserve_replica" = "true":默认为 false。当该属性为 true 时,会忽略 replication_num 属性,恢复的表或分区的副本数将与备份之前一样。支持多个表或表内多个分区有不同的副本数。
    • "reserve_dynamic_partition_enable" = "true":默认为 false。当该属性为 true 时,恢复的表会保留该表备份之前的'dynamic_partition_enable'属性值。该值不为true时,则恢复出来的表的'dynamic_partition_enable'属性值会设置为false。
    • "timeout" = "3600":任务超时时间,默认为一天。单位秒。
    • "meta_version" = 40:使用指定的 meta_version 来读取之前备份的元数据。注意,该参数作为临时方案,仅用于恢复老版本 Doris 备份的数据。最新版本的备份数据中已经包含 meta version,无需再指定。

三、RESOTRE数据恢复案例

由于这里没有额外的Doris集群,这里不能演示Doris数据跨集群迁移。这里我们将之前通过BACKUP 备份的数据恢复到新的Doris库中。具体操作步骤如下:

1、在 Doris 集群中创建 mydb_recover 库

mysql> create database mydb_recover;
mysql> use mydb_recover;

 

2、执行如下命令恢复数据

#获取backup_timestamp
mysql> show snapshot on hdfs_mydb_repo;
+-----------------+---------------------+--------+
| Snapshot        | Timestamp           | Status |
+-----------------+---------------------+--------+
| snapshot_label1 | 2023-06-30-21-42-40 | OK     |
+-----------------+---------------------+--------+


#恢复数据
RESTORE SNAPSHOT `snapshot_label1`
FROM `hdfs_mydb_repo`
ON ( `tbl1`,`tbl2` )
PROPERTIES
(
"backup_timestamp"="2023-06-30-21-42-40",
"replication_num" = "1"
);

3、查看 restore 作业的执行情况

mysql> show restore\G;
*************************** 1. row ***************************
                        JobId: 46735
                        Label: snapshot_label1
                    Timestamp: 2023-06-30-21-42-40
                       DbName: default_cluster:mydb_recover
                        State: FINISHED
                    AllowLoad: false
               ReplicationNum: 1
            ReplicaAllocation: tag.location.default: 1
               ReserveReplica: false
ReserveDynamicPartitionEnable: false
                  RestoreObjs: {
  "name": "snapshot_label1",
  "database": "mydb",
  "backup_time": 1680183760410,
  "content": "ALL",
  "olap_table_list": [
    {
      "name": "tbl2",
      "partition_names": [
        "p1",
        "p2",
        "p3"
      ]
    },
    {
      "name": "tbl1",
      "partition_names": [
        "p1",
        "p2",
        "p3"
      ]
    }
  ],
  "view_list": [],
  "odbc_table_list": [],
  "odbc_resource_list": []
}
                   CreateTime: 2023-06-30 21:49:24
             MetaPreparedTime: 2023-06-30 21:49:27
         SnapshotFinishedTime: 2023-06-30 21:49:30
         DownloadFinishedTime: 2023-06-30 21:49:36
                 FinishedTime: 2023-06-30 21:49:42
              UnfinishedTasks: 
                     Progress: 
                   TaskErrMsg: 
                       Status: [OK]
                      Timeout: 86400

四、注意事项

  • 如果恢复作业是一次覆盖操作(指定恢复数据到已经存在的表或分区中),那么从恢复作业的 COMMIT 阶段开始,当前集群上被覆盖的数据有可能不能再被还原。此时如果恢复作业失败或被取消,有可能造成之前的数据已损坏且无法访问。这种情况下,只能通过再次执行恢复操作,并等待作业完成。因此,我们建议,如无必要,尽量不要使用覆盖的方式恢复数据,除非确认当前数据已不再使用。
  • RESTORE报错:[20181: invalid md5 of downloaded file:/data/doris.HDD/snapshot/20230607095111.862.86400/19962/668322732/19962.hdr, expected: f05b63cca5533ea0466f62a9897289b5, get: d41d8cd98f00b204e9800998ecf8427e],该错误是由于备份和恢复的表的副本数不一致导致的,执行恢复命令时需指定副本个数。
  • RESTORE报错:[COMMON_ERROR, msg: Could not set meta version to 97 since it is lower than minimum required version 100],该错误是由于备份和恢复不是同一个版本导致的,使用指定的 meta_version 来读取之前备份的元数据。注意,该参数作为临时方案,仅用于恢复老版本 Doris 备份的数据。最新版本的备份数据中已经包含 meta version,无需再指定,针对上述错误具体解决方案指定meta_version = 100。

 


  • 📢博客主页:https://lansonli.blog.csdn.net
  • 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!
  • 📢本文由 Lansonli 原创,首发于 CSDN博客🙉
  • 📢停下休息的时候不要忘了别人还在奔跑,希望大家抓紧时间学习,全力奔赴更美好的生活✨

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/717131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

力扣 40. 组合总和 II

题目来源:https://leetcode.cn/problems/combination-sum-ii/description/ C题解: 这道题的难点在于解集中不能包含重复的组合。如果用set去重会造成超时,所以只能在单层递归逻辑中处理。通过识别下一个数与当前数是否相同,来修改…

抖音小程序--开启沙盒模式后一直报,获取白名单失败:您没有权限访问此应用

一. 出现问题 按照抖音开发文档创建沙盒环境,然后替换appid后一直报无权限,如下图: 最后才发现,登录抖音开发工具的账户必须是超级管理员账户,添加的协助开发者,就算给了全部权限,也依然会报上面…

Navicat 入选中国信通院发布的《中国数据库产业图谱(2023)》

7 月 4 日,2023 年可信数据库发展大会主论坛在北京国际会议中心成功召开。会上,中国信息通信研究院正式发布《中国数据库产业图谱(2023)》。作为中国数据库生态工具供应商,凭借易用、稳定、可靠的产品力,以…

【C++】4.工具:读取yaml配置信息

😏★,:.☆( ̄▽ ̄)/$:.★ 😏 这篇文章主要介绍读取yaml配置信息。 学其所用,用其所学。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路&…

web学习1--maven--项目管理工具

写在前面: 这学期搞主攻算法去了,web的知识都快忘了。开始复习学习了。 文章目录 maven介绍功能介绍maven安装jar包搜索仓库 pom文件项目介绍父工程依赖管理属性控制可选依赖构建 依赖管理依赖的传递排除依赖可选依赖 maven生命周期分模块开发模块聚合…

产品的帮助中心怎么建设?关于帮助文档的7个小技巧

用户使用产品的过程中,常常会遇到与产品使用相关的问题。这时候,用户通常会面临三个选择:1.寻找客服的帮助 2.阅读产品帮助文档 3.放弃使用产品。 显然,对于企业而言,当然是希望能够帮助用户解决问题,使其…

shiro入门

1、概述 Apache Shiro 是一个功能强大且易于使用的 Java 安全(权限)框架。借助 Shiro 您可以快速轻松地保护任何应用程序一一从最小的移动应用程序到最大的 Web 和企业应用程序。 作用:Shiro可以帮我们完成 :认证、授权、加密、会话管理、与 Web 集成、…

车载通信,来看看SOA架构通信如何跨系统的

SOA车载跨系统通信 在车载系统中实现跨系统通信时,SOA架构(Service-Oriented Architecture,面向服务的架构)可以提供一种有效的解决方案。以下是一种基于SOA的车载跨系统通信的概述: 定义服务接口:首先&a…

2023年无线蓝牙耳机排行榜,十款无线蓝牙耳机品牌推荐

蓝牙耳机作为现代生活必备的电子产品之一,我们在选购时的选择就显得尤为重要。随着各大科技公司对蓝牙耳机功能的不断完善,用户对于耳机的期望也越来越高,音质、性能、降噪、舒适度等方面都成为了用户选择蓝牙耳机时考虑的因素。接下来我们一…

从零开始 Spring Boot 57:JPA中的一对多关系

从零开始 Spring Boot 57:JPA中的一对多关系 图源:简书 (jianshu.com) 在上篇文章中我们介绍了如何在 JPA 中实现实体的一对一关系,在关系型数据库设计中,除了一对一关系,还存在一对多关系。本篇文章介绍如何在 JPA 中…

Android仿淘宝、京东、拼多多搜索历史

详情见代码 :https://github.com/yixiaolunhui/FSearchHistory

计算机网络概述(一)

因特网概述 网络,互联网与因特网的区别联系: 以上是使用有线和无线链路连接的两个网络。那么,要让这两个网络连接起来,就需要路由器。若干个网络通过多个路由器互联起来,就称为了互联网。 因特网是当今世界上最大的互…

基于springboot+vue的高校二手交易系统(源代码+数据库)080

基于springbootvue的高校二手交易系统(源代码数据库)080 一、系统介绍 本项目前后端分离 本系统分为管理员、用户两种角色 用户角色包含以下功能: 登录、注册、(商品搜索、发布、收藏、下单)、评论、个人信息修改、密码修改、我的发布、我的订单、收藏夹 管理…

使用android studio将网站打包成apk(可以直接使用替换为自己的网站连接即可)

公司有这个需求生成一个webapp应用。前面一直在使用web与Android混合开发,越是后面你就发现越有意思。hbuildX官网不怎么维护,虽然一直说这是潮流,uni-app开发也挺火的,但是安卓开发特别是适配不同的手机型号,真的是头…

详解JS 作用域与作用域链、IIFE模式、js执行过程

文章目录 一、什么是作用域二. 全局作用域、函数作用域、块级作用域全局作用域函数作用域注意 if、for循环、while循环变量 块级作用域 二、什么是作用域链1. 什么是自由变量2.什么是作用域链3. 关于自由变量的取值 三、IIFE模式由来语法基本语法带参 四、JavaScript 执行过程编…

C++ 数据结构B 树

目录 1. 常见的搜索结构 2. B树概念 3. B-树的插入分析 4. B-树的插入实现 4.1 B-树的节点设计 4.2 插入key的过程 4.4 B-树的简单验证 4.5 B-树的性能分析 4.6 B-树的删除 5. B树和B*树 5.1 B树 5.2 B*树 5.3 总结 6. B-树的应用 6.1 索引 6.2 MySQL索引简介 6…

浅谈建筑项目中的智能照明系统的设计

张心志 安科瑞电气股份有限公司 上海嘉定 201801 【摘要】:建筑智能照明工程中智能照明控制系统发展迅速,具有舒适性和节能性两方面优势。智能照明控制系统已经处于模块化高速发展阶段,如今更好的控制方案成为制约系统发展的瓶颈。文章在研…

工作总是忙不完是什么原因?时间管理软件帮你解决问题

随着市场竞争的激烈,有不少上班族都感受到了工作的压力,每天越来越多的工作任务需要完成。于是我们经常会听到这样的抱怨:“工作太多了,总是忙不完!”那么工作总是忙不完是什么原因呢?其实一般来说工作总是…

GB50255-2014电气装置安装工程电力变流设备施工及验收规范

为了保证电力变流设备安装工程的施工质量,促进施工技术的提高,保证电力变流设备的安全稳定运行,制定本规范。 本规范适用于电力系统中除高压直流输电和柔性交流输电以外的电力变换设备的施工、调试及验收。 电力变流设备的施工、调试及验收…

linux epoll/select使用区分和实例对比

Linux内核poll,ppoll,epoll,select代码位置: poll,ppoll,select相关内核实现在在fs/select.c中; epoll_ctl和epoll_wait相关函数在fs/eventpoll.c中 epoll实测不支持监听普通文件,select可以…