本文目录导读:

MySQL 自动备份脚本
Linux Shell 脚本
#!/bin/bash
# MySQL 自动备份脚本
# 配置参数
DB_HOST="localhost"
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_database"
BACKUP_DIR="/data/backup/mysql"
RETENTION_DAYS=30
# 创建日期目录
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_PATH="$BACKUP_DIR/$DATE"
# 创建备份目录
mkdir -p $BACKUP_PATH
# 执行备份
mysqldump -h$DB_HOST -u$DB_USER -p$DB_PASS $DB_NAME | gzip > $BACKUP_PATH/database.sql.gz
# 检查备份是否成功
if [ $? -eq 0 ]; then
echo "备份成功: $BACKUP_PATH/database.sql.gz"
else
echo "备份失败"
exit 1
fi
# 删除30天前的备份
find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
# 日志记录
echo "[$(date '+%Y-%m-%d %H:%M:%S')] 备份完成" >> $BACKUP_DIR/backup.log
PostgreSQL 自动备份脚本
#!/bin/bash # PostgreSQL 自动备份脚本 PG_HOST="localhost" PG_USER="postgres" PG_PASSWORD="your_password" PG_DATABASE="your_database" BACKUP_DIR="/data/backup/postgres" # 设置环境变量 export PGPASSWORD=$PG_PASSWORD # 创建备份目录 DATE=$(date +%Y%m%d_%H%M%S) mkdir -p $BACKUP_DIR/$DATE # 执行备份 pg_dump -h $PG_HOST -U $PG_USER $PG_DATABASE | gzip > $BACKUP_DIR/$DATE/database.sql.gz # 清理旧备份(保留7天) find $BACKUP_DIR -type f -name "*.sql.gz" -mtime +7 -delete # 清除密码变量 unset PGPASSWORD
MongoDB 自动备份脚本
#!/bin/bash # MongoDB 自动备份脚本 MONGO_HOST="localhost" MONGO_PORT=27017 MONGO_DB="your_database" BACKUP_DIR="/data/backup/mongodb" # 创建备份目录 DATE=$(date +%Y%m%d_%H%M%S) BACKUP_PATH="$BACKUP_DIR/$DATE" mkdir -p $BACKUP_PATH # 执行备份 mongodump --host $MONGO_HOST --port $MONGO_PORT --db $MONGO_DB --out $BACKUP_PATH # 压缩备份 cd $BACKUP_DIR tar -zcf $DATE.tar.gz $DATE rm -rf $DATE # 清理30天前的备份 find $BACKUP_DIR -type f -name "*.tar.gz" -mtime +30 -delete
使用 crontab 设置定时任务
# 编辑 crontab crontab -e # 添加定时任务(每天凌晨2点执行备份) 0 2 * * * /path/to/backup_script.sh # 或更详细的配置 # 每天凌晨2点备份 0 2 * * * /data/scripts/mysql_backup.sh # 每周日凌晨3点备份 0 3 * * 0 /data/scripts/full_backup.sh # 每小时备份 0 * * * * /data/scripts/hourly_backup.sh
增强版备份脚本(带邮件通知)
#!/bin/bash
# 配置参数
source /etc/backup_config.conf
# 邮件通知函数
send_notification() {
local status=$1
local message=$2
echo "$message" | mail -s "备份状态: $status" $admin_email
}
# 备份函数
backup_database() {
local db_user=$1
local db_pass=$2
local db_name=$3
# 执行备份
mysqldump -u$db_user -p$db_pass $db_name | gzip > $backup_path
if [ $? -eq 0 ]; then
send_notification "成功" "数据库 $db_name 备份成功"
return 0
else
send_notification "失败" "数据库 $db_name 备份失败"
return 1
fi
}
# 备份多个数据库
databases=("db1" "db2" "db3")
for db in "${databases[@]}"; do
backup_database $db_user $db_pass $db
done
# 同步到远程服务器(可选)
rsync -avz $backup_dir/ user@remote_server:/backup/
Windows 批处理脚本
@echo off
:: MySQL 自动备份脚本 (Windows)
:: 配置参数
set DB_USER=root
set DB_PASS=your_password
set DB_NAME=your_database
set BACKUP_DIR=C:\backup\mysql
set MYSQL_PATH=C:\Program Files\MySQL\MySQL Server 8.0\bin
:: 创建日期目录
set DATE=%date:~0,4%%date:~5,2%%date:~8,2%_%time:~0,2%%time:~3,2%%time:~6,2%
set BACKUP_PATH=%BACKUP_DIR%\%DATE%
:: 创建备份目录
if not exist %BACKUP_PATH% mkdir %BACKUP_PATH%
:: 执行备份
"%MYSQL_PATH%\mysqldump" -u%DB_USER% -p%DB_PASS% %DB_NAME% > %BACKUP_PATH%\database.sql
:: 检查结果
if %errorlevel% equ 0 (
echo 备份成功: %BACKUP_PATH%\database.sql
) else (
echo 备份失败
exit /b 1
)
使用建议
- 测试脚本:先手动运行测试
- 设置权限:
chmod +x backup_script.sh - 日志记录:添加详细日志便于排查
- 备份验证:定期验证备份文件完整性
- 异地备份:考虑同步到其他服务器
- 加密备份:敏感数据建议加密
需要我详细解释某个部分或有其他数据库类型的备份需求吗?
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
足球直播
足球直播
足球直播
篮球直播
篮球直播
篮球直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
亚冠直播
亚冠直播
亚冠直播
欧冠直播
欧冠直播
欧冠直播
英超直播
英超直播
英超直播
西甲直播
西甲直播
西甲直播
中超直播
中超直播
中超直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
曼联直播
曼联直播
曼联直播
日职联直播
日职联直播
日职联直播
澳超直播
澳超直播
澳超直播
阿森纳直播
阿森纳直播
阿森纳直播
足球直播
足球直播
足球直播
NBA直播
NBA直播
NBA直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
欧冠直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
篮球直播
篮球直播
篮球直播
篮球直播
篮球直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播