ubuntu lamp恢复数据怎么办
导读:Ubuntu LAMP 恢复数据实用指南 一 有备份的标准恢复流程 恢复网站文件 将站点归档解压到网站根目录(示例使用 /var/www/html): tar -xzvf /backup/website_backup.tar.gz -C...
Ubuntu LAMP 恢复数据实用指南
一 有备份的标准恢复流程
- 恢复网站文件
将站点归档解压到网站根目录(示例使用 /var/www/html):
tar -xzvf /backup/website_backup.tar.gz -C /var/www/html
如使用了自定义虚拟主机,同时恢复对应配置并重启 Apache:
cp /backup/apache2/sites-available/000-default.conf /etc/apache2/sites-available/ & & sudo systemctl reload apache2 - 恢复数据库
方式一 普通逻辑备份(.sql)
mysql -u root -p dbname < /backup/dbname_backup.sql
方式二 全量备份(–all-databases)
mysql -u root -p < /backup/all_databases_backup.sql
方式三 使用 Percona XtraBackup 热备(InnoDB)
准备阶段:xtrabackup --prepare --target-dir=/backup/xtrabackup_2025_xx_xx
拷贝回数据目录(注意属主):
sudo rsync -aAX --info=progress2 /backup/xtrabackup_2025_xx_xx/ /var/lib/mysql/
sudo chown -R mysql:mysql /var/lib/mysql
重启 MySQL:sudo systemctl restart mysql - 恢复配置文件
按需恢复 Apache/PHP 配置并校验:
cp /backup/apache2.conf /etc/apache2/ & & sudo apache2ctl configtest & & sudo systemctl reload apache2
如备份了 PHP 配置:cp -a /backup/php/8.1/apache2/ /etc/php/8.1/apache2/
二 无备份时的文件恢复
- 立刻减少对目标分区的写入(下载、解压、缓存、日志等),优先在只读或 LiveCD 环境下操作,提升成功率。
- 图形界面回收站
若文件来自桌面环境,可先在 Trash(回收站) 中直接还原。 - 使用 extundelete(仅限 ext3/ext4)
卸载分区后按文件或目录恢复:
sudo umount /dev/sdXY
sudo extundelete /dev/sdXY --restore-file /path/to/file
sudo extundelete /dev/sdXY --restore-directory /path/to/dir
sudo extundelete /dev/sdXY --restore-all - 使用 TestDisk/PhotoRec
分区/文件系统级恢复用 TestDisk;按文件类型恢复用 PhotoRec(对 ext4/NTFS/FAT 等均有效):
sudo apt-get install testdisk
sudo photorec /dev/sdX(按向导选择分区与输出目录)
提示:恢复文件请输出到与丢失分区不同的磁盘,避免覆盖源数据。
三 无备份时的数据库恢复
- 立刻停止写入型操作(应用、计划任务、导入导出),避免覆盖 InnoDB 回滚段与二进制日志;如有主从,暂时隔离从库。
- 使用 Percona Data Recovery Tool for InnoDB
适用于 InnoDB 表空间损坏或误删表空间后的页级恢复,流程包括:停止 MySQL、备份当前数据目录、解析 ibdata1/表空间、导出表结构与数据、重建实例并导入。该过程复杂、对经验要求较高,建议仅在关键数据场景下由有经验人员操作。 - 使用 mysqlbinlog 回放二进制日志(有开启 binlog 时)
定位时间点或位置:mysqlbinlog --start-datetime=“2025-11-14 10:00:00” --stop-datetime=“2025-11-14 10:10:00” /var/log/mysql/mysql-bin.00000X
筛选并导出为 SQL:mysqlbinlog … | grep -v ‘^SET’ > /tmp/recover.sql
导入:mysql -u root -p dbname < /tmp/recover.sql - 无备份且无 binlog 的场景
可尝试第三方工具(如 undrop-for-innodb)进行页/索引结构重建,但成功率受限且风险较高;如数据极其重要,建议尽快联系专业数据恢复服务。
四 恢复后的校验与常见排错
- 校验清单
文件:核对站点目录权限(如 /var/www/html 下文件属主 www-data:www-data)、关键文件是否存在、.htaccess 与软链是否恢复;
数据库:校验表数量与数据量(SELECT COUNT(*))、主外键与触发器、视图/存储过程可用性;
应用:检查 WordPress/Drupal 等应用的配置文件(如 wp-config.php)中的数据库名、前缀、密钥是否与备份一致;
访问:浏览器访问首页与后台,查看 Apache 错误日志(/var/log/apache2/error.log)与 MySQL 错误日志(/var/log/mysql/error.log)。 - 常见报错与处理
ERROR 1049 (42000): Unknown database:先创建同名数据库再导入(CREATE DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; );
Table doesn’t exist:确认导入顺序、是否遗漏 --databases 导致 USE 未切换;
InnoDB: Operating system error number 13:目录权限或 AppArmor/SELinux 限制,修正属主为 mysql:mysql 并检查策略;
导入很慢:关闭自动提交、分批导入、临时调大 innodb_buffer_pool_size,必要时使用压缩归档(.sql.gz)与管道导入:gunzip < db.sql.gz | mysql -u root -p dbname。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: ubuntu lamp恢复数据怎么办
本文地址: https://pptw.com/jishu/748486.html
