如果你的站点选择了一个小运营商的主机,那么一定要做好备份工作,否则你一定会肠子都悔青了的,小型运营商的运维能力、灾备都是不行的,一旦出问题数据根本无法找回,只能自认倒霉;
数据库自动导出脚本
通过定时执行脚本文件,每天将数据库导出,具体执行时间请根据网站流量情况决定,选择一个用户访问最少的时候来进行,本方案不适合大型站点;您可以将下面的代码复制到一个sh文件中;
新建文件 dbbackup.sh
, 将下面的代码贴入:
#!/bin/sh
# 请注意,本脚本仅适合 root 无密码的MySQL数据库,请根据自己的实际情况修改脚本后使用
BACKUPPATH="/home/backup/db"
DBUSER="root"
DBNAME="XDIANNAOCOM"
DAY=`date +%F`
/usr/bin/mysqldump --opt -u$DBUSER $DBNAME > $BACKUPPATH/$DAY.sql
给文件添加执行权限:
chmod +x ./dbbackup.sh
设置定时执行:
例如:每天2:10执行,将下列代码新增至 /etc/crontab
中
10 2 * * * root bash /home/dbbackup.sh
重启 crond 服务,加载定时任务(不同Linux发型版本下面的命令可能不一致)
systemctl restart cron
网站文件及数据库文件备份至本地或备份服务器
这里我使用的syncthing将文件实时的备份到本地,或其他服务器上,syncthing这款软件无论是安装还是使用的很简单,这里就不赘述了,这里建议将服务器设置为只发送不接收,以避免备份服务器以外更改导致实时据异常;
一般我会将下列数据进行同步备份:
- 网站程序及附件
- 数据库
- NGINX 配置文件
- HTTPS证书
- 应用程序及其配置文件
稳定性:目前此方案在一个项目中已经稳定运行了2年,平均每天同步数据500GB左右(还是比较消耗内存的)