zoukankan      html  css  js  c++  java
  • 企业级mysql数据库完全备份、增量备份脚本

    企业完全备份脚本

    [root@client ~]# vim /opt/mysql_bak_wanbei.sh

    #!/bin/bash

    #MySQL数据库完全备份脚本

    #设置登录变量

    MY_USER="root"

    MY_PASS="123456"

    MY_HOST="localhost"

    MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"

    #设置备份的数据库(或表)

    MY_DB="client"

    #定义备份路径、工具、时间、文件名

    BF_DIR="/mysql_bak/wanbei"

    BF_CMD="/usr/local/bin/mysqldump"

    BF_TIME=$(date +%Y%m%d-%H:%M)

    NAME="$MY_DB-$BF_TIME"

    #备份为.sql脚本,然后打包压缩(打包后删除原文件)

    [ -d $BF_DIR ] || mkdir -p $BF_DIR

    cd $BF_DIR

    $BF_CMD $MY_CONN --databases $MY_DB > $NAME.sql

    #可打包,下面是打包方式,我这里用的是.sql

    #/bin/tar zcf $NAME.tar.gz $NAME.sql --remove &> /dev/null

    完全备份恢复命令

    Mysql -uroot -p123456 < /mysql_bak/wanbei/client-20190528-21:36.sql

    企业增量备份脚本

    友情提示:我这里是用源码安装的mysql,变量CMD/LOG_DIR的路径和mariadb的路径不同

    要先which查看绝对路径,不然脚本执行不了

    注意这里需要开启二进制日志,执行计划任务对日志进行每天晚上的切割做增量备份,切割的日志都是0点之前的,也就是昨天的

    Vim /etc/my.cnf

    [mysqld]

    datadir=/usr/local/mysql/data

    socket=/tmp/mysql.sock

    character-set-server=utf8

    server-id = 1

    log-bin=mysql-bin

    log-slave-updates=true

    [root@client ~]# vim /opt/mysql_bak_zengbei.sh  

    #!/bin/bash

    #MySQL数据库增量备份脚本

    #设置登录变量

    MY_USER="root"

    MY_PASS="123456"

    MY_HOST="localhost"

    MY_CONN="-u$MY_USER -p$MY_PASS -h$MY_HOST"

    #定义备份路径、工具、二进制日志前缀、二进制日志存放路径

    BF_TIME="$(date +%Y%m%d)"

    BF_DIR="/mysql_bak/zengbei/$BF_TIME"

    CMD="/usr/local/bin/mysqladmin"

    QZ="mysql-bin"

    LOG_DIR="/usr/local/mysql/data"

    #拷贝二进制日志

    [ -d $BF_DIR ] || mkdir -p $BF_DIR

    $CMD $MY_CONN flush-logs

    #打印并保存昨天的二进制日志,因为需要写计划任务,所以是0点之前生成的

    /bin/cp -p $(ls /usr/local/mysql/data/mysql-bin* |awk -v RS="" '{print $(NF-2)}') $BF_DIR

    [root@client opt]# chmod +x /opt/mysql_bak_*

    执行每天晚上凌晨进行增量备份,每周一进行一次完全备份

    进行增量备份日志恢复用以下命令

    [root@tomcat2 20190529]# mysqlbinlog --no-defaults /mysql_bak/zengbei/20190531/mysql-binlog.000009

      | mysql -u root -p123456

    mysql: [Warning] Using a password on the command line interface can be insecure.

    [root@client ~]# crontab -e

    0    0     *     *     1   /opt/mysql_bak_wanbei.sh

    0    0     *     *     2-7 /opt/mysql_bak_zengbei.sh

  • 相关阅读:
    图解JAVA对象的创建过程
    统计机器学习
    排序算法简介及其C实现
    linux中强大的screen命令
    C语言注释
    Hello hadoop——使用hadoop进行大规模数据的全局排序
    Hadoop Streaming框架使用(二)
    shell——tr的用法
    统计学习方法《文本分类(三)》
    hadoop 常存问题
  • 原文地址:https://www.cnblogs.com/zc1741845455/p/10940706.html
Copyright © 2011-2022 走看看