Ubuntu LAMP怎样备份与恢复数据
导读:Ubuntu LAMP备份与恢复实操指南 一 备份范围与策略 备份对象: 数据库:使用 mysqldump 导出为 .sql;大库可用 mysqlpump(并行)或 Percona XtraBackup(InnoDB 热备)。 网站文件...
Ubuntu LAMP备份与恢复实操指南
一 备份范围与策略
- 备份对象:
- 数据库:使用 mysqldump 导出为 .sql;大库可用 mysqlpump(并行)或 Percona XtraBackup(InnoDB 热备)。
- 网站文件:打包 /var/www/html 及子目录(含用户上传)。
- 配置文件:如 /etc/apache2/、虚拟主机配置、PHP 配置等。
- 可选:使用 rsync 做本地/远程增量同步,或用 Timeshift/Deja Dup 做系统级快照与文件级备份。
- 策略建议:
- 定期计划:至少每周一次全量,必要时每日增量;保留多份历史。
- 多地存放:本地盘 + 外置盘/云存储;严格控制备份文件权限。
- 定期验证:抽样恢复演练,核对数据一致性与可用性。
二 数据库备份与恢复
- 全量导出单个库:
- 备份:
mysqldump -u root -p dbname > dbname_backup.sql - 恢复:先创建数据库(如
CREATE DATABASE dbname;),再导入:mysql -u root -p dbname < dbname_backup.sql
- 备份:
- 导出所有库:
- 备份:
mysqldump -u root -p --all-databases > all_databases.sql
- 备份:
- 大型库优化:
- 并行导出:
mysqlpump -u root -p dbname > dbname_pump.sql
- 并行导出:
- InnoDB 热备(不停机):
- 安装:
sudo apt-get install percona-xtrabackup - 备份:
xtrabackup --backup --user=root --password=YOUR_PASS --target-dir=/backup/xtra_$(date +%F) - 准备:
xtrabackup --prepare --target-dir=/backup/xtra_$(date +%F)
- 安装:
- 远程备份:
- 用 rsync 将 .sql 或 xtrabackup 目录同步到远程主机:
rsync -avz /backup/ user@remote:/backup/
- 用 rsync 将 .sql 或 xtrabackup 目录同步到远程主机:
示例汇总表:
- 全量:
mysqldump -u root -p db > db.sql|mysql -u root -p db < db.sql - 所有库:
mysqldump -u root -p --all-databases > all.sql|mysql -u root -p < all.sql - 并行:
mysqlpump -u root -p db > db_pump.sql| 导入同左 - 热备:
xtrabackup --backup ...|--prepare后在目标库导入/恢复
三 网站文件与配置备份与恢复
- 打包网站文件:
- 备份:
tar -czvf /backup/website_$(date +%F).tar.gz -C /var/www/html . - 恢复:
tar -xzvf /backup/website_YYYY-MM-DD.tar.gz -C /var/www/html
- 备份:
- 配置文件:
- 备份:
sudo cp -a /etc/apache2 /backup/apache2_$(date +%F)(按需扩展至 sites-available、php.ini 等) - 恢复:
sudo cp -a /backup/apache2_YYYY-MM-DD/* /etc/apache2/并sudo systemctl reload apache2
- 备份:
- 权限建议:网站目录属主属组设为 www-data:www-data,如:
sudo chown -R www-data:www-data /var/www/html - 远程同步:
- 备份到远端:
rsync -avz /var/www/html/ user@remote:/var/www/html/ - 从远端恢复:
rsync -avz user@remote:/var/www/html/ /var/www/html/
- 备份到远端:
四 自动化与异地备份
- 定时任务示例(crontab -e):
- 每日 02:00 备份数据库:
0 2 * * * mysqldump -u root -p'YOUR_DB_PASS' --single-transaction --routines --triggers dbname | gzip > /backup/db_$(date +\%F).sql.gz - 每日 03:00 备份网站文件:
0 3 * * * tar -czf /backup/www_$(date +\%F).tar.gz -C /var/www/html . - 同步到远端:
0 4 * * * rsync -avz --delete /backup/ user@remote:/backup/
- 每日 02:00 备份数据库:
- 系统级快照与文件级备份:
- Timeshift(RSYNC/BTRFS):适合系统分区与配置的回滚。
- Deja Dup:图形化的用户文件与目录备份。
- 安全与合规:备份文件设置最小权限(如 600/700),定期做恢复演练与校验。
五 迁移与灾难恢复
- 迁移到新服务器:
- 在新机安装相同组件:
sudo apt update & & sudo apt install apache2 mariadb-server php libapache2-mod-php php-mysql php-fpm -y - 传输网站文件与导入数据库(见第二、三节);必要时调整虚拟主机与 SSL 证书路径。
- 更新 DNS 指向新服务器 IP,访问测试并核查日志:
/var/log/apache2/error.log、/var/log/mysql/error.log。
- 在新机安装相同组件:
- 系统无法启动的离线恢复:
- 使用 Ubuntu Live USB 启动,挂载系统分区:
sudo mount /dev/sda1 /mnt - 进入环境:
sudo chroot /mnt,用rsync/cp将备份拷回,或tar解压;退出后重启。
- 使用 Ubuntu Live USB 启动,挂载系统分区:
- 故障排查要点:
- 数据库导入失败:检查目标库是否存在、字符集/引擎、SQL 模式;必要时加
--force分批导入。 - 权限/访问异常:确认 www-data 权限与目录所有权、SELinux/AppArmor 策略、虚拟主机配置与 DocumentRoot 一致。
- 数据库导入失败:检查目标库是否存在、字符集/引擎、SQL 模式;必要时加
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Ubuntu LAMP怎样备份与恢复数据
本文地址: https://pptw.com/jishu/757262.html
