Xtrabackup定时备份数据库脚本
2017-09-18 14:18
453 查看
定时备份MySQL数据库
脚本内容:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | #!/bin/bash ## 备份计划任务## ## 每天凌晨1:30一次全量备份## 每天间隔1小时一次增量备份## 30 1 * * * backup.sh full## 00 * * * * backup.sh inc#### 恢复数据步骤:## (1)、查看备份日志,找到全量备份和增量备份的关系(注意增量备份的顺序)#### cat ${BACKUP_BASE_DIR}/${INC_BASE_LIST}## (2)、全量备份## innobackupex --defaults-file=/etc/my.cnf --apply-log ${BACKUP_BASE_DIR}/full_dir#### (3)、第一个增量## innobackupex --defaults-file=/etc/my.cnf --apply-log ${BACKUP_BASE_DIR}/full_dir \## --incremental-dir=${BACKUP_BASE_DIR}/one_inc_dir#### (4)、第二个增量## innobackupex --defaults-file=/etc/my.cnf --apply-log ${BACKUP_BASE_DIR}/full_dir \## --incremental-dir=${BACKUP_BASE_DIR}/two_inc_dir#### (5)、恢复数据## innobackupex --defaults-file=/etc/my.cnf --copy-back ${BACKUP_BASE_DIR}/full_dir PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin BACKUP_BASE_DIR="/backup/xtrabackup"INC_BASE_LIST="${BACKUP_BASE_DIR}/inc_list.txt"XTRABACKUP_PATH="/usr/local/xtrabackup/bin/innobackupex" MYSQL_CNF="/etc/my.cnf"MYSQL_HOSTNAME=127.0.0.1MYSQL_USERNAME=rootMYSQL_PASSWORD=w7tQ5NNWWRk LOCK_FILE=/tmp/innobackupex.lockTHREAD=3 mkdir -p ${BACKUP_BASE_DIR}CURRENT_BACKUP_PATH="${BACKUP_BASE_DIR}/$(date +%F_%H-%M)"[[ -d ${CURRENT_BACKUP_PATH} ]] && CURRENT_BACKUP_PATH="${BACKUP_BASE_DIR}/$(date +%F_%H-%M-%S)" print_help(){ echo "--------------------------------------------------------------" echo "Usage: $0 full | inc | help " echo "--------------------------------------------------------------" exit 1} [[ $# -lt 1 || "$1" == "help" ]] && print_help [[ -f "$LOCK_FILE" ]] && echo -e "Usage: rm -f $LOCK_FILE\nUsage: chattr -i $LOCK_FILE && rm -f $LOCK_FILE" && exit 1 FullBackup(){ touch $LOCK_FILE chattr +i $LOCK_FILE local rc=0 ${XTRABACKUP_PATH} \ --defaults-file=${MYSQL_CNF} \ --user=${MYSQL_USERNAME} \ --password=${MYSQL_PASSWORD} \ --host=${MYSQL_HOSTNAME} \ --parallel=${THREAD} \ --no-timestamp ${CURRENT_BACKUP_PATH} > ${CURRENT_BACKUP_PATH}_full.log 2>&1 grep ".*\ completed\ OK\!" ${CURRENT_BACKUP_PATH}_full.log > /dev/null 2>&1 if [ $? -ne 0 ];then rc=1 [[ -d ${CURRENT_BACKUP_PATH} && $(pwd) != "/" ]] && rm -rf ${CURRENT_BACKUP_PATH} else echo "NULL|${CURRENT_BACKUP_PATH}|full" >> ${INC_BASE_LIST} [[ -d ${CURRENT_BACKUP_PATH} && $(pwd) != "/" ]] && chattr +i ${CURRENT_BACKUP_PATH} || rc=1 fi chattr -i ${LOCK_FILE} rm -f $LOCK_FILE chattr +a ${INC_BASE_LIST} return $rc} IncBackup(){ touch $LOCK_FILE chattr +i $LOCK_FILE local rc=0 PREV_BACKUP_DIR=$(sed '/^$/d' ${INC_BASE_LIST} | tail -1 | awk -F '|' '{print $2}') ${XTRABACKUP_PATH} \ --defaults-file=${MYSQL_CNF} \ --user=${MYSQL_USERNAME} \ --password=${MYSQL_PASSWORD} \ --host=${MYSQL_HOSTNAME} \ --no-timestamp --incremental ${CURRENT_BACKUP_PATH} \ --incremental-basedir=${PREV_BACKUP_DIR} > ${CURRENT_BACKUP_PATH}_inc.log 2>&1 grep ".*\ completed\ OK\!" ${CURRENT_BACKUP_PATH}_inc.log > /dev/null 2>&1 if [ $? -ne 0 ];then rc=1 [[ -d ${CURRENT_BACKUP_PATH} && $(pwd) != "/" ]] && rm -rf ${CURRENT_BACKUP_PATH} else echo "${PREV_BACKUP_DIR}|${CURRENT_BACKUP_PATH}|inc" >> ${INC_BASE_LIST} [[ -d ${CURRENT_BACKUP_PATH} && $(pwd) != "/" ]] && chattr +i ${CURRENT_BACKUP_PATH} || rc=1 fi chattr -i ${LOCK_FILE} rm -f $LOCK_FILE chattr +a ${INC_BASE_LIST} return $rc} ## 全量备份if [ "$1" == "full" ];then FullBackupfi ## 增量备份if [ "$1" == "inc" ];then ## 判断上一次备份是否存在,无则进行全量备份 if [[ ! -f ${INC_BASE_LIST} || $(sed '/^$/d' ${INC_BASE_LIST} | wc -l) -eq 0 ]];then FullBackup else IncBackup fifi ## 删除14天前的备份if [[ -d ${BACKUP_BASE_DIR} && $(pwd) != "/" ]];then find ${BACKUP_BASE_DIR} -name "$(date -d '14 days ago' +'%F')_*" | xargs chattr -i find ${BACKUP_BASE_DIR} -name "$(date -d '14 days ago' +'%F')_*" | xargs rm -rffi |
加入计划任务
123 | crontab -e30 1 * * * /home/sh/backup.sh full00 */6 * * * /home/sh/backup.sh inc |
mysql
相关文章推荐
- Xtrabackup数据库的数据备份和还原
- 【mysql】使用xtrabackup在线增量备份及恢复数据库
- 数据库定时备份脚本
- Xtrabackup数据库备份工具
- Xtrabackup数据库的数据备份和还原
- MySQL Study之--MySQL innodb引擎备份工具XtraBackup之三(数据库增量备份)
- crontab定时执行php脚本备份数据库
- Oracle 创建定时计划备份数据库脚本。
- oracle导入导出命令详解(附数据库每天定时备份脚本)
- Xtrabackup数据库的数据备份和还原
- shell脚本采用crontab定时备份数据库日志
- xtrabackup自动备份脚本
- 实战:XtraBackup for mysql 5.6备份脚本
- Xtrabackup数据库的数据备份和还原
- SQL Server远程定时备份数据库脚本
- Xtrabackup数据库的数据备份和还原
- crontab定时执行php脚本备份数据库
- xtrabackup<三、增量备份脚本>
- mysql备份还原-xtrabackup2.2.3工具innobackupex脚本用法详解
- Xtrabackup数据库的数据备份和还原