mysql如何全量备份和增量备份
本篇内容主要讲解“mysql如何全量备份和增量备份”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql如何全量备份和增量备份”吧!
mysql 全量备份:
vim
/root/mysql_bakup
.sh
#!/bin/bash
#Date:2017/5/2
#Author:wangpengtai
#Blog:http://wangpengtai.blog.51cto.com
#AtSunday,wewillbackupthecompleteddatabasesandtheincresedbinarylogduringSaturdaytoSunday.
#Inotherweekdays,weonlybackuptheincreaingbinarylogatthatday!
################################
#thegloblevariablesforMySQL#
################################
DB_USER=
'root'
DB_PASSWORD=
'123456'
DB_PORT=
'3306'
BACKUPDIR=
'/tmp/mysqlbakup'
BACKUPDIR_OLDER=
'/tmp/mysqlbakup_older'
DB_PID=
'/data/mysql/log/mysqld.pid'
DB_SOCK=
'/data/mysql/log/mysql.sock'
LOG_DIR=
'/data/mysql/log'
BACKUP_LOG=
'/tmp/mysqlbakup/backup.log'
DB_BIN=
'/usr/local/mysql/bin'
#timevariablesforcompletedbackup
FULL_BAKDAY=
'Sunday'
TODAY=`
date
+%A`
DATE=`
date
+%Y%m%d`
###########################
#timevariablesforbinlog#
###########################
#liftcycleforsavingbinlog
DELETE_OLDLOG_TIME=$(
date
"-d14dayago"
+%Y%m%d%H%M%S)
#Thestarttimepointtobackupbinlog,theusageofmysqlbinlogis--start-datetime,--stop-datetime,timeformatis%Y%m%d%H%M%S,eg:20170502171054,timezonesis[start-datetime,stop-datetime)
#Thedatetostartbackupbinlogisyesterdayatthisverymoment!
START_BACKUPBINLOG_TIMEPOINT=$(
date
"-d1dayago"
+
"%Y-%m-%d%H:%M:%S"
)
#BINLOG_LIST=`cat/data/mysql/log/mysql-bin.index`
BINLOG_INDEX=
'/data/mysql/log/mysql-bin.index'
##############################################
#Judgethemysqlprocessisrunningornot.#
#mysqlstopreturn1,mysqlrunningreturn0.#
##############################################
function
DB_RUN(){
if
test
-a$DB_PID&&
test
-a$DB_SOCK;
then
return
0
else
return
1
fi
}
###################################################################################################
#Judgethebacupdirectoryisexsitnot.#
#Ifthemysqlbakupdirectorywasexsited,therewilledreturn0.#
#Ifthereisnoamysqlbakupdirectory,thefuctionwillcreatethedirectoryandreturnvalue1.#
###################################################################################################
function
BACKDIR_EXSIT(){
if
test
-d$BACKUPDIR;
then
#echo"$BACKUPDIRwasexist."
return
0
else
echo
"$BACKUPDIRisnotexist,nowcreateit."
mkdir
-pv$BACKUPDIR
return
1
fi
}
###################################################################################################
#Judgethebinlogisconfigedornot.#
#Ifthemysqlbakupdirectorywasexsited,therewilledreturn0.#
#Ifthereisnoamysqlbakupdirectory,thefuctionwillcreatethedirectoryandreturnvalue1.#
###################################################################################################
function
BINLOG_EXSIT(){
if
test
-f$BINLOG_INDEX;
then
#echo"$BACKUPDIRwasexist."
return
0
fi
}
###################################################
#ThefullbackupforallDatabases#
#Thisfunctionisusetobackupthealldatabases.#
###################################################
function
FULL_BAKUP(){
echo
"At`date+%D\%T`:StartingfullbackuptheMySQLDB..."
#rm-fr$BACKUPDIR/db_fullbak_$DATE.sql#fortest!!
$DB_BIN
/mysqldump
--lock-all-tables--flush-logs--master-data=2-u$DB_USER-p$DB_PASSWORD-P$DB_PORT-A|
gzip
>$BACKUPDIR
/db_fullbak_
$DATE.sql.gz
FULL_HEALTH=`
echo
$?`
if
[[$FULL_HEALTH==0]];
then
echo
"At`date+%D\%T`:MySQLDBincresedbackupsuccessfully"
else
echo
"MySQLDBfullbackupfailed!"
fi
}
#python
#>>>withopen('/data/mysql/log/mysql-bin.index','r')asobj:
#...foriinobj:
#...printos.path.basename(i)
#...
#mysql-bin.000006
#mysql-bin.000007
#mysql-bin.000008
#mysql-bin.000009
function
INCREASE_BAKUP(){
echo
"At`date+%D\%T`:StartingincreasedbackuptheMySQLDB..."
$DB_BIN
/mysqladmin
-u$DB_USER-p$DB_PASSWORD-P$DB_PORTflush-logs
$DB_BIN
/mysql
-u$DB_USER-p$DB_PASSWORD-P$DB_PORT-e
"purgemasterlogsbefore${DELETE_OLDLOG_TIME}"
for
i
in
`
cat
$BINLOG_INDEX`
do
$DB_BIN
/mysqlbinlog
-u$DB_USER-p$DB_PASSWORD-P$DB_PORT--start-datetime=
"$START_BACKUPBINLOG_TIMEPOINT"
$i|
gzip
>>$BACKUPDIR
/db_daily_
$DATE.sql.gz
done
#$DB_BIN/mysqlbinlog-u$DB_USER-p$DB_PASSWORD-P$DB_PORT--start-datetime="$START_BACKUPBINLOG_TIME"$LOG_DIR/mysql-bin.[0-9]*|gzip>>$BACKUPDIR/db_daily_$DATE.sql.gz
INCREASE_HEALTH=`
echo
$?`
if
[[$INCREASE_HEALTH==0]];
then
echo
"At`date+%D\%T`:MySQLDBincresedbackupsuccessfully"
else
echo
"MySQLDBincresedbackupfailed!"
fi
}
function
OLDER_BACKDIR_EXSIT(){
if
test
-d$BACKUPDIR_OLDER;
then
#echo"$BACKUPDIR_OLDERwasexist."
return
0
else
echo
"$BACKUPDIR_OLDERisnotexist,nowcreateit."
mkdir
-pv$BACKUPDIR_OLDER
#return1
fi
}
function
BAKUP_CLEANER(){
#movethebackupedfilethatcreatedtimeoutof7daystotheBACKUPDIR_OLDERdirectory
returnkey=`
find
$BACKUPDIR-name
"*.sql.gz"
-mtime+7-
exec
ls
-lh{}\;`
returnkey_old=`
find
$BACKUPDIR_OLDER-name
"*.sql.gz"
-mtime+14-
exec
ls
-lh{}\;`
if
[[$returnkey!=
''
]];
then
echo
"----------------------"
echo
"Movingtheolderbackupedfileoutof7daysto$BACKUPDIR_OLDER."
echo
"Themovedfilelistis:"
find
$BACKUPDIR-name
"*.sql.gz"
-mtime+7-
exec
mv
{}$BACKUPDIR_OLDER\;
echo
"-----------------------"
elif
[[$returnkey_old!=
''
]];
then
#deletethebackupedfilethatcreatedtimeoutof14daysfromBACKUPDIR_OLDERdirectory.
echo
"Deletetheolderbackupedfileoutof14daysfrom$BACKUPDIR_OLDER."
echo
"Thedeletedfileslistis:"
find
$BACKUPDIR_OLDER-name
"*.sql.gz"
-mtime+14-
exec
rm
-fr{}\;
fi
}
####################################
#--------------main----------------#
####################################
function
MAIN(){
DB_RUN
#Judgetheprocessisrunornot,ifnotrun,thescriptwillnotbakupdb
Run_process=`
echo
$?`
echo
$?
if
[[$Run_process==0]];
then
BINLOG_EXSIT
binlog_index=`
echo
$?`
if
[[$binlog_index==0]];
then
echo
"**********START**********"
echo
$(
date
+
"%y-%m-%d%H:%M:%S%A"
)
echo
"~~~~~~~~~~~~~~~~~~~~~~~"
if
[[$TODAY==$FULL_BAKDAY]];
then
echo
"Startcompletedbakup..."
INCREASE_BAKUP
FULL_BAKUP
#fullbackuptoallDB
BAKUP_CLEANER
else
echo
"Startincreaingbakup..."
INCREASE_BAKUP
fi
echo
"~~~~~~~~~~~~~~~~~~~~~~~"
echo
$(
date
+
"%y-%m-%d%H:%M:%S%A"
)
echo
"**********END**********"
else
echo
"**********START**********"
echo
$(
date
+
"%y-%m-%d%H:%M:%S%A"
)
echo
"~~~~~~~~~~~~~~~~~~~~~~~"
echo
"Sorry,MySQLbinlogwasnotconfiged,pleaseconfigthemy.cnffirstly!"
echo
"~~~~~~~~~~~~~~~~~~~~~~~"
echo
$(
date
+
"%y-%m-%d%H:%M:%S%A"
)
echo
"**********END**********"
fi
else
echo
"**********START**********"
echo
$(
date
+
"%y-%m-%d%H:%M:%S%A"
)
echo
"~~~~~~~~~~~~~~~~~~~~~~~"
echo
"Sorry,MySQLwasnotrunning,thedbcouldnotbebackuped!"
echo
"~~~~~~~~~~~~~~~~~~~~~~~"
echo
$(
date
+
"%y-%m-%d%H:%M:%S%A"
)
echo
"**********END**********"
fi
}
#startingruning
BACKDIR_EXSIT$BACKUP_LOG
OLDER_BACKDIR_EXSIT$BACKUP_LOG
MAIN>>$BACKUP_LOG
到此,相信大家对“mysql如何全量备份和增量备份”有了更深的了解,不妨来实际操作一番吧!这里是亿速云网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系本站删除。