用innobackup結合計劃任務對mysql作備份

寫個腳本讓其自動徹底和增量備份
徹底備份mysql

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 //判斷昨天作的是徹底備份
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
//昨天既沒有作增量備份,又沒有作徹底備份,則作一次徹底備份。
fisql

加權限:
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
相關文章
相關標籤/搜索