程序员与数据库的幽默冒险
dz备份数据库

首页 2025-09-02 09:10:19

话说某朝某代,有个小吏姓程名序员,平日唯二的爱好:一是对着黑屏敲咒语,二是幻想自己能在史书里留个脚注。一日,他正在给“龙袍”——也就是那台跑得快、脾气也大的服务器——更衣,忽听“咔哒”一声,龙袍脸色惨白,张口就吐出一串乱码:
“臣……臣的数据库……似要驾崩!”
程序员一听,汗毛倒竖,仿佛听见自己年终奖“滋啦”一声被烤糊。他想起祖上传下的保命秘籍——“dz备份数据库”。此术法据说能令时光倒流,把龙袍的昨日容颜完璧奉还。
可问题来了:秘籍上只写了四个字,连标点都吝啬。程序员抓耳挠腮,只好连夜翻箱倒柜,终于在一只落满灰的U盘里,找到一本《论如何让服务器穿上复活甲》。
第一页写着:备份之前,先焚香三柱——其实是关闭写入,别让数据一边搬家一边长个儿。第二页更玄:要用“mysqldump”这把尚方宝剑,剑诀如下:
mysqldump -u 陛下 -p 龙袍密码 dz论坛 > /御花园/龙袍_$(date +%Y%m%d).sql
程序员照做,只见屏幕飞出一道白光,龙袍的魂魄(也就是.sql文件)稳稳落进御花园,文件名还带着生辰八字,不怕日后认不出亲儿子。
本以为大功告成,龙袍却突然咳嗽两声:“爱卿,朕的画像(附件)还在御书房(data/attachment)里,莫要落下!”程序员一拍脑门,赶紧补上一句:
tar -zcvf /御花园/龙袍画像_$(date +%Y%m%d).tar.gz /var/www/html/data/attachment
至此,龙袍终于眉开眼笑,数据安然,画像无损。程序员擦擦汗,顺手把这两句咒语写进“crontab”,每日寅时自动演练一遍,免得下次再手忙脚乱。
翌日清晨,龙袍精神焕发,数据库里的帖子们排排坐,仿佛什么都没发生过。程序员却多了个习惯:每天先摸摸御花园里的备份,确认它们还在喘气,才肯去泡枸杞茶。
后来,有人问他是如何在一夜之间从“删库跑路”的嫌疑人变成“数据大内总管”的。他笑笑,只留下一句话:
“ dz备份数据库,关键时候能救命,还能保住年终奖。”
——本故事纯属真实,如有雷同,说明你也背过锅。
——————————————————
教程番外:手把手教你“dz备份数据库”——让服务器穿上复活甲
以下步骤以常见的 Linux + MySQL + Discuz! 为例,Windows 用户可类比,把“御花园”换成 D:\Backup 即可。
  1. 焚香更衣(准备环境)
    • 登录服务器,切到 root 或有权限的账号。
    • 创建备份专属目录:
    mkdir -p /backup/dz
    chmod 700 /backup/dz ← 防止隔壁老王偷看
  2. 尚方宝剑出鞘(Dump 数据库)
    • 单句版:
    mysqldump -u 数据库用户名 -p'密码' --databases dz库名 --single-transaction --quick --lock-tables=false > /backup/dz/dz_(date ...):给文件打上时间戳,防止重名。
  3. 打包龙袍画像(附件与程序文件)
    • 把论坛目录整体打包:
    tar -zcvf /backup/dz/www_(date +%Y%m%d_%H%M).tar.gz /var/www/html • 如果附件很大,可单独打包: tar -zcvf /backup/dz/attachment_(date +%Y%m%d_%H%M).tar.gz /var/www/html/data/attachment
  4. 远程金库(可选但强烈建议)
    • rsync 到另一台机器:
    rsync -avz --delete /backup/dz/ backup@backup.example.com:/data/dz/
    • 或者丢到云存储:
    rclone copy /backup/dz/ remote:dz-backup/
  5. 定时演练(crontab)
    • 编辑:crontab -e
    • 每天凌晨 3 点执行:
    0 3 * * * /usr/local/bin/dz_backup.sh
    • dz_backup.sh 示例:
    #!/bin/bash
    mysqldump -u root -p'密码' --databases dz库名 --single-transaction > /backup/dz/dz_(date +%F).sql tar -zcf /backup/dz/www_(date +%F).tar.gz /var/www/html
    find /backup/dz -type f -mtime +7 -delete ← 只留最近 7 天,省硬盘
  6. 事后验尸(恢复测试)
    • 找台测试机:
    mysql -u root -p < dz_2025-09-02.sql
    tar -zxf www_2025-09-02.tar.gz -C /var/www/html
    • 浏览器访问测试地址,确认帖子、头像、表情包都在。
  7. 彩蛋:一键脚本(懒人福利)
    把 2-4 步整合成脚本,加日志:
    LOG=/backup/dz/backup.log
    echo "LOG
    mysqldump ... ] LOG 2>&1 tar ... ] LOG 2>&1
    rclone ... ] LOG 2>&1 echo "(date '+%F %T') 备份完成" ] $LOG
至此,你的服务器就穿上了“复活甲”。哪怕哪天龙袍突然“驾崩”,你也能在两柱香内让它满血复活,顺便保住自己的年终奖和头发。
MySQL连接就这么简单!本地远程、编程语言连接方法一网打尽
还在为MySQL日期计算头疼?这份加一天操作指南能解决90%问题
MySQL日志到底在哪里?Linux/Windows/macOS全平台查找方法在此
MySQL数据库管理工具全景评测:从Workbench到DBeaver的技术选型指南
MySQL密码忘了怎么办?这份重置指南能救急,Windows/Linux/Mac都适用
你的MySQL为什么经常卡死?可能是锁表在作怪!快速排查方法在此
MySQL单表卡爆怎么办?从策略到实战,一文掌握「分表」救命技巧
清空MySQL数据表千万别用错!DELETE和TRUNCATE这个区别可能导致重大事故
你的MySQL中文排序一团糟?记住这几点,轻松实现准确拼音排序!
别再混淆Hive和MySQL了!读懂它们的天壤之别,才算摸到大数据的门道