做网站的朋友都知道,数据库存了网站的所有核心内容,文章、用户信息、配置设置全在里面,定期备份是必须做的运维操作。但不少新手甚至老站长都碰到过备份失败的情况,点了备份按钮半天没反应,或者最后弹出备份失败的提示,一下子就慌了,怕数据出问题没办法恢复。其实备份失败大多都有明确的原因,只要按顺序一步步排查,大部分问题都能很快解决,今天就把我多年建站碰到的备份失败问题和实用解决方法整理出来。

很多新手站长买服务器或者虚拟主机的时候,只算了网站程序和现有数据的大小,没给备份文件留出富余空间。备份的时候生成的新备份文件需要额外的存储位置,如果服务器剩余磁盘空间不够,自然就会备份失败。你首先要做的就是登录服务器或者主机后台,查看当前剩余的磁盘空间,一般来说,备份文件的大小和现有数据库的大小差不多,所以剩余空间至少要留出比现有数据库更大的余量。如果确实是空间不够,要么清理掉服务器里没用的旧文件、过时日志,要么直接升级扩容存储空间,清理或者扩容完成后再重新尝试备份就可以了。
备份操作需要数据库用户对对应数据库拥有读写权限,如果权限配置错误,备份程序就没法正常读取数据库内容,自然会提示备份失败。如果你是刚迁移完网站或者刚修改过数据库用户权限,那大概率就是这里出了问题。你可以登录数据库管理后台,比如常用的phpMyAdmin,查看对应数据库绑定的用户权限,确保备份所用的用户拥有SELECT、LOCK TABLES这些必要权限,如果权限不对,修改保存后再重新备份。还有一种情况是存储备份文件的目录权限不对,如果目录权限设置为只读,备份文件也写不进去,要确保存储备份的目录权限是可写的,一般设置为755就可以正常使用了。
网站正在运行的时候,随时都有进程在读写数据库,如果刚好碰到死锁或者有进程没有正常退出,备份的时候就会因为没法锁定数据表导致备份失败。这种情况你可以先重启一下数据库服务,比如Linux系统下用命令`systemctl restart mysqld`就能完成重启,等重启完成后,可以先把网站切换到临时维护模式,暂时关闭用户访问,避免备份过程中有新的读写请求产生,然后再尝试备份,一般就能成功了。如果经常碰到这种进程卡住的问题,可以调整自动备份的时间,选在网站访问量最低的凌晨时段,那时候请求少,不容易出现锁表导致备份失败的问题。
如果你用的是第三方备份插件或者第三方工具,比如WordPress的一些开源备份插件,或者老旧的命令行备份工具,版本不对或者和当前数据库版本不兼容,也会导致备份失败。比如你现在用的是MySQL 8.0,备份工具还是只适配MySQL 5.5的,就很容易出问题。这种情况你可以先把备份工具更新到最新的稳定版本,或者换用数据库官方自带的备份工具,比如MySQL自带的mysqldump工具,兼容性最好,出问题的概率也最低。如果你用的是服务器面板自带的备份功能,那就检查下面板有没有可用更新,更新面板后再重新尝试备份。
如果网站之前运行不稳定,或者服务器突然断电、异常宕机过,有可能会导致数据库表损坏,损坏后的数据库没法正常读取数据,自然也就没法完成备份。这种情况你可以用数据库自带的修复工具检测修复,比如MySQL可以用命令`mysqlcheck -r 数据库名 -u用户名 -p`,执行后会自动检测并修复损坏的数据表。修复完成后再尝试备份,一般就能解决问题。如果还是不行,也可以登录phpMyAdmin,选中对应的数据库,逐个查看每个表的状态,找到有损坏的表单独进行修复就可以了。
不少站长习惯把备份文件存到远程服务器或者对象存储上,做异地备份保证数据安全,这种跨设备备份如果网络不稳定,就会导致传输中断,生成不了完整的备份文件,自然提示备份失败。如果是这种情况,你可以先尝试做本地备份,先把备份文件存在本地服务器上,看看能不能成功,如果本地备份可以正常生成,那肯定就是网络或者远程存储端的问题了。你可以检查服务器的网络连接是否正常,看看远程存储的权限配置有没有错误,或者更换一个远程存储服务商再尝试备份。
如果你的数据库很大,比如已经有几个G的大小,用web端的在线备份工具很容易碰到执行超时的问题,因为大部分web端脚本都有执行时间限制,超过时间就会自动中断,导致备份失败。这种情况我不建议用web端在线备份,改用命令行备份是最稳妥的,Linux系统下直接用MySQL自带的mysqldump命令:`mysqldump -u数据库用户名 -p数据库名 > /备份路径/备份文件名.sql`,直接在服务器终端执行,不会有超时限制,大数据库备份的成功率非常高。
总的来说,数据库备份失败不用慌,按照从易到难的顺序一步步排查,先看存储空间、权限配置这些基础问题,再排查进程卡住、版本兼容、数据库损坏这些深层问题,大部分问题都能很快解决。备份是网站运维里最重要的工作之一,不仅要能成功备份,还要定期测试备份能否正常恢复,才能真正确保你的数据安全,不要等数据丢失了才后悔没做好备份测试。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!