MENU

Linux定时备份数据库并上传到git仓库

前言

都说数据无价,一旦数据丢失便失去了所有。下面说说Linux定时备份数据库并且上传到Git中的私有库中。

准备工作

  • GitHub私有库
  • CentOS 7.2服务器

详细安装方法

  • 升级CentOS原有的Git版本(原来Git版本是1.8.3版,现升级最新版2.15.0版)

    35-1

    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
    

    35-2

  • GitHub密钥部署

    1.在服务器本地生成公钥私钥
    # ssh-keygen -t rsa -C "youremail@example.com"          //youremail@example.com就是你注册GitHub的邮箱
    

    执行完上面的命令就会在服务器的~/.ssh下有两个文件,id_rsa是私钥,需要保护好不能告诉别人,id_rsa.pub是公钥,这个可以放心的告诉别人,也是这个要上传到GitHub中的。

    35-3
    上传完公钥后,默认是Never Used的。

    35-4

    2.在服务器继续配置GitHub用户名跟邮箱
    # git config --global user.name "xxxx"
    # git config --global user.email xxx@xxx.com
    3.测试是否与GitHub连接成功
    # ssh git@github.com
    

    出现下图则表示连接成功

    35-5
    并且GitHub会更改状态(显示最近提交)
    35-6

  • 本地建立备份文件
    新建备份文件夹,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
    
  • 完成数据库备份操作

参考文章
Linux MySQL定时备份并上传到git仓库
ssh 免密码登录服务器

标签: mysql
返回文章列表 文章二维码 打赏
本页链接的二维码
打赏二维码