突然老板电话打过来了。
他说服务器崩了,数据全没了。
你心里咯噔一下,冷汗直冒。
赶紧去查备份,结果发现是空的。
这时候你只能抱着键盘哭了。
这种惨剧,我见过太多了。
很多新手觉得备份很麻烦。
总觉得倒霉事不会轮到自己。
其实,数据安全就是你的饭碗。
今天我就手把手教你备份。
看完这篇,你就能立刻动手。
保住你的数据,也保住你的工作。
很多人觉得买了云服务就稳了。
以为云厂商会帮你搞定一切。
说白了,云服务器也是台电脑。
只要是电脑,硬件就会坏。
硬盘也是有寿命的。
我见过好几次云盘突然损坏。
虽然概率小,但摊上就是100%。
还有人为操作失误的风险。
手一滑,把核心表给删了。
这时候要是没备份,真没处哭去。
所以,别把希望寄托在运气上。
把数据掌握在自己手里才踏实。
有些公司要求每周手动导出。
这其实是在考验人性。
工作一忙,你肯定就忘了。
或者请假了,没人去管这事。
一旦出事,就是连续几个月的数据丢失。
而且手动备份很容易出错。
文件存错了地方,或者根本没存成功。
等到恢复的时候才发现文件损坏。
那时候神仙也救不了你。
记住一句话:凡是人参与的,都会出错。
备份这件事,必须交给机器自动做。
不管你用的是MySQL还是MariaDB。
系统里自带的这个工具最好用。
很多新手喜欢用图形界面工具。
比如Navicat或者phpMyAdmin。
这些工具平时用着挺爽。
但真要用来做自动化备份,太麻烦了。
mysqldump是命令行工具。
它不需要打开图形窗口。
只要一条命令就能把数据导出来。
而且它非常稳定,兼容性极好。
这是所有DBA都在用的标准方法。
举个例子,基本的备份命令是这样的:
mysqldump -u root -p你的密码 数据库的名字 > backup.sql
这条命令的意思很简单。
调用mysqldump工具。
指定用户名和密码。
把指定的数据库导出到backup.sql文件里。
这个文件里全是SQL语句。
需要恢复的时候,直接导入就行。
数据库文件通常都很大。
特别是如果你的业务跑了一段时间。
几百兆甚至几个G都很正常。
直接存这些文件,很占空间。
传输起来也特别慢,浪费带宽。
所以,我们导出后要马上压缩。
Linux系统里有个神器叫gzip。
它能瞬间把文件变小很多。
通常能压缩到原来的十分之一。
我们可以把命令组合起来用。
用管道符把导出的数据直接传给压缩工具。
命令是这样的:
mysqldump -u root -p你的密码 数据库名 | gzip > backup.sql.gz
看,中间加了个竖线。
这就把数据像水流一样传过去了。
最后生成的就是.gz结尾的压缩包。
既省了硬盘空间,又方便传输。
一举两得,何乐而不为呢。
虽然命令学会了,但还得手动敲。
我们得让它每天自己动起来。
这就需要写个Shell脚本了。
别听到脚本就害怕,其实很简单。
就是把刚才的命令放进文件里。

再加点逻辑,比如带上日期。
这样每次备份的文件名都不一样。
不会被新的备份覆盖旧的。
我们可以新建一个文件叫bak.sh。
内容大概是这样的:
!/bin/bash
cd /home/backup
filename=`date +%Y%m%d`
mysqldump -u root -p密码 db_name | gzip > $filename.sql.gz
这几行代码一看就懂吧。
第一行是指定解释器。
第二行是进入备份目录。
第三行是获取当天的日期。
第四行就是执行备份命令。
文件名里带上了今天的日期。
比如20231027.sql.gz。
这样你就知道这是哪天的备份了。
写完记得给文件加执行权限。
用chmod +x bak.sh命令。
脚本写好了,怎么让它定时跑呢?
Linux系统里有个定时任务工具。
叫Crontab,非常强大。
只要配置一次,它就永远听话。
输入crontab -e命令进入编辑。
在文件最后面加一行配置。
比如你想每天凌晨2点备份。
因为这时候访问量最小。
配置就写成这样:
0 2 /home/backup/bak.sh
这五个星号分别代表分、时、日、月、周。
0 2 的意思就是:
每天的2点0分执行这个脚本。
保存退出,这就搞定了。
以后每天你睡觉的时候。
它都会默默帮你把数据备份好。
这才是程序员该有的懒人智慧。
刚才的备份还在同一台服务器上。
如果服务器彻底炸了。
硬盘烧了,机房着火了。
那你备份做得再好也没用。
因为备份和数据一起灰飞烟灭了。
这就是所谓的“单点故障”。
我们一定要把备份传到别的地方。
比如另一台便宜的服务器。
或者是公司的NAS存储。
甚至是阿里云OSS这种对象存储。
反正不要和原服务器在一块。
这才是真正的双保险。
传文件的方法有很多。
最常用的是SCP和Rsync。
SCP就像Linux的cp命令。
只不过它是通过网络传到另一台机器。
Rsync更高级一点。
它可以增量传输,只传变化的部分。
速度更快,也更省流量。
你可以把这一步也加到脚本里。
备份完立刻传到异地服务器。
还可以加个自动清理逻辑。
比如只保留最近7天的备份。
把太旧的文件删掉。
防止硬盘被占满。
这样一套组合拳下来。
你的数据安全等级就是专家级的了。
好了,方法都教给你了。
其实总结下来就三步。
第一步,会用mysqldump命令。
第二步,写脚本设置自动执行。
第三步,把备份传到异地服务器。
每一环都不难,关键是要动手。
别看完觉得有道理就关掉了。
现在就去你的服务器上试一试。
先手动备份一次,看看能不能成功。
成功了再写脚本,设置自动化。
数据这东西,平时看着没用。
一旦丢了,那就是公司的灾难。
也是你职业生涯的滑铁卢。
花半个小时把这事搞定。
今晚你就能睡个安稳觉了。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图