一文详解数据仓库的物理细粒度备份恢复
本文分享自华为云社区《DTSE Tech Talk | 第43期:数仓数据可靠保证——物理细粒度备份恢复》,作者:华为云社区精选。
大数据时代,数据对企业的重要性不言而喻,如果发生数据丢失或因为误操作而造成数据丢失,将对企业的经营决策带来不可估量的损失。本期《备份恢复全掌握,数仓数据更安全》的主题直播中,我们邀请到华为云EI DTSE技术布道师李文鑫,针对GaussDB(DWS) 物理细粒度备份恢复与开发者和伙伴朋友们展开交流互动。
GaussDB(DWS)的备份恢复工具
为了应对故障场景,防止数据丢失,GaussDB(DWS)提供了两道防线,以保障数仓安全,分别是:高可靠技术和备份恢复技术。高可靠技术是第一道防线,备份恢复技术是最后一道防线。
GaussDB(DWS)的备份恢复工具—Roach,提供了备份、恢复、容灾功能。备份恢复部分包括集群级备份、集群级恢复、物理细粒度备份、物理细粒度恢复、逻辑备份和恢复;容灾部分包括双集群容灾、双集群迁移、细粒度容灾。
为什么需要使用物理细粒度备份恢复?
假设我们误删了一张表,想通过备份将这张表恢复出来,如果我们采用集群级恢复的方式,那么就需要对整个集群的数据进行恢复,这显然不是我们想要的。而如果采用细粒度恢复的方式,我们就可以精确的只将这张表恢复出来。
类似这样的场景有很多,实际使用中集群级的故障并非是一个高概率的事情,我们细粒度恢复一张表或一个schema才是更加实际的需求。
物理细粒度备份恢复优势
节省空间
相比于集群级备份海量的数据备份恢复,物理细粒度备份针对重点文件进行备份,省去了无关数据的备份,节约大量的空间
节约时间
走物理文件拷贝的流程,相对于逻辑备份更加简单高效
精准恢复
恢复想要恢复的数据,无需对整个集群数据进行恢复
▲ 物理细粒度备份恢复支持的功能(正式商用版本8.2.1)
物理细粒度备份恢复的基本流程
由于物理细粒度备份采用了在线恢复的方式,创建了一张新表,那么就需要知道原表的一个表定义,那么在备份的时候就需要将表的定义备份上,这个任务是通过调用GaussDB(DWS) gs_dump工具完成。
确定了表定义就要拷贝表对应的相关文件,比如列存表的cudesc表、存在可变长字段的toast表等,只有把辅助表的信息也记录下来,才能保证恢复之后这张表是可用的,物理细粒度备份采用Map文件对表关系进行组织,对表所有的关联表及文件进行统一收集记录,备份和恢复时根据map文件去做表文件的备份和恢复。
最后就是物理文件的拷贝,Roach对物理文件的拷贝是通过压缩的方式,然后保存在一个rch文件中,并生成fine_file_list文件,记录每个rch文件压缩了哪些物理文件。备份时备份了表定义、表相关文件、表物理文件三个信息之后,我们便可以进行细粒度单表的恢复。
▲ 物理细粒度备份流程
物理细粒度恢复主要是把一张表或多张表恢复到目标集群中,并保证恢复后的表能够正常提供服务。物理细粒度恢复同样采用的是在线恢复的方式,恢复方法的核心思想是在当前的集群中创建出与原表定义完全相同的一张目标表,再把原表和目标表相关的物理文件进行替换。由于替换之后的物理文件保存了旧的事务信息,因此完成数据恢复后需要对目标表进行数据清洗,至此,所有的恢复工作完成。
▲ 物理细粒度恢复流程
物理细粒度备份恢复的使用实践
物理细粒度备份恢复是通过python脚本拉起gs_roach工具,并指定特定的参数是实现的。特有的命令函参数包括:
--physical-fine-grained 【物理细粒度标志参数】 --dbname <数据库名称> 【例如:postgres】 --schema-list <文件名称> 【要备份的schema列表,在指定的文件中每个schema一行】 --clean 【恢复到同名原表时使用该参数清理原表】 --table-list <文件名称> 【要恢复的原表名称,保存在文件中】 --restore-target-list <文件名称> 【要恢复的目标表名称】
物理细粒度备份恢复可基于命令行参数实现,或者从管控面下发备份恢复任务。以命令行下发备份恢复任务如下:
- 物理细粒度备份
- 物理细粒度多表恢复
从管控面下发备份恢复任务需要打开细粒度开关,在指定集群的集群管理界面进行备份恢复任务:
点击链接观看直播完整版回放,了解详细信息。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
必不可少的UI组件一——组件的基础知识
本文由郭凯南同学分享,主要是基于组件库开发的场景,介绍了Vue组件开发的基础知识与优秀实践。 前言 很多同学随着自己前端技能的增长,不满足于常规的业务开发,开始想着做一些自己的技术积累。例如学会了Vue框架的使用以及如何封装组件之后,想要自己试着开发一套组件库引入到项目中,甚至共享给更多的人使用。但是在这个过程中,往往会遇到许多的问题: 组件库工程需要的基础设施该如何搭建,如何实现组件库的构建、提交门禁、测试、文档、发布? 对于复杂一些的组件,我在实现的过程中感觉逻辑越来越混乱,代码越来越难以维护,最终难以持续迭代下去。 有些组件交互复杂,甚至由多个子组件构成(例如Form和 FormItem),它们之间的通信和状态共享如何处理?感觉缺少思路,无从下手。 磨刀不误砍柴工,对于正处于经验积累阶段的前端同学,或许需要先重温一些基础知识,夯实内功,才能更好地实践。 实践Vue组件库的搭建,我们是需要掌握一些前置知识的: 一方面是前端工程化相关内容,它们是组件库的地基、脚手架般重要的存在,是整个组件库工程的基础; 另一方面是Vue组件开发的技巧与优秀实践,它们在实现组件库主体部分时发挥作用,决...
- 下一篇
🖖少年,该升级 Vue3 了!
你好,我是 Kagol。 前言 根据 Vue 官网文档的说明,Vue2 的终止支持时间是 2023 年 12 月 31 日,这意味着从明年开始: Vue2 将不再更新和升级新版本,不再增加新特性,不再修复缺陷 虽然 Vue3 正式版本已经发布快3年了,但据我了解,现在依然还有很多业务在使用 Vue2,迟迟没有升级 Vue3。 为什么要等到 Vue2 彻底停止维护,才考虑升级 Vue3 这个如此重要的问题呢??? 本文是一篇 Vue2 升级 Vue3 的指南,主要包含以下部分: 使用 Vue CLI 搭建 Vue2 工程 使用 ElementUI 搭建表格、表单 使用 OpenTiny Vue 替换一个组件 使用 OpenTiny Vue 替换一个页面 使用 OpenTiny Vue 替换整个应用 使用 gogocode 升级到 Vue3,组件代码无需修改 1 创建 Vue2 项目 先用 Vue CLI 创建一个 Vue2 项目(也可以使用 Vite 配合 @vitejs/plugin-vue2 或 vite-plugin-vue2 插件)。 //安装VueCLI npm install...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- 设置Eclipse缩进为4个空格,增强代码规范
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS关闭SELinux安全模块
- Hadoop3单机部署,实现最简伪集群
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- CentOS7设置SWAP分区,小内存服务器的救世主
- SpringBoot2全家桶,快速入门学习开发网站教程