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基本解释:

  • 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备份回来。
  • 妈妈再也不担心我的文章丢失了。
  • 当初好几个版本的博客,就是没备份,科科,数据都没了!!!

 评论