在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"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <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/> <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
每次备份后做一次最小化验证
自动化不等于可信,加一行简单校验防静默失败:
- 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(可能锁文件或冲突)
不复杂但容易忽略。


















