mysql数据库备份(完整+增量)

  1. main.yml
[admin@ansible-001 mysql-backup]$cat  tasks/main.yml 
- name: Copy Backup Scripts
  copy:
    src: "{{ item }}"
    dest: /home/app/shell/
    owner: root
    group: root
    mode: 0600
  loop:
    - Mysql_FullBak.sh
    - Mysql_DailyBak.sh

- name: Touch DB Passwd.txt
  copy:
    content: 'Sdaa@12345'
    dest: /home/app/shell/.pw.txt
    owner: root
    group: root
    mode: 0600

- name: Add Cron Mysql Full Backup
  cron: 
    name: Mysql Full Backup
    weekday: "7"
    minute: "0"
    hour: "2"
    job: sh /home/app/shell/Mysql_FullBak.sh
    user: root
    
- name: Add Cron Mysql Daily Backup
  cron:
    name: Mysql Daily Backup
    weekday: "1-6"
    minute: "0"
    hour: "3"
    job: sh /home/app/shell/Mysql_DailyBak.sh
    user: root
  1. Mysql_FullBak.sh
[admin@ansible-001 files]$cat Mysql_FullBak.sh
#!/bin/bash

DBUser="root"
DBPass=$(cat /home/app/shell/.pw.txt)
FileDate=$(date +%Y%m%d)
BakDir=/Backup
FileName=${FileDate}.sql
LogFile=${BakDir}/bak.log

if [ ! -d ${BakDir} ];then
  mkdir -p ${BakDir}
fi

Begin=$(date +"%Y-%m-%d %H:%M:%S")

/home/app/mysql/bin/mysqldump -u${DBUser} -p${DBPass} --quick --events --routines --triggers --flush-logs --master-data=2 --all-databases | pigz -p 8 > ${BakDir}/${FileName} && BakState=$(echo OK) || BakState=$(echo Failure) 

End=$(date +"%Y-%m-%d %H:%M:%S")

cat >> ${LogFile} << EOF
--------xxcar mysql full bakcup --------------
Start Time:${Begin}
End   Time: ${End}
Back State: ${BakState}

EOF

3.Mysql_DailyBak.sh

[zhaowei@ansible-001 files]$cat Mysql_DailyBak.sh
#!/bin/bash

DBUser="usopp"
DBPass=$(cat /home/app/shell/.pw.txt)
MysqlDir=/home/app/mysql
DataDir=${MysqlDir}/data
BinDir=${MysqlDir}/bin
BinIndex=${DataDir}/mysql-bin.index
BakDir=/Backup
BakDirDaily=${BakDir}/daily
LogFile=${BakDir}/bak.log

${BinDir}/mysqladmin -u${DBUser} -p${DBPass} flush-logs
Counter=$(wc -l ${BinIndex} | awk '{print $1}')
NextNum=0
Incre=()

if [ ! -d ${BakDirDaily} ];then
  mkdir ${BakDirDaily}
fi
   

for i in `cat ${BinIndex}`
do 
  base=`basename $i`
  NextNum=`expr $NextNum + 1`
  if [ $NextNum -lt $Counter ];then
    dest=${BakDirDaily}/$base
    if ( ! test -e $dest );then
       cp ${DataDir}/$base ${BakDirDaily}
       Incre[${#Incre[@]}]=$base
    fi
   fi
done

echo -e "\n---xxcar mysql Incremental Backup ---" >> $LogFile
for i in ${Incre[@]}
do
 echo $i >> $LogFile
done
echo  backup time:`date +"%Y-%m-%d %H:%M:%S"`  >> $LogFile
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值