说在前面
今天早些时候突然发现博客无法打开,远程数据库无法访问了,经过咨询 VPS 供应商客服后得知,因为发现我的 VPS 上面架设了 VPN 相关设施,被强制封禁了...封禁了...封禁了,我的数据库( ⊙ o ⊙ )啊!最近没有备份啊...
施工过程
在漫长的等待答复过程中,我不得不做起了事后诸葛亮,以应对以后可能出现的此类问题
思路
- 可以使用 mysqldump 生成备份 sql 文件;
- 使用 git 存储 sql 文件;
- 使用 gitlab 或者免费私人 git 仓库;(不考虑使用 github,因为不提供免费的私人仓库...成本较高)
调研
- 使用 mysqldump 命令成功生成数据库名_bak.sql 文件,查看内容正确;
mysqldump -h主机名 -P端口号 -u数据库用户名 -p密码 数据库名>数据库名_bak.sql
-
打听到码云有免费的 git 私人仓库 https://gitee.com
-
使用 git 命令成功提交并推送生成的 sql 备份文件;
git add -A
git commit -m "auto-commit:${createAt}"
git push origin master
详解
基于以上准备,我决定写一个 shell 脚本,然后创建 linux 定时任务,每日自动 dump 数据库文件并自动上传到码云 git 私人仓库!
首先需要在准备执行 shell 的机器上安装有 mysql 服务并能正常使用 mysqldump 命令,如果没有请自行安装;
然后需要有 git 服务并能正常使用 git 命令,另外为了方便提交代码以及防止泄密,使用 ssh 替代账号密码方式进行 git 鉴权!
使用 ssh 管理 git 仓库
- 首先配置基础信息
git config --global user.name "washmore" #提交代码的署名
git config --global user.email "admin@washmore.tech" #提交代码的署名邮箱
- 生成 ssh 公钥
执行下面命令,三次回车即可生成 ssh key:
ssh-keygen -t rsa -C "admin@washmore.tech"
- 查看生成的公钥
cat ~/.ssh/id_rsa.pub
将以上命令打印出屏幕的内容添加到码云 https://gitee.com/profile/sshkeys。(注意是三段式全部内容)
- 验证配置
ssh -T git@gitee.com
如果输出 Welcome to Gitee.com, your account!
表示配置成功了,没有的话自行排查
- 其他 git 基础 clone,commit,push 等基础操作不再赘述,如有不懂请自行查阅资料
接下来开始编写我们的 shell 脚本 data_back.sh,详情请看每个步骤的注释,shell 脚本存放位置请自选
后记
下午被告知数据抢救回来了,仅仅是被要求下架 VPN 服务,不过本文所记录的方案也会被执行起来,以免除后顾之忧,希望能给有此需求的各位童鞋带来一点点帮助
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于