Ubuntu 上 JSP 应用的数据备份与恢复
一 备份范围与总体策略
二 数据库备份与恢复
mysqldump -u 用户名 -p --single-transaction --routines --triggers 数据库名 > backup.sqlmysqldump -u 用户名 -p 数据库名 表名 > table.sqlmysqldump -h 主机 -u 用户名 -p 数据库名 > backup.sqlmysql -u 用户名 -p -e "CREATE DATABASE IF NOT EXISTS 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;"mysql -u 用户名 -p 数据库名 < backup.sql#!/usr/bin/env bash
BACKUP_DIR="/opt/backup/db"
MYSQL_USER="backup"
MYSQL_PASS="StrongPass!"
MYSQL_HOST="localhost"
DB_NAME="myapp"
DATE=$(date +%F)
mkdir -p "$BACKUP_DIR"
mysqldump -h"$MYSQL_HOST" -u"$MYSQL_USER" -p"$MYSQL_PASS" --single-transaction --routines --triggers "$DB_NAME" \
| gzip > "$BACKUP_DIR/${DB_NAME}_${DATE}.sql.gz"
find "$BACKUP_DIR" -name "*.sql.gz" -mtime +7 -delete
0 2 * * * /opt/backup/db_backup.sh >/var/log/db_backup.log 2>&1三 应用与配置文件的备份与恢复
sudo tar czvf /opt/backup/app_$(date +%F).tar.gz -C /var/lib/tomcat9/webapps/ROOT .sudo tar xzvf /opt/backup/app_2026-01-12.tar.gz -C /var/lib/tomcat9/webapps/ROOT/rsync -avz --delete /var/lib/tomcat9/webapps/ROOT/ user@backup:/data/backup/app/rsync -avz --delete user@backup:/data/backup/app/ /var/lib/tomcat9/webapps/ROOT/四 自动化与验证
#!/usr/bin/env bash
set -e
APP_DIR="/var/lib/tomcat9/webapps/ROOT"
CONF_DIR="/etc/tomcat9"
BACKUP_BASE="/opt/backup"
DATE=$(date +%F)
# 数据库
mkdir -p "$BACKUP_BASE/db"
mysqldump -hlocalhost -ubackup -p"$DB_PASS" --single-transaction --routines --triggers myapp \
| gzip > "$BACKUP_BASE/db/myapp_${DATE}.sql.gz"
find "$BACKUP_BASE/db" -name "*.sql.gz" -mtime +7 -delete
# 应用与配置
mkdir -p "$BACKUP_BASE/app"
tar czvf "$BACKUP_BASE/app/app_${DATE}.tar.gz" -C "$APP_DIR" .
tar czvf "$BACKUP_BASE/app/conf_${DATE}.tar.gz" -C "$CONF_DIR" .
# 远程同步(可选)
rsync -avz --delete "$BACKUP_BASE/" backup@192.0.2.10:/data/backup/jspapp/
五 恢复流程与注意事项
mysql -u 用户名 -p 数据库名 < backup.sql;tar xzvf app_日期.tar.gz -C /目标目录;sudo chown -R tomcat:tomcat /var/lib/tomcat9/webapps/ROOT /etc/tomcat9/Catalina/localhost;sudo systemctl start tomcat9 并验证访问与日志。