本文目录导读:

MySQL 备份指定表
基础备份脚本
#!/bin/bash
# MySQL 配置
DB_HOST="localhost"
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_database"
TABLE_NAME="your_table"
BACKUP_DIR="/path/to/backup"
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份指定表
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS $DB_NAME $TABLE_NAME > $BACKUP_DIR/${TABLE_NAME}_${DATE}.sql
echo "表 $TABLE_NAME 已备份到 $BACKUP_DIR/${TABLE_NAME}_${DATE}.sql"
增强版备份脚本(包含压缩和清理)
#!/bin/bash
# 配置参数
DB_HOST="localhost"
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_database"
TABLES=("users" "orders" "products") # 指定多个表
BACKUP_DIR="/data/backup/mysql"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
# 创建备份目录
mkdir -p $BACKUP_DIR
# 备份多个指定表
for TABLE in "${TABLES[@]}"; do
echo "开始备份表: $TABLE"
# 备份单个表
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS \
--single-transaction \
--routines \
--triggers \
$DB_NAME $TABLE | gzip > ${BACKUP_DIR}/${TABLE}_${DATE}.sql.gz
if [ $? -eq 0 ]; then
echo "✅ 表 $TABLE 备份成功: ${TABLE}_${DATE}.sql.gz"
else
echo "❌ 表 $TABLE 备份失败"
fi
done
# 清理过期备份
find $BACKUP_DIR -name "*.sql.gz" -mtime +$RETENTION_DAYS -delete
echo "已清理超过 $RETENTION_DAYS 天的旧备份"
PostgreSQL 备份指定表
#!/bin/bash
# PostgreSQL 配置
PG_HOST="localhost"
PG_PORT="5432"
PG_USER="postgres"
PG_PASS="your_password"
DB_NAME="your_database"
TABLE_NAME="your_table"
BACKUP_DIR="/data/backup/postgres"
DATE=$(date +%Y%m%d_%H%M%S)
# 设置密码
export PGPASSWORD=$PG_PASS
# 备份指定表
pg_dump -h $PG_HOST -p $PG_PORT -U $PG_USER \
-t $TABLE_NAME \
-F c \
$DB_NAME > ${BACKUP_DIR}/${TABLE_NAME}_${DATE}.dump
echo "表 $TABLE_NAME 已备份到 ${BACKUP_DIR}/${TABLE_NAME}_${DATE}.dump"
# 取消密码变量
unset PGPASSWORD
SQL Server 备份指定表
#!/bin/bash
# SQL Server 配置
SERVER="localhost"
DATABASE="your_database"
USERNAME="sa"
PASSWORD="your_password"
TABLE_NAME="your_table"
BACKUP_DIR="/data/backup/mssql"
DATE=$(date +%Y%m%d_%H%M%S)
# 使用 bcp 工具导出表数据
bcp "$DATABASE.dbo.$TABLE_NAME" out "${BACKUP_DIR}/${TABLE_NAME}_${DATE}.csv" \
-S $SERVER -U $USERNAME -P $PASSWORD -c -t"," -T
echo "表 $TABLE_NAME 已导出到 ${BACKUP_DIR}/${TABLE_NAME}_${DATE}.csv"
通用结构化备份脚本
#!/bin/bash
# ================== 配置区域 ==================
# 数据库类型:mysql/postgres/mssql
DB_TYPE="mysql"
# 数据库连接信息
DB_HOST="localhost"
DB_PORT="3306"
DB_USER="root"
DB_PASS="your_password"
DB_NAME="your_database"
# 要备份的表(空格分隔)
TABLES=("table1" "table2" "table3")
# 备份设置
BACKUP_DIR="/data/backup/database"
RETENTION_DAYS=30
COMPRESS=true
# ================== 备份逻辑 ==================
DATE=$(date +%Y%m%d_%H%M%S)
mkdir -p $BACKUP_DIR
backup_table() {
local TABLE=$1
local BACKUP_FILE="${BACKUP_DIR}/${TABLE}_${DATE}"
echo "开始备份表: $TABLE"
case $DB_TYPE in
mysql)
mysqldump -h $DB_HOST -u $DB_USER -p$DB_PASS \
--single-transaction \
$DB_NAME $TABLE > ${BACKUP_FILE}.sql
;;
postgres)
export PGPASSWORD=$DB_PASS
pg_dump -h $DB_HOST -p $DB_PORT -U $DB_USER \
-t $TABLE $DB_NAME > ${BACKUP_FILE}.sql
unset PGPASSWORD
;;
mssql)
bcp "$DB_NAME.dbo.$TABLE" out "${BACKUP_FILE}.csv" \
-S $DB_HOST -U $DB_USER -P $DB_PASS -c -t","
;;
*)
echo "不支持的数据库类型: $DB_TYPE"
return 1
;;
esac
# 压缩备份
if [ "$COMPRESS" = true ] && [ -f "${BACKUP_FILE}.sql" ]; then
gzip -f ${BACKUP_FILE}.sql
BACKUP_FILE="${BACKUP_FILE}.sql.gz"
fi
echo "✅ 表 $TABLE 备份完成: $BACKUP_FILE"
}
# 备份所有指定表
for TABLE in "${TABLES[@]}"; do
backup_table $TABLE
done
# 清理过期备份
find $BACKUP_DIR -type f -mtime +$RETENTION_DAYS -delete
echo "🎉 备份完成,已清理超过 $RETENTION_DAYS 天的旧备份"
使用方式
设置执行权限
chmod +x backup_tables.sh
传递参数执行
# 直接运行
./backup_tables.sh
# 或使用参数
DB_HOST="192.168.1.100" DB_NAME="mydb" TABLES=("users" "orders") ./backup_tables.sh
添加到 crontab 定时执行
# 每天凌晨2点备份 0 2 * * * /path/to/backup_tables.sh >> /var/log/backup.log 2>&1
注意事项
- 密码安全:建议使用配置文件或环境变量,避免明文密码
- 权限设置:确保备份目录有足够的磁盘空间
- 备份验证:定期检查备份文件完整性
- 监控告警:添加失败通知机制
- 测试恢复:定期测试备份恢复流程
选择适合您需求的版本,根据实际情况调整配置即可。
版权声明: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直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播
中超直播