首页主机资讯ubuntu lamp恢复数据怎么办

ubuntu lamp恢复数据怎么办

时间2025-11-14 22:05:04发布访客分类主机资讯浏览444
导读: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
ubuntu如何配置securecrt的多标签连接 ubuntu securecrt连接日志查看

游客 回复需填写必要信息