在macos开发环境中配置数据库备份,关键在于按数据库类型选工具:postgresql用pg_dump+cron或launchd,启用wal归档;mysql用automysqlbackup;sqlite直接复制.db文件;统一用shell脚本封装、launchd调度、本地隔离路径备份,并每次校验有效性。
在 macos 上配置适用于开发环境的数据库备份工具,关键不是堆砌功能,而是选对工具、配好路径、确保可恢复。开发阶段数据变动频繁、结构常迭代,备份需轻量、可验证、易还原,不追求企业级高可用,但必须可靠。
明确数据库类型再选工具
不同数据库的备份逻辑差异大,不能一套脚本通吃:
-
PostgreSQL:优先用
pg_dump+ cron,配合 WAL 归档(如需时间点恢复) -
MySQL / MariaDB:推荐
AutoMySQLBackup,支持日/周/月分层归档,自带压缩与清理 -
SQLite:直接复制
.db文件即可,用rsync或cp定时同步到备份目录
用 shell 脚本统一管理备份逻辑
无论哪种数据库,都建议封装为可读、可调试的脚本,例如:
#!/bin/bash # backup-dev-db.sh BACKUP_DIR="$HOME/backups/db/$(date +%Y%m%d)" mkdir -p "$BACKUP_DIR" # PostgreSQL 示例(替换 your_db、your_user、your_pass) PGPASSWORD="dev123" pg_dump -h localhost -U your_user -F c -v -f "$BACKUP_DIR/pg_dev_$(date +%H%M).dump" your_db # MySQL 示例(需提前配置 .my.cnf 避免密码明文) mysqldump --defaults-file="$HOME/.my.cnf" --single-transaction your_dev_db > "$BACKUP_DIR/mysql_dev_$(date +%H%M).sql" # 压缩并保留最近7天 find "$HOME/backups/db" -type d -mtime +7 -delete
赋予执行权限:chmod +x ~/backup-dev-db.sh
测试运行:./backup-dev-db.sh
用 launchd 替代 cron 实现更稳的定时调度
macOS 推荐用 launchd(比 cron 更兼容系统休眠、用户登录状态):
-
创建
~/Library/LaunchAgents/com.dev.dbbackup.plist:<?xml version="1.0" encoding="UTF-8"?><plist version="1.0"><dict><key>Label</key><string>com.dev.dbbackup</string><key>ProgramArguments</key><array><string>/Users/yourname/backup-dev-db.sh</string></array><key>StartCalendarInterval</key><dict><key>Hour</key><integer>2</integer><key>Minute</key><integer>30</integer></dict><key>RunAtLoad</key><true></true><key>StandardOutPath</key><string>/Users/yourname/logs/dbbackup.log</string><key>StandardErrorPath</key><string>/Users/yourname/logs/dbbackup.err</string></dict></plist>
加载任务:
launchctl load ~/Library/LaunchAgents/com.dev.dbbackup.plistlaunchctl start com.dev.dbbackup
macOS Automator Services下载部署和使用军舰的 macOS Automator 自动化服务集合。包含 5 个实用工作流:PDF转JPG、PNG重命名并转JPG、图像拼接、解压RAR、顺序命名图像文件。一键安装所有服务到 ~/Library/Services/ 目录。使用场景:(1) "安装我的自动化服务",(2) "部署所有 Automato...
每次备份后做一次最小化验证
自动化不等于可信,加一行简单校验防静默失败:
- PostgreSQL dump:
pg_restore -l "$BACKUP_DIR/pg_dev_*.dump" >/dev/null 2>&1 && echo "✅ Valid dump" - MySQL SQL:
head -n 20 "$BACKUP_DIR/mysql_dev_*.sql" | grep -q "CREATE TABLE" && echo "✅ Contains schema"
把校验结果追加进日志,出问题立刻可见。
备份目标路径建议本地+隔离
- 不要放在
~/Documents或~/Desktop这类易被误删或同步的目录 - 推荐路径:
~/backups/db/(手动创建,不启用iCloud同步) - 如需多机同步,用
rsync推送到另一台 Mac 或 NAS,而非依赖 iCloud 或 Dropbox(可能锁文件或冲突)
不复杂但容易忽略。










