MySQL/PostgreSQL 自动备份:一条命令搞定

zheng头像
zheng 2026-07-25 09:00
楼主

## 数据无价

服务器磁盘会坏,黑客会删库,自己手滑会误删。数据库备份是运维的底线,没有备份的服务器,等于裸奔。

## MySQL 备份脚本

```bash
#!/bin/bash
# mysql_backup.sh

BACKUP_DIR="/backup/mysql"
DATE=$(date +%Y%m%d_%H%M%S)
RETENTION_DAYS=30
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_database"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份数据库
mysqldump -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz

# 删除 30 天前的备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete

echo "Backup completed: ${DB_NAME}_${DATE}.sql.gz"
```

## PostgreSQL 备份

```bash
#!/bin/bash

BACKUP_DIR="/backup/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
DB_NAME="your_database"

mkdir -p $BACKUP_DIR

# pg_dump 不需要交互式输入密码,用 .pgpass 文件或环境变量
export PGPASSWORD="your_password"
pg_dump -U postgres $DB_NAME | gzip > $BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz

find $BACKUP_DIR -name "*.sql.gz" -mtime +30 -delete
```

## Docker 中的数据库备份

```bash
# MySQL in Docker
docker exec mysql_container mysqldump -uroot -ppassword db_name | gzip > backup.sql.gz

# PostgreSQL in Docker
docker exec postgres_container pg_dump -U postgres db_name | gzip > backup.sql.gz
```

## 定时执行

```bash
# 每天凌晨 2 点备份
0 2 * * * /scripts/mysql_backup.sh >> /var/log/backup.log 2>&1
```

## 远程备份(同步到另一台服务器)

备份文件只放在本地不够安全,服务器物理损坏了备份也丢了。建议同步到另一台服务器或云存储:

```bash
#!/bin/bash
# 备份后同步到远程服务器
rsync -avz --delete /backup/mysql/ user@remote-server:/backup/mysql/

# 或上传到对象存储
rclone sync /backup/mysql/ s3:my-backup-bucket/mysql/
```

## 备份恢复验证

备份文件不是存了就行,要定期验证能不能恢复:

```bash
# 创建一个测试数据库
mysql -u root -p -e "CREATE DATABASE test_restore;"
# 恢复最近的备份
zcat /backup/mysql/db_20260722_020000.sql.gz | mysql -u root -p test_restore
# 检查表数量是否一致
mysql -u root -p -e "SELECT COUNT(*) FROM information_schema.tables WHERE table_schema='test_restore';"
# 验证完删除测试库
mysql -u root -p -e "DROP DATABASE test_restore;"
```

建议每周自动执行一次恢复验证,确认备份文件可用。

## 备份 3-2-1 原则

- **3** 份备份:1 份原始数据 + 2 份备份
- **2** 种介质:本地磁盘 + 远程/云端
- **1** 份异地:至少 1 份备份在不同物理位置

花 10 分钟配置好备份,可以节省未来 10 个小时的灾难恢复时间。

雷电模拟器9.0 v9.5.30 去广告纯净版 免费智能扫描王 v1.1.7 免费扫描工具

最新回复

暂无回复,来说两句吧

发表评论

站点总访问量:6263