zoukankan      html  css  js  c++  java
  • 【源码阅读】VictoriaMetrics中理解vmbackup中设置origin地址的用途

    lib/backup/actions/backup.go:

            // 118 行
    	partsToCopy := common.PartsDifference(srcParts, dstParts)   //要上传的文件列表
    	originCopyParts := common.PartsIntersect(originParts, partsToCopy)  // 旧的备份地址中的文件列表,与要上传的文件列表取交集。
            // 交集的文件列表,只要调用对象存储的云端COPY能力就行,这样就节省了带宽,不用浪费再上传一次。
            //  对于云端对象存储而言,同一个文件复制多份,就是增加一个引用计数,而不必真正的产生拷贝。因此对象存储中的大量相同文件并不浪费空间。
    	copySize := getPartsSize(originCopyParts)
    	if len(originCopyParts) > 0 {
    		logger.Infof("server-side copying %d parts from origin %s to dst %s", len(originCopyParts), origin, dst)
    		copiedParts := uint64(0)
    		err = runParallel(concurrency, originCopyParts, func(p common.Part) error {
    			logger.Infof("server-side copying %s from origin %s to dst %s", &p, origin, dst)
                            // 使用 CopyPart 的方法来在云端复制文件
    			if err := dst.CopyPart(origin, p); err != nil {
    				return fmt.Errorf("cannot copy %s from origin %s to dst %s: %w", &p, origin, dst, err)
    			}
    			atomic.AddUint64(&copiedParts, 1)
    			return nil
    		}, func(elapsed time.Duration) {
    			n := atomic.LoadUint64(&copiedParts)
    			logger.Infof("server-side copied %d out of %d parts from origin %s to dst %s in %s", n, len(originCopyParts), origin, dst, elapsed)
    		})
    		if err != nil {
    			return err
    		}
    	}
    

    总结:

    • 每次vmbackup产生的备份,都是一个-retentionPeriod指定的时间长度的完整TSDB数据;
    • 从而,vm体系中并不存在只含有增量数据的分片
      • 例如:按天备份,是那一天倒推30天的数据。
      • 无法单独的增量的备份出某一天的数据
  • 相关阅读:
    学习的过程必须要知其所以然
    根据人类的学习与记忆过程来高效学习
    大脑的信息获取特点与记忆模式
    31个让你变聪明的有效方法
    心智模式:心智模式的更多资料
    心智模式:仁者见仁、智者见智
    心智模式:如何看待成败?
    心智模式:如何面对逆境?
    心智模式:认识你自己
    阿里巴巴JAVA工程师面试经验
  • 原文地址:https://www.cnblogs.com/ahfuzhang/p/15747554.html
Copyright © 2011-2022 走看看