备份范围与总体思路

数据库备份与恢复
mysqldump -u 用户名 -p 数据库名 > backup_$(date +%F).sqlmysqldump -u 用户名 -p --databases 库1 库2 ... > backup_$(date +%F).sqlmysqldump -u 用户名 -p --all-databases --events --routines > backup_$(date +%F).sqlmysqldump -u 用户名 -p 数据库名 | gzip > backup_$(date +%F).sql.gzmysql -u 用户名 -p 数据库名 < backup_$(date +%F).sqlgunzip < backup_$(date +%F).sql.gz | mysql -u 用户名 -p 数据库名--set-gtid-purged=OFF(视版本与复制拓扑而定)。网站文件与配置备份
tar -czvf web_$(date +%F).tar.gz -C /var/www/html .tar -czvf config_$(date +%F).tar.gz /etc/httpd /etc/php.inirsync -avz --delete /var/www/html/ 用户名@远程主机:/path/to/backup/scp -P 22 web_$(date +%F).tar.gz 用户名@远程主机:/path/to/backup/自动化与远程备份脚本
#!/usr/bin/env bashset -Eeuo pipefailBACKUP_DIR="/backup/$(date +%F)"MYSQL_USER="backup"MYSQL_PASS="YourStrongPass"DB_NAME="mydb"REMOTE_USER="backup"REMOTE_HOST="192.0.2.10"REMOTE_DIR="/data/backup"mkdir -p "$BACKUP_DIR"# 1) 数据库mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" --single-transaction --routines --triggers "$DB_NAME" | gzip > "$BACKUP_DIR/db_$(date +%F).sql.gz"# 2) 网站文件tar -czvf "$BACKUP_DIR/web_$(date +%F).tar.gz" -C /var/www/html .# 3) 配置tar -czvf "$BACKUP_DIR/config_$(date +%F).tar.gz" /etc/httpd /etc/php.ini# 4) 远程同步rsync -avz --delete -e ssh "$BACKUP_DIR/" "$REMOTE_USER@$REMOTE_HOST:$REMOTE_DIR/"# 5) 保留最近7天find /backup -maxdepth 1 -type d -mtime +7 -exec rm -rf {} +0 2 * * * /usr/local/bin/backup_lamp.sh >> /var/log/backup.log 2>&1~/.my.cnf 或采用 ~/.mylogin.cnf 以避免在命令行暴露;SSH 建议使用密钥登录替代口令。恢复步骤与验证
mysql -u 用户名 -p 数据库名 < db_YYYY-MM-DD.sqlgunzip < db_YYYY-MM-DD.sql.gz | mysql -u 用户名 -p 数据库名tar -xzvf web_YYYY-MM-DD.tar.gz -C /var/www/htmltar -xzvf config_YYYY-MM-DD.tar.gz -C /