V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
alwayshere
V2EX  ›  程序员

网站内容备份, 7T 大小的文件,怎样时时同步到 4 台 2T 的服务器中?

  •  
  •   alwayshere · 2018-08-07 13:36:35 +08:00 · 4397 次点击
    这是一个创建于 2301 天前的主题,其中的信息可能已经有所发展或是发生改变。

    这两天因为某云的事情吓着了,而且我是三块硬盘做 RAID0 (笑哭脸~),现在准备把网站 7 个 T 大小的文件,想时时同步到 4 台 2T 的服务器中,几十万个文件夹三级嵌套在一个超大文件夹中,路径如 static/123/345/456/blahblah.jpg ,想实现主服务器删除一个文件,备份服务器也马上自动删除该文件,主服务器新增一个文件,备份服务器也马上同步增加该文件,这样即使主服务器挂了,备份服务器可以第一时间被调度冲上前线扛起任务。因为还没有 8T 大小的服务器,只能同步到 4 台 2T 大小的服务器,怎么实现最好?

    zynlp
        1
    zynlp  
       2018-08-07 13:44:42 +08:00 via iPhone
    现在的 7t 数据都在单台服务器上?
    herozhang
        2
    herozhang  
       2018-08-07 13:46:56 +08:00
    按照文件内容结尾对应的十六进制数,均匀的把文件分布到 4 台不同的服务器上。
    第一台:0,1,2,3
    第二台:4,5,6,7
    第三台:8,9,A,B
    第四台:C,D,E,F

    瞎想的
    alwayshere
        3
    alwayshere  
    OP
       2018-08-07 13:46:56 +08:00
    @zynlp 三块硬盘做 RAID0 完全放得下 现在有点后悔了
    rwdy2008
        4
    rwdy2008  
       2018-08-07 13:48:28 +08:00
    你这么大的文件,就算做好了同步机制,怕是也达不到你想要的“马上”的效果啊
    你这个架构可能要调整了
    qcloud
        5
    qcloud  
       2018-08-07 13:49:21 +08:00 via iPhone
    Syncthing
    chinawrj
        6
    chinawrj  
       2018-08-07 13:49:25 +08:00
    @herozhang 的确瞎想,没访问到文件内容怎么知道要去那个服务器访问,还没考虑到文件路径问题
    n2ex2
        7
    n2ex2  
       2018-08-07 13:51:28 +08:00 via Android   ❤️ 1
    这样很可能主备一起挂,就像某云,定期人工检查后做冷备份比较稳。
    7t 的图片好奇是什么图
    kaneg
        8
    kaneg  
       2018-08-07 13:51:45 +08:00 via iPhone
    数据同步用 rsync 可以,可以配置 crontab 每隔一定时间同步。不过实时貌似做不到,只能尽可能缩短间隔,但 rsync 从几 T 的文件中找到差异,也应该要花点时间的。
    iwaifor
        9
    iwaifor  
       2018-08-07 13:55:53 +08:00
    rsync+notify 可以同步增删改
    n2ex2
        10
    n2ex2  
       2018-08-07 13:56:50 +08:00 via Android
    @kaneg 实时其实也可以的,有 lsyncd,会监听文件的变化。
    gamexg
        11
    gamexg  
       2018-08-07 14:01:31 +08:00 via Android
    如上 rsync + notify。
    但是腾讯 3 副本全挂,你这里如果源出错很可能会把错误也同步到备份服务器,和腾讯一样了。
    建议备份服务器上个 zfs 文件系统,开启快照,保证即使同步到错误数据及时发现的话也能回滚快照。
    zfs 我只个人用过 freenas,看起来挺好用。
    aijam
        12
    aijam  
       2018-08-07 14:02:37 +08:00
    上 S3 之类的吧,花点钱一劳永逸。
    3653553
        13
    3653553  
       2018-08-07 14:11:00 +08:00
    我用同步软件备份,一般也就几十个 G,7T 太多,没试过,感觉扫描就很费时间。
    my3157
        14
    my3157  
       2018-08-07 14:23:20 +08:00
    扔到 s3 之类的对象存储上, 价格会稍微贵点, 一个月几百块钱吧
    neoska
        15
    neoska  
       2018-08-07 14:40:39 +08:00
    rsync 把
    先在 123 这一层统计下数据大小,然后按文件夹大小分配到几台机子,
    分别设置 rsync,rsync 默认你在主删了以后从不会删,除非你加特定的选项要求删除。
    另外有个特别想说的就是:3 块直接做 raid0 真的心大。。。。如果是我至少做个 raid5 加至少 1 块备。。
    lygmqkl
        16
    lygmqkl  
       2018-08-07 14:51:33 +08:00
    7t 的图片 我想说 就算同步了。。。也没啥意义了。。。
    ryd994
        17
    ryd994  
       2018-08-07 15:24:42 +08:00 via Android
    iSCSI+zfs
    不要低估内网性能
    swulling
        18
    swulling  
       2018-08-07 15:30:22 +08:00 via iPhone
    备份不要陷入误区,一定要实现百分百的可恢复。

    其实只能恢复比如说 99%,总比全丢了强吧。RAID0 太大胆了,你先用 rsync 先备份着,恢复不实时总比都丢了好吧。
    swulling
        19
    swulling  
       2018-08-07 15:31:53 +08:00 via iPhone
    备份这件事情,再有缺陷的解决方案,也比不备份强。

    我见过好几个因为没有一个完美的备份方案或者一直在开发这个完美备份方案,导致连基本的冷备都没有,最终吃亏的案例…
    ladypxy
        20
    ladypxy  
       2018-08-07 15:49:36 +08:00
    实时同步的意义是啥?
    我现在服务器全是 freebsd+zfs,每几分钟生成一个快照,直接把快照通过网络发送到另外的机器上。然后本机快照保留 7 天,远程机器快照保留 90 天。这样哪怕出问题,丢失的也是快照之间的数据
    huangzxx
        21
    huangzxx  
       2018-08-07 15:53:08 +08:00
    试试 lsync 可以满足你功能,但性能得测一下。
    用最新版本: https://github.com/axkibe/lsyncd
    zwy100e72
        22
    zwy100e72  
       2018-08-07 18:13:50 +08:00 via iPhone
    网上一个 YouTube 主播说,企业资料你至少有 3 个独立备份才能保证一定的可靠性,要想保证高可靠性至少要备份 5 份。楼主扩容吧,单台机器扩容到 10T 就好了😅

    如果你当前文件分布还算均匀的话,可以考虑在 2T 的备份服务器上设置 rsync ;不过热数据还是建议分开备份
    likuku
        23
    likuku  
       2018-08-07 21:03:17 +08:00
    这...不是备份啊,兄弟。

    你这只算是增加了一个备用节点,根本不算是“备份”。
    likuku
        24
    likuku  
       2018-08-07 21:09:59 +08:00
    实时完全同步这么玩,即便是当作不用上线的”备份“,也是很危险。

    在线机器误操作删除了呢?所谓 备份机 也同步删除了,你怎么办?

    在一定周期内给独立备份只增不删,这样你才更有机会找回你意外丢失的数据,定期清理陈旧备份(合理备份策略:比如备份机上每天一个增量快照 /版本,保留最近 7 天的每日备份,7 天以上,30 天以内的,保留每周日的备份,30 天以上,180 天以内,保留每月第一个周日的备份)
    likuku
        25
    likuku  
       2018-08-07 21:11:16 +08:00
    “三块硬盘做 RAID0 ” ... 很罕见的自杀行为...
    ndd200
        26
    ndd200  
       2018-08-07 21:32:30 +08:00
    硬要做实时,开销可能比较大,实现也麻烦,24 楼的想法其实挺好的。
    如果不考虑费用,可以同时往阿里 /腾讯的云存储丢一份,我记得他们有一种存储方案是低访问模式(具体名称记不清了,只存不取费用便宜),两家同时挂掉怕是要互联网地震了。
    opengps
        27
    opengps  
       2018-08-07 22:14:12 +08:00 via Android   ❤️ 2
    raid0 存在的目的:
    1,拼凑最大存储量
    2,大块读写速度提升
    3,让不做备份的后悔到死
    tetsai
        28
    tetsai  
       2018-08-07 22:31:36 +08:00
    服务器删除,备份也删除,这个做法并不是很好,删除后应该继续转移到冷备份服务器保留 XX 份
    wangking
        29
    wangking  
       2018-08-07 22:40:56 +08:00
    @my3157 s3 貌似存储不要钱,流量要钱吧
    my3157
        30
    my3157  
       2018-08-08 01:05:15 +08:00
    @wangking #29 收费的, 对象存储一般上传流量不收费, 下载和存储都收费,
    bryant183
        31
    bryant183  
       2018-08-08 06:28:54 +08:00 via Android
    楼主网站是“王”网? 2333
    msg7086
        32
    msg7086  
       2018-08-08 07:58:13 +08:00
    1. 随时同步不算备份,算冗余。请另外做备份方案。
    2. 多台服务器合并空间可以考虑 GlusterFS 之类的方案。
    aiseo
        33
    aiseo  
       2018-08-08 08:48:55 +08:00
    我是定期备份回本地群晖,同时备份到其他机房
    群晖是 raid5+本版资源管理,本地定期冷备
    realpg
        34
    realpg  
       2018-08-08 08:50:05 +08:00
    RAID0 看哭了……
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2781 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 07:28 · PVG 15:28 · LAX 23:28 · JFK 02:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.