mysql备份
- 博客上线一段时间了。因为挂载在vps上,总感觉很不保险。
- 虽然现在挂了cdn,用到现在基本还是很平稳,总担心哪天就game over了。
- vps挂了无所谓,我的文章都放在vps的数据库上,真废了就废了,写的文章血本无归啊!!!!
- 所以,数据库备份是很重要的!
mysql的备份命令:
- 一般来说,也就整库备份(我目前也就用到整库备份,毕竟数据是单个库的)
- 备份命令如下:
mysqldump -u用户名 -p 数据库名 > 备份路径
- 上述命令会把整库的所有表结构、创建命令、以及数据进行全量dump备份出来。
- 目前我的整库大小不大,所以备份时间很快。
- 至于以后如果数据库变大以后有没有性能问题。后面再说吧,等碰到问题了在解决 :D。
linux自动执行备份任务:
- 其实linux定时任务,是上大学时候的基本操作了。当时还是linux选修课的考试内容。当时觉得,老天我怎么可能用到这种操作,又不干运维。
- 结果没想到真的学以致用了。感谢我的老师!!!
- 当时学的是ubuntu,用的是crontab,所以我只说ubuntu下的crontab。别的没用过也不会,:D。
编写定时命令:
- crontab用的不复杂的话,基本操作就一行命令。复杂操作,可以自行google,我就不说了。
sudo crontab -e
- 上述命令就是打开crontab编辑定时任务命令。
- 第一次使用的时候会问你,用哪个编辑器编写命令。我用的是vim,实在不会就简单看下vim怎么用吧,linux基本操作。
- 编辑器打开以后,输入如下内容:
15 5 * * * /home/user/test.sh
- 上面的命令就是指定了一个定时任务。linux会在指定的时间,执行我们指定的目录下的test.sh的shell脚本。
- 我的自动备份命令,就是写在shell脚本里的。
crontab基本解释:
* * * * * 执行指令
分 时 天 月 周 执行指令
- 如上,我写的命令就是在:每天的05:15分,执行“/home/user/test.sh”shell脚本的命令。
- 具体的操作我基本就用到这些,有特殊需求的小伙伴,自行google吧,这里就只做个抛砖引玉了。
编写shell脚本:
- 自动执行备份原理也很简单。
- 我的mysql数据dump出来以后,我是放到github上的私有仓库保存起来的(小穷逼,只能薅巨硬公司的羊毛了)。
- 所以shell脚本的执行中心也就是:
- dump数据库数据
- copy到git仓库中
- commit
- push到远程
- shell命令如下:
#!/bin/sh
backup_file="备份文件路径" # 定义备份的mysql数据文件dump的路径
current=`date "+%Y%m%d%H%M%S"` # 用当前时间戳作为备份提交目录名称
mysqldump -u用户 -p密码 数据库名 > $backup_file # dump数据
sleep 3s # 睡3s 我是担心dump需要时间,所以特地睡了3s,不知道有用没………………
echo $current # 这是测试shell脚本的时候的打印
dir="git仓库目录/$current" # 定义git仓库路径和当次备份的数据存放的目录(用当前时间戳命名)
echo $dir # 这是测试shell脚本的时候的打印
mkdir $dir # 创建备份数据的目录
cp $backup_file $dir #将备份mysql文件copy到备份的目录中
cd $dir # 切换到git目录下
git add -A # 不说了 添加git文件
git commit -m "backup $dir" #提交commi
git pull # 拉取
git push # 推送到远程
rm $backup_file # vps空间小,养不起数据大佛,所以要remove一下
- 保存,测试一下,备份没问题。这样每天备份一次Blog的数据,感觉相对来说还是比较万无一失的。
- 如果VPS真挂了,还能直接mysql备份回来。
- 妈妈再也不担心我的文章丢失了。
- 当初好几个版本的博客,就是没备份,科科,数据都没了!!!