在景安VPS上配置数据库实时自动备份,看着有技术门槛,其实只有两条实现路径。第一种是VPS安装宝塔面板这类管理工具,鼠标点击就能完成配置;第二种没有面板,纯命令行环境,需要自行编写脚本,挂载定时任务。分开介绍。
如果你用的是宝塔面板,这是最省事的方式。
登录宝塔面板,左侧菜单栏找到计划任务入口,点击进入。页面右上角添加计划任务,任务类型下拉选择备份数据库。勾选需要备份的数据库,多库场景按需勾选或者全选。备份存储位置默认是服务器本地磁盘,路径一般为/www/backup/database,可不用修改。提前安装插件的话,也能选择腾讯云COS、阿里云盘这类远程存储,备份文件直接上传云端,就算本地硬盘损坏,数据依旧保留。设置保留天数,比如填写7,系统只留存最近七天备份,旧文件自动清理,防止磁盘占满。执行周期选择每天,执行时间设置凌晨两三点,这个时段访问量低,mysqldump导出不会和业务争夺资源。全部参数填写完成提交,定时任务生效,到时间自动执行备份。

宝塔方案优势直观,所有备份文件在备份还原列表查看,需要恢复直接点击操作。但它依赖面板正常运行,如果宝塔和数据库之间连接异常,备份任务会静默失败,配置完成的头几天,要查看日志确认有没有报错。
如果你没装面板,纯命令行环境,就要手动编写脚本。
景安VPS默认提供root权限Linux环境,安装MySQL或者MariaDB之后,核心工具是mysqldump,属于MySQL自带导出工具,能够把数据库导出为SQL文件,包含建表语句和全部业务数据。需要编写脚本,定时调用mysqldump,导出文件压缩保存。
脚本逻辑简单,先定义备份目录,比如/data/mysqlbackup。脚本执行时调用date获取当前时间,生成带时间戳的文件名,避免多次备份文件互相覆盖。调用mysqldump导出目标数据库,管道交给gzip压缩,节省存储空间。导出完成增加find命令,删除目录内超过七天或者三十天的旧备份,避免磁盘空间持续耗尽。
脚本编写完成赋予执行权限,打开crontab添加定时规则,示例0 3 * /bin/bash /root/backup.sh,代表每天凌晨三点执行脚本。crontab是Linux自带定时工具,无需额外安装,编辑命令crontab -e,保存退出规则立即生效。
这里有几个容易踩坑的细节。mysqldump脚本内数据库密码明文存放,就算文件权限设置为仅root读写,一旦VPS被拿到root权限,密码就会泄露。稳妥做法是新建专用备份账号,只分配SELECT、LOCK TABLES权限,不赋予数据修改权限,就算密码泄露损失可控。还有一个常见问题,mysqldump导出大数据库会锁表,业务读写短暂阻塞。数据库体量较大,不能接受锁表,添加--single-transaction参数,依靠InnoDB事务机制保证导出数据一致性,不锁表,该参数对MyISAM表无效。
备份文件存储位置,这件事比备份配置本身更关键。
宝塔或者自定义脚本,默认都会把备份保存在VPS本地磁盘。本地备份可以应对误删数据、程序异常,但是无法抵御硬盘故障、服务器入侵。至少增加一层异地备份。最简单方式是景安VPS安装rclone或者rsync,定时把备份目录同步到另一台服务器或者对象存储。rsync同步命令直接写入crontab,备份执行完成之后立刻启动同步。腾讯云COS、阿里云OSS存储桶,配置好rclone之后,一条命令镜像同步本地目录,比rsync更省心。
备份任务配置完成不等于万事大吉。上线第一周每天查看备份目录,确认文件正常生成,文件大小和数据库体量匹配,不是零字节无效文件。挑选备份文件在测试环境尝试恢复,确认能够正常导入。很多人跳过恢复测试,等到故障发生才发现备份损坏。恢复测试不用频繁执行,每月一次,确认整个备份链路正常。
最后补充一点,景安VPS虚拟主机层面自带七天异地备份服务,但属于整机快照备份,粒度比较粗,恢复是整机回滚,无法单独提取数据库单张表。自己搭建mysqldump备份粒度更细,两套方案不冲突,搭配使用。日常小范围数据恢复使用自建备份,重大故障整机回滚再使用景安快照。