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

数据库备份问题

  •  
  •   AboPlus 2023-12-22 17:27:40 +08:00 1974 次点击
    这是一个创建于 658 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前使用的有 MySql 、MongoDB 、Redis Mysql 和 Mongo 主要是存放业务数据使用,Redis 是作为一个中间缓存数据库使用 现在问题就是线上用户很少,但是有位同事不小心把测试环境的库干没了,领导很生气很重视这件事情,之前线上也一直没有上数据备份,现在准备把数据备份加上,想请教一下各位老哥,这几种数据库的数据备份大概需要做到哪种程度?需要一步到位还是一点一点来比较好

    P:目前目前开发的软件和系统确实有点玩具的意思在,完全不抗造,只能尽量想到哪些去做哪些了...

    19 条回复    2023-12-27 17:25:53 +08:00
    AboPlus
        1
    AboPlus  
    OP
       2023-12-22 17:29:31 +08:00
    备份各位大佬有什么比较主流的或者说比较抗造的方案没
    albertqcy
        2
    albertqcy  
       2023-12-22 17:32:48 +08:00   1
    最简单高效的备份,直接定时调度加数据库导出命令加 ftp 就行了
    AboPlus
        3
    AboPlus  
    OP
       2023-12-22 17:37:35 +08:00
    @albertqcy 有做热备份的必要性吗
    vopsoft
        4
    vopsoft  
       2023-12-22 17:44:07 +08:00   1
    我们线上 mysql 是 5 台+2 台存储 ,其中 3 台做 mha ,1 台延迟库,1 台查询和备份导出
    每天全量备份到存储再同步到另一台存储
    RightHand
        5
    RightHand  
       2023-12-22 17:46:00 +08:00 via Android   1
    SQLite 文件 copy ,无敌
    BQsummer
        6
    BQsummer  
       2023-12-22 18:07:50 +08:00   1
    一般是每天晚上做全量备份, 出现事故需要恢复就拿昨天的全量然后回放当天 binlog
    Maboroshii
        7
    Maboroshii  
       2023-12-22 18:11:38 +08:00 via Android   1
    上云,自动备份。
    另 binlog 这一套,恢复起来好像挺麻烦的,而且你恢复时要保证你的 mongo 和 mysql 数据的一致性,好像也挺难。
    但总归可以自动备份,还原也方便。
    AboPlus
        8
    AboPlus  
    OP
       2023-12-22 18:20:06 +08:00
    @BQsummer 感觉这个是目前最适合我们的一个方案,毕竟没啥人用
    qiyilai
        9
    qiyilai  
       2023-12-22 18:21:30 +08:00   1
    玩具就要用玩具的方案(手动斜眼):
    30 2 * * * /data/backup/database/mysql_backup.sh
    #mysql 备份 XXX 数据库脚本
    #保留最近 10 天备份
    #备份目录
    backupDir=/data/backup/database
    #mysqlDump
    mysqldump=mysqldump
    #ip
    host=***
    #用户名
    username=***
    #密码
    password=***
    #今天日期
    today=`date +%Y%m%d`
    #十 backupDir=天前的日期
    timeTenDayAgo=`date -d -10day +%Y%m%d`
    #备份的数据库
    database=***

    #如果文件夹不存在则创建
    if [ ! -d $backupDir ];
    then
    mkdir -p $backupDir;
    fi

    echo '开始备份'$database
    docker exec mysql $mysqldump -h$host -u$username -p$password $database | gzip > $backupDir/$database-$today.sql.gz
    echo '成功备份'$database'到'$backupDir/$database-$today.sql.gz
    if [ ! -f "$backupDir/$database-$timeTenDayAgo.sql.gz" ];
    then
    echo '10 天前备份不存在,无需删除'
    else
    rm -f $backupDir/$database-$timeTenDayAgo.sql.gz
    echo '删除 10 天前备份文件'$backupDir/$database-$timeTenDayAgo.sql.gz
    fi
    AboPlus
        10
    AboPlus  
    OP
       2023-12-22 18:22:35 +08:00
    @Maboroshii 中层领导不愿意上云,想让我们自己搞,但是又根据目前的使用规模使用场景觉得好像也不用折腾太复杂(毕竟没人用),准备用上面老哥提的全量备份+binlog 的方式
    nxforce
        11
    nxforce  
       2023-12-22 18:23:40 +08:00   1
    直接每天打个快照完事了。。。
    AboPlus
        12
    AboPlus  
    OP
       2023-12-22 18:26:09 +08:00
    @qiyilai 好像真是目前阶段最合适的一个方案了
    AboPlus
        13
    AboPlus   div class="badges">
    OP
       2023-12-22 18:28:51 +08:00
    @joyhub2140 谢谢佬~
    mylovesaber
        14
    mylovesaber  
       2023-12-22 20:16:27 +08:00   1
    mysql 5.7 系列版本和 mariadb 的数据库我曾写过一个纯 shell 实现的小工具,你只需要往配置文件中按照提示填写必要的参数,然后命令行依次进行:
    1. 检查
    2. 检查没问题就运行
    3. 运行没问题就安装
    数据库就全自动备份了(全量),适合于对 linux 命令行操作没经验的产品类人员
    目前应用在好些省市的政府服务器上生产验证了的
    开源的暂时在 dev 分支,欢迎试用 : -)

    https://github.com/mylovesaber/Tools-Share/tree/dev/shell-tool/other/mysql-backup
    mylovesaber
        15
    mylovesaber  
       2023-12-22 20:18:45 +08:00   1
    14 楼我发的那个工具是 9 楼的功能强化版本,看 9 楼可以简单理解工作原理,实际我这工具支持 root 和非 root 用户,涉密和非涉密系统
    laminux29
        16
    laminux29  
       2023-12-22 22:43:25 +08:00   1
    金融级一致性要求,需要在应用上,进行业务性停机,应用停机完成后,再对数据库进行导出。

    能容忍不超过 24 小时的一致性,那么先准备冗余节点,该节点拥有全量数据,并且全量数据单次导入导出不能超过 24 小时。需要备份时,把冗余节点进行离线,然后从冗余节点导出数据进行备份。操作完成后,冗余节点重新上线,同步最新数据。

    能容忍超过 24 小时的一致性,只需要每晚备份一次,用数据库默认数据导出命令,导出全库即可。
    datocp
        17
    datocp  
       2023-12-23 05:54:13 +08:00 via Android   1
    自己用的 mongodb 竟然因为 tar 释放被覆盖了。。。

    后来就写 shell cron 导出,tar 打包,只留最近的三天备份。备份要做的,不然后果很严重。
    datocp
        18
    datocp  
       2023-12-23 08:41:51 +08:00   1
    #!/bin/sh
    cd /path/bak/wekan
    /path/mongodb/bin/mongodump -h 127.0.0.1:27018 -d wekan1 -o /path/bak/wekan
    #/path/mongodb/bin/mongorestore -h 127.0.0.1:27018 -d wekan1 /path/bak/wekan/wekan
    tar -czvf /path/bak/wekan/wekan$(date +%Y%m%d).tar.gz ./wekan
    now="`date +%s` - 259200" #72hour
    now=`expr $now`
    >/tmp/wekan.date;ls /path/bak/wekan/*.gz -lu| awk '{print $9}'>>/tmp/wekan.date
    for i in $(cat /tmp/wekan.date); do time=`date +%s -r $i`;
    if [ "$time" -lt "$now" ];then echo $i;
    rm -rf $i;
    fi;done
    rm -rf /path/bak/wekan/wekan
    albertqcy
        19
    albertqcy  
       2023-12-27 17:25:53 +08:00
    @AboPlus 热备份其实就是主备嘛
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     3079 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 25ms UTC 11:10 PVG 19:10 LAX 04:10 JFK 07:10
    Do have faith in what you're doing.
    ubao 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