大数据Doris(五十四):BACKUP数据备份原理和语法

news/2024/11/15 8:32:58/

文章目录

BACKUP数据备份原理和语法

一、BACKUP数据备份原理

1、快照及快照上传

2、元数据准备及上传

二、BACKUP数据备份语法


BACKUP数据备份原理和语法

通过Doris数据导出的各种方式我们可以将Doris中的数据进行备份,除了export方式之外,Doris 还支持Backup方式对数据进行备份,该方式将当前数据以文件的形式,通过 broker 备份到远端存储系统中。之后可以通过恢复命令,从远端存储系统中将数据恢复到任意 Doris 集群。通过这个功能,Doris 可以支持将数据定期的进行快照备份。也可以通过这个功能,在不同集群间进行数据迁移。

Doris数据备份功能需要 Doris 版本 0.8.2+,使用该功能,需要部署对应远端存储的 broker。如 BOS、HDFS 等。

一、BACKUP数据备份原理

备份操作是将指定表或分区的数据,直接以Doris 存储的文件的形式,上传到远端仓库中进行存储。当用户提交 Backup 请求后,系统内部会做如下操作:

1、快照及快照上传

快照阶段会对指定的表或分区数据文件进行快照。之后,备份都是对快照进行操作。在快照之后,对表进行的更改、导入等操作都不再影响备份的结果。快照只是对当前数据文件产生一个硬链,耗时很少。快照完成后,会开始对这些快照文件进行逐一上传。快照上传由各个 Backend 并发完成。

 

2、元数据准备及上传

数据文件快照上传完成后,Frontend 会首先将对应元数据写成本地文件,然后通过 broker 将本地元数据文件上传到远端仓库。完成最终备份作业。

当前我们支持最小分区(Partition)粒度的全量备份(增量备份有可能在未来版本支持)。如果需要对数据进行定期备份,首先需要在建表时,合理的规划表的分区及分桶,比如按时间进行分区。然后在之后的运行过程中,按照分区粒度进行定期的数据备份。

也可以通过BACKUP这种数据备份方式对数据进行迁移,用户可以先将数据备份到远端仓库,再通过远端仓库将数据恢复到另一个集群,完成数据迁移。因为数据备份是通过快照的形式完成的,所以,在备份作业的快照阶段之后的新的导入数据,是不会备份的。因此,在快照完成后,到恢复作业完成这期间,在原集群上导入的数据,都需要在新集群上同样导入一遍。

建议在迁移完成后,对新旧两个集群并行导入一段时间。完成数据和业务正确性校验后,再将业务迁移到新的集群。

二、BACKUP数据备份语法

BACKUP 语句用户备份指定数据库下的数据,该命令为异步操作,使用BACKUP方式在对某张表或某表分区进行备份时,首先需要创建远端的repository 仓库,仅root或superuser用户可以创建对应仓库,提交命令后,可以通过"SHOW BACKUP"命令查看进度,该备份模式仅支持OLAP类型的表。

BACKUP语法如下:

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

以上语法命令的注意点如下:

  • 同一数据库下只能有一个正在执行的 BACKUP 或 RESTORE 任务。
  • ON 子句中标识需要备份的表和分区。如果不指定分区,则默认备份该表的所有分区
  • EXCLUDE 子句中标识不需要备份的表和分区。备份除了指定的表或分区之外这个数据库中所有表的所有分区数据。
  • PROPERTIES 目前支持以下属性:
    • "type" = "full":表示这是一次全量更新(默认)
    • "timeout" = "3600":任务超时时间,默认为一天。单位秒。

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

http://www.ppmy.cn/news/692777.html

相关文章

python的函数定义要在调用之前吗?

在Python中,函数必须在调用之前定义。如果你试图在定义一个函数之前调用它,Python会抛出一个NameError,告诉你这个函数尚未定义。 例如: # 错误的顺序 my_function() # 这会引发 NameError,因为 my_function 还未定…

装饰器设计模式应⽤-JDK源码⾥⾯的Stream IO流

装饰器设计模式在JDK源码⾥⾯应⽤场景 抽象组件(Component):InputStream 定义装饰⽅法的规范被装饰者(ConcreteComponent) : FileInputStream、ByteArrayInputStream Component的具体实现,也就是我们要装饰的具体对…

vue移动端实现拨号功能(点击手机号就拨号)

vue移动项目中如何设置点击手机号码就可以打电话 1&#xff0c; 在vue项目的index.html中添加如下代码&#xff1a; <meta name"format-detection" content"telephoneyes" />,2&#xff0c;在需要调起手机拨号功能的页面&#xff0c;写如下方法&am…

前端项目设置点击手机号码唤起拨号功能

1.index.html中添加如下代码&#xff1a; <meta name"format-detection" content"telephoneyes" />2.在需要调起手机拨号功能的页面&#xff0c;写如下函数&#xff1a; // 调用拨号功能 callPhone (phoneNumber) {window.location.href tel://…

安卓手机拨号键盘隐藏工程代码大全

安卓手机拨号键盘隐藏工程代码大全*#*#4636#*#* 显示手机信息、电池信息、电池记录、使用统计数据、WiFi 信息 *#*#7780#*#* 或 *#7780# 重设为原厂设定&#xff0c;不会删除预设程序&#xff0c;及 SD 卡档案。 *2767*3855# 重设为原厂设定&#xff0c;会删除 SD 卡所有档案。…

Android 手机拨号

一、直接调用系统拨号界面 1、将用户输入的手机号码&#xff0c;直接显示在拨号盘上 //调用拨打电话界面 Intent intent new Intent(Intent.ACTION_DIAL,Uri.parse("tel:"number)); //number 是手机号码 intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); st…

拨号键输入两组代码,轻松鉴别手机正品还是翻新,技巧让你涨知识

拨号键输入两组代码&#xff0c;轻松鉴别手机正品还是翻新&#xff01;技巧让你涨知识 无论我们是在实体店还是网上购买手机&#xff0c;大家最担心的问题之一就是害怕以新机的价格买到翻新机。那么我们在购买手机的时候&#xff0c;如何才能快速的识别呢&#xff1f;你买的手…

前端H5唤起手机打电话(拨号)和发短信功能

1.拨打电话 2.发送短信 3.移动web页面自动探测电话号码 4.使用wtai协议进行拨打电话 5.关于微信页面出现屏蔽的情况&#xff0c;采用以下解决方案 在移动端页面&#xff0c;有时候我们需要唤起用户手机的打电话功能&#xff0c;拨打客服电话&#xff0c;以及发送短信功能&#…