00:01
那我们在使用包瑞的过程中啊,肯定还涉及到一个安全问题,对吧,数据安全问题,我们要对它做一个备份,对吧,还有一个恢复,怎么从备份去恢复啊,那这个是肯定要考虑到的,那除此之外,其实我们也可以依赖于这个功能实现多个集群之间的。数据迁移。啊,多个集群之间迁移啊,比如说我有一个Doris集群A啊,有个Doris集群B啊,那比如说我可以将备份数据。呃,备份到HDFS。然后呢,我另外一个集群B从HDFS的备份去恢复,那这样其实就相当于说实现了一个数据迁移的功能啊,这或者说你要升版本啊切版本。怎么样的换环境啊都可以,那么这个特别简单啊,我们简单来看一下啊。呃,他的辈份是一个什么样的?
01:01
以文件的形式啊,备份到指定的位置,远端存储系统,那一般就像是HDFS这样的啊,那它呢,是通过备份到过去的啊。之后呢,可以通过恢复的命令去恢复。恢复到任意Doris集群。好,那要注意的是它支持的版本啊,要0.8.2以上。还有这个broker啊,我们是不得之前部署过了。对吧。以hdfs broke的方式啊,前面也导入导出的时候我们都都试过了啊。那简单了解一个原理,首先是备份呢,我们看它怎么实现呢。呃,他其实是。要做快照和快照上传啊。那也就是说,当我真正的数据。
02:03
啊,做一个快照,然后呢上传。上传到HDFS。那数据谁管呢?那不就be管吗?那所以这个过程是由be来完成,那除了数据本身,我们是不是还有表结构等等信息啊这些原数据,哎,所以还要干嘛呢?它还会对fe上面的原数据啊,也会写成一个本地文件,在之后呢,通过broker上传到仓呃远端仓库。对吧,也就be也好也好,都要做一个快照啊,快照完之后都要去上传。上传,比如说上传大学DFS。啊,这个原理是特别简单啊,那恢复呢,其实恢复差不多啊,那恢复呢,首先它会将比如说HDFS。啊,这是我们DOS集群,它会先将呃原数据下载下来对吧?原数据呢,然后根据这个原数据做一个恢复操作,恢复出它对应的表,还有分区等等等等这些啊,这时候表是可见的啊,你可以看到这张表,但是你查不了这张表啊,因为还没完成恢复还没完,这只是原数据啊,其次呢,它会中间做一个过程叫本地快照。
03:16
在Doris,呃,恢复完原数据之后,它会对这张表做一个空快照,这个时候只有表结构啊,这样的目的是为了让be产生原数据对应的一些快照目录啊。那所以第三步呢,就是下载快照下载到哪里呢?啊,有下载到be这边是相当于说把真正的数据拉过来啊,那就可以了。在最后一步呢?它会重新加载这些快照啊,当他将各个快照映射为当前本地表的数据,让它生效啊,这个时候恢复作业完成,那就。都完事了啊,可以用啊,那使用过程中有几点要注意啊啊备份最小的力度,我能不能说我按照table net进行备份呢?我只备份一个文呃,数据分辨啊,不可以,最小的力度是什么分区。
04:12
啊,最少是按照分区的力度,要么你就整张表备份,要么你就指定分区去备份啊。那未来可能会支持一个增量备份啊,现在还不行,现在是一个全量快照。所以我们在分区分总的时候,前面讲到的啊,你要合理去规划好。那第二一个呢,我们可以依赖这个功能实现一个什么?呃,不同DOS集群之间的数据迁移。另外要注意的是,由于它是全量对吧,而且呢,比如说我这是集群A的一张表,我在某个时刻对它做一个备份,那么备份完之后,A表比如说新插入了几条数据。
05:01
那你再恢复到B集群这个新插入的数据它是没有啊啊,所以建议这个时候呢。在原集原集群上在备份后导入的数据,你在新集群上再导入一遍啊。啊,要考虑全一点,考虑周全一点。那建议我们迁移完成之后啊,这个并行导入再持续一段时间。为什么呢?留点时间做一个校验对数啊,确保完全没问题之后啊,再把真正的业务迁过来啊,不要太着急,立马就过来,对吧。另外有几个注意事项,呃,备份恢复呢,这种操作只允许什么有管理员权限的用户执行,比如说root用户。另外呢,在一个数据库里,里面能不能并发备份呢?不允许啊,只允许有一个在执行。要么正在备份,要么正在恢复啊,你不可能有多个备份任务或者多个恢复作业不可以。
06:02
如果数据量大,呃,我们可以按分区去做啊,降低失败同事的代价。另外就是注意有时候执行时间过长是什么原因,有可能是你分片过多啊。或者分片有过多小版本,那这个时候他要处理的呃,时间就比较长了啊,所以即使这个时候你说这张表数量也不大呀,那我对它进行备份或者恢复怎么那么久啊,你要考虑是不是这个问题。另外呢,如果我们通过受命令去查看备份或恢复的任务来发现有一些错误信息。啊,你不要认为是失败,因为它会自动去做一个重试啊,它会重试的,呃,如果真正重试也不行,最终任务失败,它会显示为取消状态啊,所以我们最核心看的是一个state这一列。呃,最后一点呢。如果恢复作业是一次覆盖操作。
07:02
也就是说我这张表是已存在的,然后呢,我用备份数据要去覆盖这张表啊。那这个时候你要注意从恢复作业的提交阶段开始,被覆盖掉的数据怎么样,不能再被还原,因为已经被被覆盖掉了啊,这点是大家要注意的一个小事情。那如果恢复作业,比如说覆盖的场景恢复作业又失败。那可能。比如说我最早数据是123,那我备份的数据是456。那我通过恢复的方式覆盖,我们是不是要实现123被覆盖成456这个备份的数据,对吧?啊,那比如说我,呃恢复一半失败了,那可能123这些数据本来就已经没了,那这边只有一个四啊出现这个场景,也就是说最原始的数据也是没有了啊。那如果失败呢,也很简单,我们再重新执行一次恢复,那还是可以将数据导进来,因为它也是一个覆盖操作啊。
08:02
都是最最简单的一些说明。
我来说两句