• Linux下Mysql每天自动备份


    新建目录

    mkdir -p /data/mysqlbal/data
    mkdir -p /data/mysqlbal/scripts
    mkdir -p /data/mysqlbal/logs

    创建备份脚本

    复制代码
    cd /data/mysqlbak/scripts
    vi backup.sh
    
    #!/bin/bash
    
    #备份目录
    BACKUP_ROOT=/data/mysqlbak
    BACKUP_FILEDIR=$BACKUP_ROOT/data
    
    #当前日期
    DATE=$(date +%Y%m%d)
    
    ######备份######
    
    #查询所有数据库
    #-uroot -p123456表示使用root账号执行命令,且root账号的密码为:123456
    DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
    #循环数据库进行备份
    for db in $DATABASES
    do
    echo
    echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
    mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
    echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
    echo
    done
    
    echo "done"
    复制代码

    设置脚本的执行权限

    chmod 777 backup.sh

    将备份操作加入到定时任务(每天凌晨2点定时执行)

    crontab -e
    
    00 2 * * * /data/mysqlbak/scripts/backup.sh > data/mysqlbak/logs/backup.log 2>&1

    创建删除脚本(定时删除7天前的备份数据)

    vi backup_clean.sh
    
    #!/bin/bash
    echo ----------CLEAN BEGIN----------
    find /data/mysqlbak/data -mtime +7 -name "*.gz" -exec rm -rf {} ;
    echo ----------CLEAN COMPLETE----------

    设置脚本的执行权限

    chmod 777 backup_clean.sh

    将删除操作加入到定时任务(每天凌晨1点定时执行)

    00 1 * * * /data/mysqlbak/scripts/backup_clean.sh > /data/mysqlbak/logs/backup_full_clean.log 2>&1

    查看定时任务

    crontab -l

    如果需要备份到另外一台机器,可以备份完scp到另外一台机器

    首先服务器需要安装export,yum安装:

    yum  install expect

    或者源码安装,参考

    https://www.cnblogs.com/operationhome/p/9154055.html

    脚本修改:

    复制代码
    #!/bin/bash
    
    #备份目录
    BACKUP_ROOT=/data/mysqlbak
    BACKUP_FILEDIR=$BACKUP_ROOT/data
    
    #当前日期
    DATE=$(date +%Y%m%d)
    
    ######备份######
    
    #查询所有数据库
    #-uroot -p123456表示使用root账号执行命令,且root账号的密码为:123456
    DATABASES=$(mysql -uroot -p123456 -e "show databases" | grep -Ev "Database|sys|information_schema|performance_schema|mysql")
    #循环数据库进行备份
    for db in $DATABASES
    do
    echo
    echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz BEGIN----------
    mysqldump -uroot -p123456 --default-character-set=utf8 -q --lock-all-tables --flush-logs -E -R --triggers -B ${db} | gzip > $BACKUP_FILEDIR/${db}_$DATE.sql.gz
    echo ----------$BACKUP_FILEDIR/${db}_$DATE.sql.gz COMPLETE----------
    echo ----------scp 226  begin----------
    expect -c "
        spawn scp -r /data/mysqlbak/data/${db}_$DATE.sql.gz root@xxx.xxx.xxx.226:/data/mysqlbak/data225/
        expect {
            "*assword" {set timeout 300; send "此处是scp的密码
    "; exp_continue;}
            "yes/no" {send "yes
    ";}
        }
    expect eof"
    echo ----------scp 226  end----------
    echo
    done
    
    echo "done"
    复制代码
  • 相关阅读:
    超详细动画彻底掌握深度优先,广度优先遍历!
    拜托,别再问我什么是 B+ 树了
    高性能短链设计
    Gradle build 太慢,可能是你使用的姿势不对
    看完这些,你也能成技术专家
    x58平台 服务器电源配置 tdp
    系统掉盘,机械硬盘掉盘,固态掉盘
    centos7 修改ip和dns
    centos 修改hostname
    TCP三次握手和四次挥手过程
  • 原文地址:https://www.cnblogs.com/Bkxk/p/12144629.html
Copyright © 2020-2023  润新知