易陆发现互联网技术论坛

 找回密码
 开始注册
查看: 384|回复: 0
收起左侧

seaweedfs备份方式

[复制链接]
发表于 2022-12-8 08:51:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?开始注册

x
那么我们就可以执行如下命令进行备份(注意替换自己的server即master地址和weed执行文件的位置)
! `* i1 y7 b6 {: B4 s5 R% K/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=14 S, O* t2 j" s6 ~
/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=2
! h. W7 a) u7 C  V( ^  J- n... ...
6 r; R( x. X* D5 V! H/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=199
5 j+ V3 S; f6 c3 i8 ^/application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=200
但是我不可能写200行命令,所以可以参考下面我编写的shell命令,来执行备份(注意替换自己的server即master地址和weed执行文件的位置)
$ c) H6 v( O! Q  x0 e7 p4 x  ?; Y#!/bin/bash
6 R1 E) b3 I6 o  v& qfor i in $(seq 1 200)" z& |7 z- U" s6 k8 {8 ^
do
* s4 e$ E# w( O" u+ e# _- e  n /application/seaweedfs/weed backup -server=127.0.0.1:9333 -dir /datahub/test -volumeId=$i; u3 ^3 [8 @. q9 B( d7 ^
done
我们可以看下备份完成之后的备份文件大小【193G】
如果filer使用了store,那么还需要备份下数据库,数据库的备份根据各种数据库类型备份不同,这里就不赘述了。
Async Backup 方式
详情可以通过官方wiki的解决来看下,下面我就我的理解与操作进行演示说明
这里使用的是weed filer.backup的方式进行备份的,这个命令在2.30版本之后才开始有的。
可以通过help查看一下帮助文档
首先我们要通过scaffold获取标准的replication.toml
weed scaffold -config=replication
" v9 U6 F. f, g' Z, M" m6 m% R
现在次备份支持两种模式,一种是与filer同目录的,增量备份,一种是修改的单独文件夹。看下官方的说明。
我这里使用的增量模式,也就是第一种,所以配置is_incremental为true,部分有效代码如下
[source.filer]* D) U& k" ^8 B! q4 n' E- @
enabled = true
( Y  ]9 G4 ]6 ?* c4 kgrpcAddress = "localhost:18888"
( R* q4 ^6 f; O, @# all files under this directory tree are replicated.
5 I2 S# V& e( k' G* |1 d+ H# this is not a directory on your hard drive, but on your filer.
" v6 i) T1 ~* o# A# i.e., all files with this "prefix" are sent to notification message queue.0 d# X& g. \; A  i/ p9 y* \
directory = "/buckets"
7 [' k5 g  o2 J. n[sink.local]+ S' `1 U$ i8 P2 k" k7 R/ K$ b# ?$ }
enabled = true
; L4 O9 r4 w7 z( K) y; Vdirectory = "/backup/cdn_backup"
' f- \1 W! O. ?- a, ?" J# all replicated files are under modified time as yyyy-mm-dd directories7 h' ]5 p7 n+ q5 H  l. _2 }
# so each date directory contains all new and updated files.
2 I+ ?) P" P/ A- h1 z8 n6 Tis_incremental = true
) W0 a; ]$ g2 j0 c8 u4 t
配置文件中的source.filer中虽然已经配置了directory,但也可以在执行命令的时候进行配置,如下所示
PS:这里我执行是在与replication.toml同文件夹下进行执行的,你可以可以根据seaweedfs的官方说明,放到指定的位置./replication.toml、$HOME/.seaweedfs/replication.toml、/etc/seaweedfs/replication.toml。5 m9 G* ~7 A9 ~4 O% V0 S
./weed filer.backup --filerPath /buckets/img1
此命令是连续的,也就是实时监控变化,如果你不自动终止,他会一直运行(可以做成service)
此备份方法是备份的源文件,所以不需要备份数据库。
我们看下备份之后的文件夹大下【44G】
两种差异分析
Data backup的方式比Async backup的方式数据差额很大,当前我的测试数据相差【149G】,对于我来说这些空间已经很奢侈了。
但是我们可以增加一个参数查看下占用的空间
可以看到有好多是31G的,但是我们实际的使用并没有达到这个值,原因是因为在启动master的时候,我们默认了volumePreallocate,这个参数会预分配空间,所以致使如此的结果。
那如果我把Data Backup的备份文件使用ZIP普通压缩下(大文件的压缩,数据量小,层级少,一般情况下压缩比较快),可以看到文件的大小是【13G】,这比源文件备份是要小很多的。(当然源文件备份对于删除的在备份的文件下是不会删除的,但是我当前的测试是没有删除的文件的)
那既然这样,我们再把Aysnc backup的结果再压缩下(小文件的压缩,数据量大,层级多,一般情况下压缩比较慢),保证其对比基础是一样的。
从下图可以看到,经过漫长的压缩之后,体积依旧还是【44G】
归纳总结
从上面分析可以看出,第一种方式的压缩之后的占用还是比较小的,而且压缩速度也非常的快,在这之前也可以使用master的volumePreallocate配置不预留空间,这样备份的文件也是小的,压缩之后的文件也是小的。
这种方式需要备份数据库,并且如果要还原的话,需要有相同的环境,包括weed的运行环境以及相关的配置文件及配置文件依赖的各种key。
第二种方法是把所有的文件都存储到本地,即使后续没有weed的环境,也可以查询到相关的文件,但是因为文件的数量比较多,所以备份的速度非常慢,后续越多越慢。
但是第二种可以用增量的方式进行备份,即第一次的时候比较慢,但后续可以通过只备份压缩增量的减少压缩的时间。
) y  h. W. n, O9 u& N5 Y
您需要登录后才可以回帖 登录 | 开始注册

本版积分规则

关闭

站长推荐上一条 /4 下一条

北京云银创陇科技有限公司以云计算运维,代码开发

QQ|返回首页|Archiver|小黑屋|易陆发现技术论坛 ( 蜀ICP备2026014127号-1 )点击这里给我发消息

GMT+8, 2026-4-8 21:37 , Processed in 0.041734 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

© 2012-2025 Discuz! Team.

快速回复 返回顶部 返回列表