Linux定时备份数据库并上传到git仓库
前言
都说数据无价,一旦数据丢失便失去了所有。下面说说Linux定时备份数据库并且上传到Git中的私有库中。
准备工作
- GitHub私有库
- CentOS 7.2服务器
详细安装方法
升级CentOS原有的Git版本(原来Git版本是1.8.3版,现升级最新版2.15.0版)
1.依赖库安装 # yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel # yum install gcc perl-ExtUtils-MakeMaker 2.卸载低版本的Git # yum remove git 3.下载最版的Git源码包 # wget https://github.com/git/git/archive/v2.15.0.tar.gz 4.解压Git压缩包 # tar -xzvf v2.15.0.tar.gz 5.安装Git # cd git-2.15.0 # ./configure # make # make install 6.添加软链接 # ln -s /usr/local/bin/git /usr/bin/ 7.检查版本号 # git --version
GitHub密钥部署
1.在服务器本地生成公钥私钥 # ssh-keygen -t rsa -C "youremail@example.com" //youremail@example.com就是你注册GitHub的邮箱
执行完上面的命令就会在服务器的
~/.ssh
下有两个文件,id_rsa
是私钥,需要保护好不能告诉别人,id_rsa.pub
是公钥,这个可以放心的告诉别人,也是这个要上传到GitHub中的。
上传完公钥后,默认是Never Used
的。2.在服务器继续配置GitHub用户名跟邮箱 # git config --global user.name "xxxx" # git config --global user.email xxx@xxx.com 3.测试是否与GitHub连接成功 # ssh git@github.com
出现下图则表示连接成功
并且GitHub会更改状态(显示最近提交)
本地建立备份文件
新建备份文件夹,bak
为整个文件夹,然后再其里面新建file
(存放备份的sql文件)和sh
(存放备份脚本)文件夹。1.新建bak文件夹 # mkdir /bak 2.新建file文件夹以及sh文件夹 # mkdir /bak/file # mkdir /bak/sh 3.在sh文件夹中新建备份脚本 # cd /bak/sh # vim baksh.sh 4.将下面代码放入baksh.sh中 #!/bin/bash PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin export PATH #!bin/sh createAt=`date +%Y-%m-%d-%H:%M:%S` user=**** //数据库用户名 pass=*************** //数据库密码 dbname=********** //需要备份的数据库 mysql_back_path=/bak/file //备份的sql文件存放位置 mysqldump -u $user -p$pass $dbname > $mysql_back_path/$createAt.sql cd /bak/file //Git操作 git add . git commit -m $createAt git push 5.本地初始化Git版本库 # cd /bak/file # git init # git add . # git commit # git remote add origin git@github.com:xxxx/xxxx.git //设置远程分支 # git push -u origin master //推送 6.crontab定时执行备份操作 # crontab -e //添加下面的执行时间代码(下面表示每天凌晨3点执行脚本) # 0 3 * * * /bin/sh /bak/sh/baksh.sh //CentOS系统中加入开机自动启动: # chkconfig --level 345 crond on
完成数据库备份操作