【MySQL】Xtrabackup備份及恢復指令碼
簡介:
此備份指令碼的策略是每週日和週三進去全備 其餘每天增量備份。
# 備份指令碼XtraBackup.sh:
#!/bin/bash
# filename : XtraBackup.sh
# Author : wang
day=`date +%w`
dt=`date +%Y%m%d`
lastday=`date -d '1 days ago' +%Y%m%d`
user=root
pwd='xxxxx'
log=backuplog.`date +%Y%m%d`
case $day in
0)
# Sunday Full backup
find /backup/ -name "xtra_*" -mtime +6 -exec rm -rf {} \;
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp /backup/xtra_base_$dt > /tmp/$log 2>&1
;;
1)
# Monday Relatively Sunday's incremental backup
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp --incremental /backup/xtra_inc_$dt --incremental-basedir=/backup/xtra_base_$lastday > /tmp/$log 2>&1
;;
2)
# Tuesday Compared with Monday's incremental backup
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp --incremental /backup/xtra_inc_$dt --incremental-basedir=/backup/xtra_inc_$lastday > /tmp/$log 2>&1
;;
3)
# Wednesday Full backup
find /backup/ -name "xtra_*" -mtime +6 -exec rm -rf {} \;
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp /backup/xtra_base_$dt > /tmp/$log 2>&1
;;
4)
# Thursday Relatively Wednesday's incremental backup
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp --incremental /backup/xtra_inc_$dt --incremental-basedir=/backup/xtra_base_$lastday > /tmp/$log 2>&1
;;
5)
# Friday Compared with Thursday's incremental backup
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp --incremental /backup/xtra_inc_$dt --incremental-basedir=/backup/xtra_inc_$lastday > /tmp/$log 2>&1
;;
6)
# Saturday Compared with Friday's incremental backup
innobackupex --defaults-file=/etc/my.cnf --user=$user --password=$pwd --no-timestamp --incremental /backup/xtra_inc_$dt --incremental-basedir=/backup/xtra_inc_$lastday > /tmp/$log 2>&1
;;
esac
find /tmp -mtime +6 -type f -name 'backuplog.*' -exec rm -rf {} \;
# 全庫恢復指令碼 xtrabackup_recover.sh:
#!/bin/bash
# filename : xtrabackup_recover.sh
# Author : wang
day=`date +%w`
dt=`date +%Y%m%d`
lastday=`date -d '1 days ago' +%Y%m%d`
lasttwoday=`date -d '2 days ago' +%Y%m%d`
lastthreeday=`date -d '3 days ago' +%Y%m%d`
user=root
pwd='xxxxxxx'
log=recoverlog.`date +%Y%m%d`
datefile=/mysqldata
case $day in
0)
# Sunday Recover Database
innobackupex --apply-log /backup/xtra_base_$dt > /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$dt >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$dt/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$dt/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
1)
# Monday Recover Database
innobackupex --apply-log --redo-only /backup/xtra_base_$lastday > /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lastday/ --incremental-dir=/backup/xtra_inc_$dt/ >> /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lastday >> /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$lastday >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$lastday/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$lastday/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
2)
# Tuesday Recover Database
innobackupex --apply-log --redo-only /backup/xtra_base_$lasttwoday > /tmp/$log 2>&1
innobackupex --apply-log --redo-only /backup/xtra_base_$lasttwoday/ --incremental-dir=/backup/xtra_inc_$lastday/ >> /tmp/$log 2>&innobackupex --apply-log /backup/xtra_base_$lasttwoday/ --incremental-dir=/backup/xtra_inc_$dt/ >> /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lasttwoday >> /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$lasttwoday >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$lasttwoday/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$lasttwoday/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
3)
# Wednesday Recover Database
innobackupex --apply-log /backup/xtra_base_$dt > /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$dt >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$dt/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$dt/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
4)
# Thursday Recover Database
innobackupex --apply-log --redo-only /backup/xtra_base_$lastday > /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lastday/ --incremental-dir=/backup/xtra_inc_$dt/ >> /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lastday >> /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$lastday >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$lastday/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$lastday/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
5)
# Friday Recover Database
innobackupex --apply-log --redo-only /backup/xtra_base_$lasttwoday > /tmp/$log 2>&1
innobackupex --apply-log --redo-only /backup/xtra_base_$lasttwoday/ --incremental-dir=/backup/xtra_inc_$lastday/ >> /tmp/$log 2>&innobackupex --apply-log /backup/xtra_base_$lasttwoday/ --incremental-dir=/backup/xtra_inc_$dt/ >> /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lasttwoday >> /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$lasttwoday >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$lasttwoday/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$lasttwoday/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
6)
# Saturday Recover Database
innobackupex --apply-log --redo-only /backup/xtra_base_$lastthreeday > /tmp/$log 2>&1
innobackupex --apply-log --redo-only /backup/xtra_base_$lastthreeday/ --incremental-dir=/backup/xtra_inc_$lasttwoday/ >> /tmp/$log 2>&1
innobackupex --apply-log --redo-only /backup/xtra_base_$lastthreeday/ --incremental-dir=/backup/xtra_inc_$lastday/ >> /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lastthreeday/ --incremental-dir=/backup/xtra_inc_$dt/ >> /tmp/$log 2>&1
innobackupex --apply-log /backup/xtra_base_$lastthreeday >> /tmp/$log 2>&1
service mysqld stop
rm -rf $datefile/*
innobackupex --defaults-file=/etc/my.cnf --copy-back /backup/xtra_base_$lastthreeday >> /tmp/$log 2>&1
chown -R mysql:mysql $datefile
service mysqld start
binlog=`cat /backup/xtra_base_$lastthreeday/xtrabackup_binlog_info|awk '{print $1}'`
pos=`cat /backup/xtra_base_$lastthreeday/xtrabackup_binlog_info|awk '{print $2}'`
mysqlbinlog --no-defaults --start-position=$pos /mysqllog/$binlog | mysql -u$user -p$pwd
;;
esac
find /tmp -mtime +6 -type f -name 'recoverlog.*' -exec rm -rf {} \;
相關文章
- 【Xtrabackup】Xtrabackup全備、增量備份及恢復示例
- MySQL備份與恢復——基於Xtrabackup物理備份恢復MySql
- 【Mysql】xtrabackup 備份和恢復測試MySql
- Xtrabackup備份恢復原理
- mysql備份和恢復測試(一)--xtrabackupMySql
- 使用xtrabackup對mysql進行備份和恢復MySql
- docker 中 MySQL 備份及恢復DockerMySql
- MySQL運維實戰之備份和恢復(8.1)xtrabackup全量備份MySql運維
- MySQL 5.6 xtrabackup 全量和增量的備份和恢復MySql
- Percona XtraBackup 2.4 xtrabackup全量、增量備份恢復流程
- RMAN備份恢復測試指令碼指令碼
- Xtrabackup之innobackupex備份恢復詳解薦
- Mysql備份恢復MySql
- mysql 備份恢復MySql
- MySQL:xtrabackup備份MySql
- XtraBackup備份MySQLMySql
- Oracle備份恢復之熱備份恢復及異機恢復Oracle
- Xtrabackup2.4.8備份、還原、恢復Mysql5.7.19實操MySql
- Xtrabackup每週增量備份指令碼程式指令碼
- 【MySQL】MySQL備份和恢復MySql
- Percona XtraBackup 實現全備&增量備份與恢復
- MySQL備份與恢復MySql
- Mysql備份和恢復MySql
- xtrabackup備份mysql innodbMySql
- 恢復目錄資料庫備份指令碼資料庫指令碼
- Mysql備份與恢復(1)---物理備份MySql
- mysql備份指令碼MySql指令碼
- 備份與恢復系列 七 續 catalog中的備份指令碼指令碼
- mysql innobackupex增量備份恢復MySql
- MySql邏輯備份恢復MySql
- Mysql的備份與恢復MySql
- mysql備份恢復測試MySql
- MySQL 備份和恢復 一MySql
- Mysql 備份與恢復 二MySql
- 基於percona xtrabackup 2.4.14的增量備份恢復還原mysql 5.6MySql
- xtrabackup和innobackuppex的安裝和備份(含增量備份)已經恢復
- MySQL 非常規恢復與物理備份恢復MySql
- Mysql備份與恢復(2)---邏輯備份MySql