问一下大家的数据库备份方法 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
victimsss
V2EX    数据库

问一下大家的数据库备份方法

  •  
  •   victimsss 2024-07-01 16:54:27 +08:00 2821 次点击
    这是一个创建于 471 天前的主题,其中的信息可能已经有所发展或是发生改变。
    先说现状,目前有不同区域的服务器,深圳韩国德国等,涉及到的数据库都是 mysql 和 postgre ,数据库有 容器和二进制运行的(感觉无所谓)。
    目前想在后台(容器)加一个数据库备份(主动/定时, 开关)的功能,一开始想的是使用 Cron (定时) + 子进程 xx_dump (自带脚本)+ oss ( watch 相关目录,创建则上传到 oss 上)。
    现在有一个问题是,后台服务是容器,且后台所处的服务器上的数据库也是容器,现在如何执行 xx_dump 呢,或者有其他方法吗?
    25 条回复    2024-07-02 16:01:27 +08:00
    tool2dx
        1
    tool2dx  
       2024-07-01 16:55:42 +08:00
    我们用的是 mysql ,每天凌晨三点,网络异地备份当天的差异化数据。
    buyerhou
        2
    buyerhou  
       2024-07-01 17:26:16 +08:00
    使用 otter 开源的阿里云 mysql 数据库备份服务,可以实时备份。
    rekulas
        3
    rekulas  
       2024-07-01 17:39:47 +08:00
    dump 跟你容器没啥关系吧,只要数据库正常提供服务就可以备份,支持远程主机,不过考虑速度和网络稳定性,最好在内网备份
    GoRoad
        4
    GoRoad  
       2024-07-01 17:47:46 +08:00
    容器也可以 dump 啊,这无所谓的,无非多一条从容器内拷贝出来的命令
    victimsss
        5
    victimsss  
    OP
       2024-07-01 17:50:08 +08:00
    @rekulas 因为我要在后台程序(容器)里面执行 dump ,执行不了, 而且 dump 工具本身也在另一个容器里面,大概是这样。如果继续之前的思路,我要的是在后台程序里面执行 docker exec 进入带有 dump 的容器,再在里面创建 .pgpass ,然后再去备份自己和其他服务器上的数据库。
    Rollie
        6
    Rollie  
       2024-07-01 17:58:14 +08:00
    心情好的时候,导出一下 SQL 文件然后再备份一下服务端。存储到数据盘里~嘿嘿。
    guanzhangzhang
        7
    guanzhangzhang  
       2024-07-01 18:36:33 +08:00
    看它是走 tcp 还是 data-dir 还是 sock 文件去操作的
    IvanLi127
        8
    IvanLi127  
       2024-07-01 19:08:25 +08:00
    子进程里写个脚本,脚本里直接 ssh 连宿主机,然后再根据条件去备份?如果能 ssh ,我感觉这种方法比较独立且灵活
    kingchy
        9
    kingchy  
       2024-07-01 19:11:12 +08:00 via iPad
    我使用的 pg ,最后通过 tailscale 内网,将服务器上的数据 replicate 一份到家里完事。正好家里那份用来做数据分析,不影响服务器性能,完美
    yeqizhang
        10
    yeqizhang  
       2024-07-01 19:37:43 +08:00 via Android
    @GoRoad 挂载个目录,也不用拷贝
    zx900930
        11
    zx900930  
       2024-07-01 19:46:48 +08:00
    k8s
    mysql 集群
    percona-xtrabackup 每天定时备份到 minio 的桶里
    要还原直接 xtrabackup --prepare 很方便。

    一个好的 operator 帮你解决大部分运维的问题。
    photon006
        12
    photon006  
       2024-07-01 20:14:24 +08:00
    我司数据库也是 docker 跑,但备份不跟它打交道,宿主机 pve 添加网络磁盘,直接备份 vm 整机,通过 smb 传到局域网 nas ,就跟腾讯云、阿里云备份数据卷一样,但成本低很多。
    shiny
        13
    shiny  
       2024-07-01 20:20:42 +08:00
    https://github.com/wal-g/wal-g 用的这个,能同步到 S3 ,postgres 能接近实时备份
    同时云服务器再开个自动快照策略,保留 7 -30 天的备份
    laminux29
        14
    laminux29  
       2024-07-01 20:38:30 +08:00
    1.让开发或熟悉业务的 DBA ,先写个把数据库的数据,全部导出的脚本。把该脚本放入 crontab 定期执行,执行后把结果写日志。运维工具,实时监控日志,如果日志中发现 Error 、fail 、timeout 等字符,就告警。这种备份方式,只是用来兜底的,出故障后,运维千万不要直接用这种方式得到的备份,进行恢复。如果只剩下这种备份了,交给开发去恢复。

    2.把数据库做成多节点(多副本节点),形成一个 HA 集群,单个节点故障后,Client 自动访问别的节点,类似于 Oracle RAC 的工作模式。这种模式,单节点故障后,不需要开发介入,运维可以直接进行替换故障节点,类似于 raid 磁盘故障时的操作。银行级别的数据库,也是需要使用这种结构的。
    MRlaopeng
        15
    MRlaopeng  
       2024-07-01 21:34:47 +08:00
    @tool2dx 请问大佬,怎么备份差异数据呢
    e2k
        16
    e2k  
       2024-07-02 09:05:26 +08:00
    @tool2dx #1 请问大佬,怎么备份差异数据呢
    tool2dx
        17
    tool2dx  
       2024-07-02 09:09:09 +08:00
    @MRlaopeng
    @e2k

    就是 mysql 增量备份,网上搜一下一大堆。

    我情况比较特殊,数据库里每条记录都有最后修改日期,查询一下当天所有被修改过的记录,通过普通 sql 查询来备份的。
    cslive
        18
    cslive  
       2024-07-02 09:16:22 +08:00
    不是很简单吗,容器里安装 client,然受执行 pg_dump -h ip 这种命令就可以将不同容器里的数据库数据备份出来,如果你的网不好那就慢了
    vueli
        19
    vueli  
       2024-07-02 09:16:50 +08:00
    我比较菜,宝塔每天定时把数据库和站点页面打包备份,并且也备份到七牛
    GoRoad
        20
    GoRoad  
       2024-07-02 09:30:05 +08:00
    @yeqizhang 那也行 哈哈哈 挂载出来
    leon0903
        21
    leon0903  
       2024-07-02 13:49:04 +08:00
    我也顺路请教个问题:mysql data 目录整个备份算是备份数据库吗? 拿到这些目录文件可以直接导入到另外一个 mysql 中恢复数据吗?
    victimsss
        22
    victimsss  
    OP
       2024-07-02 14:55:07 +08:00



    已经完成了,说一下思路。
    victimsss
        23
    victimsss  
    OP
       2024-07-02 14:57:32 +08:00
    @guanzhangzhang
    按照这个思路完成了。
    // admin_compose.yaml
    volumes:
    - /var/run/docker.sock:/var/run/docker.sock // 挂载 sock, 使得容器内部可以和 docker 守护进程通信

    https://www.npmjs.com/package/dockerode
    victimsss
        24
    victimsss  
    OP
       2024-07-02 15:51:47 +08:00
    @leon0903 属于,物理备份,优缺点搜一下。
    BeforeTooLate
        25
    BeforeTooLate  
       2024-07-02 16:01:27 +08:00
    @Rollie
    >心情好的时候,导出一下 SQL 文件然后再备份一下服务端。存储到数据盘里~嘿嘿。
    哈哈,侥幸心里使不得,我是吃过一次亏。哈哈
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3327 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 00:38 PVG 08:38 LAX 17:38 JFK 20:38
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86