V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要把任何和邀请码有关的内容发到 NAS 节点。

邀请码相关的内容请使用 /go/in 节点。

如果没有发送到 /go/in,那么会被移动到 /go/pointless 同时账号会被降权。如果持续触发这样的移动,会导致账号被禁用。
zhengfan2016
V2EX  ›  NAS

2025 年 nas 用户 docker 的 mysql 和 postgresql 有没有比较好的免费生产级备份方案

  •  
  •   zhengfan2016 · 5 天前 · 2097 次点击

    如题,目前我做的有全盘 raid1 ,每日凌晨对整个 docker data 目录做全量快照。

    虽然有 data 目录全量快照,但是能不能恢复还得看运气(快照的时候没对 sql 的容器 stop ,有概率回滚失败)

    不知道有没有什么更好的更优雅的备份方案

    (要是能像阿里云 rds 一样分钟或者小时级别回滚,有易用的 webui 就更好了🐶)

    24 条回复    2025-04-08 20:27:06 +08:00
    huangpeng0v0
        1
    huangpeng0v0  
       5 天前 via Android
    MySQL 部分,
    1.逻辑备份 采用 mysqldump+cron
    2.物理备份 percon 的 PXB 和 PTK 有校验/备份/恢复全套工具,拿来即用,
    另外阿里还有个 channel 的开源项目,也很实用 ,利用 MySQL 主从复制热备
    huangpeng0v0
        2
    huangpeng0v0  
       5 天前 via Android
    MySQL 部分,
    1.逻辑备份 采用 mysqldump+cron
    2.物理备份 percona 的 PXB 和 PTK 有校验/备份/恢复全套工具,拿来即用,
    另外阿里还有个 canal 的开源项目,也很实用 ,利用 MySQL 主从复制热备 https://github.com/alibaba/canal
    ps:忽略第一条回复,手机码错字,项目太久没用名字也记错了
    ysicing
        3
    ysicing  
       5 天前
    我用 restic 备份的
    zhucegeqiu
        4
    zhucegeqiu  
       5 天前
    我都是 docker stop 了再 rsync
    rekulas
        5
    rekulas  
       5 天前
    可以加上主从增量备份
    canal 我之前也用过,但是感觉比较麻烦,运维上需要投入一些时间,推荐试试 dbsyncer ,成都的一家公司开发的,很稳,我用来同步数据到国外基本都没断过
    cnlaok999
        6
    cnlaok999  
       5 天前 via iPhone
    kopia
    traffic
        7
    traffic  
       5 天前
    不建议在容器内跑有状态应用,特别是数据库
    wfhtqp
        8
    wfhtqp  
       5 天前
    borgmatic 定时 加 云盘同步
    superchijinpeng
        9
    superchijinpeng  
       5 天前
    kopia
    89ao
        10
    89ao  
       5 天前
    生产级的备份,首先要定义的就是服务水平和成本,再谈方案。
    所以你要先明确,你的数据库能承受什么级别的损失,宕机能否接受?数据需要实时备份还是小时级别,还是天级别的备份?
    有了这两个答案方案就简单了
    superchijinpeng
        11
    superchijinpeng  
       5 天前
    @traffic 哥们 2025 年了,政府的 DB 大部分都跑在 K8S 上了
    vczyh
        12
    vczyh  
       5 天前
    每天 XtraBackup 全量备份一次,每小时备份一次 Binlog ,这样可以通过 1 个物理备份+N 个 Binlog 实现任意时间点恢复
    zhengfan2016
        13
    zhengfan2016  
    OP
       5 天前
    @89ao 损失我当然是希望越小越好,首先,能从灾难中恢复,其次,备份空间占用尽可能小,不要停止容器备份,也不要加全局锁,粒度尽可能细能够分库回滚,最后尽量损失的时间粒度越小越好
    JerryYuan
        14
    JerryYuan  
       5 天前 via Android
    @traffic 如果 docker 中不推荐跑有状态的数据库,那对于家庭 homelab server 场景的话,应该跑在哪里么?另开虚拟机裸机跑 mysql 吗😂
    shiny
        15
    shiny  
       5 天前
    WAL-G ,秒级的回滚。实测 PostgreSQL 里运作很好,MySQL 增量备份不太好使
    victimsss
        16
    victimsss  
       5 天前
    https://www.v2ex.com/t/1054000#reply25
    我之前写过 pg 的,要简单快捷就 docker exec 进去然后执行 dump 命令进行备份就行了,然后直接 docker cp 拷出来,将 脚本加到 cron 就行了。
    star7th
        17
    star7th  
       5 天前
    做全盘的备份就好。确保能恢复备份。上层的应用就不需要额外备份了。
    至于说 有概率回滚失败。那就是备份问题了。备份无法恢复,那就想办法临时停止容器再备份。
    zoharSoul
        18
    zoharSoul  
       5 天前
    同求
    想知道可以自建秒级恢复吗
    dcalsky
        19
    dcalsky  
       5 天前
    推荐我刚刚出炉的: https://github.com/dcalsky/postgres-backup-r2
    自动备份 docker pg 到 cloudflare r2 ,完全免费
    yihy8023
        20
    yihy8023  
       5 天前
    我在 lxc 容器部署了 pg 和 mysql ,然后每天 pve 会对磁盘快照备份。
    ExplodingFKL
        21
    ExplodingFKL  
       4 天前
    > 我在 lxc 容器部署了 pg 和 mysql ,然后每天 pve 会对磁盘快照备份。

    @yihy8023 #20 这种通过拍摄磁盘快照的方式备份有概率丢失数据或者导致数据库损坏 (pve lxc 是不会备份内存数据的)
    cat1879
        22
    cat1879  
       4 天前
    @traffic 你都是网上看所谓大佬说的吧。实际上都是容器持久化来运行这些玩意呀
    89ao
        23
    89ao  
       4 天前
    @zhengfan2016 那很明确了
    首先你能接受宕机,就不需要高可用
    然后你要不停机备份,就走 mysqldump
    备份空间小,就要增量备份

    找这几个方案就行了,最后备份出来的数据遵守 3+2+1 ,或者干脆 2 副本就行了
    chinni
        24
    chinni  
       4 天前
    正常备份出来的脚本文件 restic(rustic), borgbackup, kopia 三选一。
    好用的很
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   962 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 19:49 · PVG 03:49 · LAX 12:49 · JFK 15:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.