• MySQL分库备份


    1、需求概述

    • 每天00:00备份MySQL数据库数据;
    • 每一个库生成一个文件,使用gzip压缩,文件名:backup_库名_yyyymmdd.sql.gz,注意yyyymmdd需要是前一天;
    • 备份文件保存在/backup/mysql/下面,每天创建新的日备份数据目录yyyymmdd,注意是前一天
    • 日志保存在/backup/mysql/下面,命名方式为:yyyymmdd.log

    2、环境准备

    操作系统:CentOS release 6.5
    MySQL数据:MySQL 5.1.73

    3、脚本说明

    • 判断备份目录是否存在,如果不存在就创建;
    • 使用mysql命令获取全部数据库列表;
    • 遍历全部数据列表,使用mysqldump命令进行备份

    4、脚本编写

     1 #!/bin/bash
     2 
     3 # log file name
     4 LOG=/backup/mysql/$(date +%Y%m%d -d -1day).log
     5 
     6 # create backup directory
     7 BACKUP_DIR=/backup/mysql/$(date +%Y%m%d -d -1day)
     8 
     9 if [ ! -d "${BACKUP_DIR}" ]; then
    10         echo "create backup directory ${BACKUP_DIR}" >> $LOG
    11         mkdir ${BACKUP_DIR}
    12 fi
    13 
    14 
    15 # backup db data
    16 for i in `mysql -uroot -p123456 -e "show databases;"`
    17 do
    18 
    19         if [ "$i" != "Database" ]; then
    20                 echo "start backup $i" >> $LOG
    21                 mysqldump -uroot -p123456 -B "$i" --flush-privileges --single-transaction --master-data=2 --flush-logs --triggers --routines --events --hex-blob | gzip > ${BACKUP_DIR}/backup_"$i"_$(date +%Y%m%d -d -1day).sql.gz
    22                 echo "end backup $i" >> $LOG
    23         fi
    24 
    25 done
    26 
    27 echo "end backup" >> $LOG

    5、定时任务

    1 [root@xugf-test mysql]# crontab -e
    2 0 0 * * * /bin/sh /root/scripts/db_backup.sh >/dev/null 2>&1

    需要把输出重定向到空

    6、重点命令

    前一天yyyymmdd

    date +%Y%m%d -d -1day

    gzip

    cat install.log | gzip > install.log.gz

    mysql命令查询所有库

    mysql -uroot -p123456 -e "show databases;"

    mysqldump命令备份数据库

    mysqldump -uroot -p123456 -B test --flush-privileges --single-transaction --master-data=2 --flush-logs --triggers --routines --events --hex-blob | gzip > /backup/mysql/20180515/backup_test_20180515.sql.gz
  • 相关阅读:
    06.django升级打怪学习记
    05.django升级打怪学习记
    04.django升级打怪学习记
    03.django升级打怪学习记
    02.django升级打怪学习记
    python学习手册笔记——39.元类
    python学习手册笔记——35.异常的设计
    关于我
    [Jenkins]Console Output中文显示问号的问题解决
    [Jenkins]JDK版本过高导致的java.io.IOException: Remote call on xxxx failed
  • 原文地址:https://www.cnblogs.com/xugf/p/9073974.html
Copyright © 2020-2023  润新知