用innobackup結合計劃任務對mysql做備份
阿新 • • 發佈:2018-06-28
art 不存在 文件的 enable tab log日誌 判斷 mkdir log 寫個腳本讓其自動完全和增量備份
完全備份 innobackupex --user $user --password $pass --incremental /backup/newbak${d1} --incremental-basedir=${dir1} --no-timestamp //指定昨天備份的完全備份文件
elif [ -e ${dir2} ];then //判斷昨天做的是增量備份
innobackupex --user $user --password $pass --incremental /backup/newbak${d1} --incremental-basedir=${dir2} --no-timestamp //指定昨天備份的增量備份文件
else
innobackupex --user $user --password $pass /backup/allbak${d1} --no-timestamp
//昨天既沒有做增量備份,又沒有做完全備份,則做一次完全備份。
fi
完全備份
vim /root/allbak.sh #!/bin/bash [ ! -e /backup ]&& mkdir /backup //新建個文件夾專門放備份文件的 day=`date +%F` //定義日期是時間 user=root pass=123456 innobackupex --user $user --password $pass /backup/allbak${day} --no-timestamp //用innobackupex做完全備份 mysql -u$user -p$pass -e "flush logs" ``` //啟用binlog日誌,每次完全備份之後,刷新一遍binlog日誌
vim /root/newbak.sh
#!/bin/bash
d1=date +%F
//定義時間,用日期來區分
d2=date +%F -d "-1 days"
//找到昨天的日期,好指明上一次備份的備份文件
dir1=/backup/allbak${d2} //昨天做的完全備份文件
dir2=/backup/newbak${d2} //昨天做的增量備份文件
user=root
pass=123456
[ ! -e /backup ]&& mkdir /backup //如果文件不存在,則創建文件夾
if [ -e ${dir1} ];then //判斷昨天做的是完全備份
elif [ -e ${dir2} ];then //判斷昨天做的是增量備份
innobackupex --user $user --password $pass --incremental /backup/newbak${d1} --incremental-basedir=${dir2} --no-timestamp //指定昨天備份的增量備份文件
innobackupex --user $user --password $pass /backup/allbak${d1} --no-timestamp
//昨天既沒有做增量備份,又沒有做完全備份,則做一次完全備份。
fi
加權限:
chmod +x /root/allbak.sh
chmod +x /root/newbak.sh
寫計劃任務:
crontab -e
00 03 * * 1 /root/allbak.sh &>/dev/null //每周一的淩晨3點執行完全備份
00 04 * * 2-7 /root/newbak.sh & >/dev/null //每周二到周7的淩晨4點執行增量備份
重啟crond服務
systemctl restart crond
systemctl enable crond
用innobackup結合計劃任務對mysql做備份