centos lamp怎样进行数据备份
导读:CentOS LAMP 数据备份实操指南 一 备份范围与策略 备份范围建议覆盖:网站文件(如 /var/www/html)、数据库(MySQL/MariaDB 数据或逻辑备份)、Web 与 PHP 配置(/etc/httpd/、/etc/...
CentOS LAMP 数据备份实操指南
一 备份范围与策略
- 备份范围建议覆盖:网站文件(如 /var/www/html)、数据库(MySQL/MariaDB 数据或逻辑备份)、Web 与 PHP 配置(/etc/httpd/、/etc/php.ini、/etc/php.d/)、以及必要的系统配置(如 /etc/hosts、定时任务等按需)。数据库优先采用 mysqldump 做一致性逻辑备份,避免直接拷贝数据目录导致不一致。
- 备份类型与频率:建议采用“全量 + 增量”组合。例如:每周日做全量,周一至周六做增量;全量保留 4 周、增量保留 7 天(与最近全量对应)。
- 保留与多副本:结合业务 RPO/RTO 制定保留周期,至少保留 2–4 周;关键数据建议“本地暂存 + 远程集中”双副本。
- 自动化与验证:用 cron 定时执行;定期做“恢复演练”验证可用性与完整性。
二 数据库备份与恢复
- 逻辑备份(推荐):使用 mysqldump 导出为 .sql,便于跨版本迁移与一致性校验。示例:
- 单库备份:
mysqldump -u 用户名 -p 数据库名 > /backup/mysql/数据库名_$(date +%F).sql - 所有库备份:
mysqldump -u 用户名 -p --all-databases > /backup/mysql/full_$(date +%F).sql - 指定字符集(避免乱码):
mysqldump -u 用户名 -p --default-character-set=utf8mb4 数据库名 > 备份.sql
- 单库备份:
- 恢复:先建库(若全量导入可省略),再导入 SQL:
mysql -u 用户名 -p 数据库名 < 备份.sql - 一致性建议:在备份前对表加读锁并刷新日志(适合停机窗口或读多写少场景):
mysqldump -u 用户名 -p --single-transaction --flush-logs --routines --triggers --databases 库名 > 备份.sql(--single-transaction对 InnoDB 一致性友好,--flush-logs便于基于 binlog 的增量恢复)。
三 网站文件与配置备份
- 打包归档:对网站根目录与配置目录做压缩归档,便于传输与留存。示例:
- 网站文件:
tar -czvf /backup/www/html_$(date +%F).tar.gz -C /var/www/html . - Apache 配置:
tar -czvf /backup/conf/httpd_$(date +%F).tar.gz -C /etc httpd - PHP 配置:
tar -czvf /backup/conf/php_$(date +%F).tar.gz -C /etc php.ini /etc/php.d
- 网站文件:
- 增量同步:用 rsync 做文件级增量备份与镜像,适合日常持续备份与远程集中。示例:
- 本地/远程镜像:
rsync -avz --delete /var/www/html/ 用户@备份机:/backup/web/$(hostname)/html/ - 仅增量传输(配合快照/全量使用):
rsync -av --link-dest=../full_上次日期 /var/www/html/ /backup/web/inc_$(date +%F)/
- 本地/远程镜像:
- 远程拷贝:小量或临时拷贝可用 scp:
scp -P 22 /backup/mysql/*.sql 用户@备份机:/backup/mysql/。
四 自动化与远程集中备份方案
- 单机自动化脚本示例(含清理与日志):
#!/bin/bash BACKUP_ROOT="/backup" MYSQL_USER="backup" MYSQL_PASS="YourStrongPass" DB_NAME="your_db" WWW_DIR="/var/www/html" CONF_DIRS="/etc/httpd /etc/php.ini /etc/php.d" DATE=$(date +%F) LOG="$BACKUP_ROOT/backup_$DATE.log" mkdir -p $BACKUP_ROOT/{ mysql,www,conf} # 1) MySQL 逻辑备份 mysqldump -u"$MYSQL_USER" -p"$MYSQL_PASS" --single-transaction --routines --triggers "$DB_NAME" \ > $BACKUP_ROOT/mysql/${ DB_NAME} _$DATE.sql 2> > "$LOG" # 2) 网站文件归档 tar -czf $BACKUP_ROOT/www/html_$DATE.tar.gz -C $WWW_DIR . 2> > "$LOG" # 3) 配置归档 tar -czf $BACKUP_ROOT/conf/conf_$DATE.tar.gz -C / $( echo $CONF_DIRS | xargs -n1 | sed 's/^/\//' ) 2> > "$LOG" # 4) 远程集中(rsync over SSH) rsync -avz --delete -e ssh $BACKUP_ROOT/ user@backup-server:/data/backup/$(hostname)/ 2> > "$LOG" # 5) 本地保留策略:保留最近7天 find $BACKUP_ROOT/mysql -type f -mtime +7 -delete find $BACKUP_ROOT/www -type f -mtime +7 -delete find $BACKUP_ROOT/conf -type f -mtime +7 -delete echo "[$DATE] Backup finished. See $LOG"- 加入定时任务(每天 02:00):
0 2 * * * /usr/local/bin/backup_lamp.sh
- 加入定时任务(每天 02:00):
- 多机集中备份(rsync 守护进程模式,适合大规模):
- 备份服务器:部署 rsyncd,按客户端 IP/主机名 划分模块,启用认证与访问控制(默认端口 873),数据按
/data/rsync_backup/客户端IP/...存放,便于隔离与审计。 - 客户端:按“全量 + 增量”节奏推送;全量日做打包归档,其余日做 rsync 增量 推送;推送完成清理本地临时包。
- 安全与网络:优先走内网;使用 auth users + secrets file 或 SSH 保证凭据与传输安全;定期做连通性与恢复演练。
- 备份服务器:部署 rsyncd,按客户端 IP/主机名 划分模块,启用认证与访问控制(默认端口 873),数据按
五 恢复与校验要点
- 数据库恢复:先建库(若需要),再导入:
mysql -u 用户名 -p 数据库名 < 备份.sql;多库全量:mysql -u 用户名 -p < full_日期.sql。 - 文件与配置恢复:
- 解压覆盖:
tar -xzvf /backup/www/html_日期.tar.gz -C /var/www/html - 配置还原:
tar -xzvf /backup/conf/conf_日期.tar.gz -C /
- 解压覆盖:
- 校验清单:
- 核对 文件数量/大小/权限 与备份清单一致;
- 抽查导入数据与关键页面/接口可用性;
- 定期做“全量恢复演练”,并验证 binlog 增量回放(如有开启)。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: centos lamp怎样进行数据备份
本文地址: https://pptw.com/jishu/785388.html
