最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

MySQL中binlog備份腳本的方法

 更新時(shí)間:2023年04月20日 08:37:50   作者:瀟湘隱者  
這篇文章主要介紹了MySQL中binlog備份腳本分享,這里主要介紹一下我寫(xiě)的MySQL二進(jìn)制日志的備份腳本,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

關(guān)于MySQL的二進(jìn)制日志(binlog),我們都知道二進(jìn)制日志(binlog)非常重要,尤其當(dāng)你需要point to point災(zāi)難恢復(fù)的時(shí)侯,所以我們要對(duì)其進(jìn)行備份。關(guān)于二進(jìn)制日志(binlog)的備份,可以基于flush logs方式先切換binlog,然后拷貝&壓縮到到遠(yuǎn)程服務(wù)器或本地服務(wù)器的其他存儲(chǔ)上,例如掛載的NAS存儲(chǔ),也可以使用mysqlbinlog實(shí)現(xiàn)binlog的備份,可以實(shí)現(xiàn)MySQL二進(jìn)制日志(binlog)的本地備份或遠(yuǎn)程備份。最后將MySQL二進(jìn)制日志(binlog)的備份文件收到磁帶。各個(gè)公司的備份策略或備份工具有所不同,這里不做展開(kāi),我們主要考慮MySQL二進(jìn)制日志(binlog)備份方案/策略盡可能盡善盡美,在一些極端情況下少丟失數(shù)據(jù)。例如,第一種方式,這種備份方式都是周期性的,如果在某個(gè)周期中,遇到一些極端情況,例如服務(wù)器宕機(jī)了,硬盤(pán)損壞了,就可能導(dǎo)致這段時(shí)間的binlog丟失了。而且這個(gè)周期時(shí)間太長(zhǎng),二進(jìn)制日志(binlog)丟失的風(fēng)險(xiǎn)就越大,如果這個(gè)周期太短,頻繁切換binlog也不好。所以還是使用mysqlbinlog來(lái)備份二進(jìn)制日志(binlog),這里主要介紹一下我寫(xiě)的MySQL二進(jìn)制日志的備份腳本,這個(gè)腳本參考了如何遠(yuǎn)程備份MySQL binlog[1]中的腳本,但是在其基礎(chǔ)上做了很多改進(jìn)和完善:

  • 參考資料中的腳本由于使用了循環(huán)操作,不適合在作業(yè)中調(diào)用。一般需要手工執(zhí)行腳本,讓其在后臺(tái)運(yùn)行。遇到服務(wù)器重啟或其他異常情況,此腳本可能出現(xiàn)未能執(zhí)行的情況。

  • 增加了mysql_binlog_backup_job.sh腳本,作業(yè)會(huì)定期調(diào)用此腳本,此腳本會(huì)判斷mysqlbinlog是否還在執(zhí)行二進(jìn)制日志備份。如果遇到了數(shù)據(jù)庫(kù)服務(wù)器重啟等情況,也不會(huì)擔(dān)心MySQL的二進(jìn)制日志(binlog)的備份停掉的問(wèn)題。

  • 不用手工指定第一個(gè)binlog文件參數(shù),采用從數(shù)據(jù)庫(kù)讀取binlog的值.如果是在本地服務(wù)器執(zhí)行binlog的備份,還可以從二進(jìn)制日志索引文件中獲取(參考腳本注釋部分)

  • 使用mysql_config_editor配置賬號(hào)密碼,避免在腳本中使用數(shù)據(jù)庫(kù)用戶的明文密碼。

  • 郵件告警處理。

在使用腳本前,必須配置mailx,創(chuàng)建數(shù)據(jù)庫(kù)連接賬號(hào)

create?user?bkuser@'xxx.xxx.xxx.xxx'?identified?by?"******";
grant??replication?client?on?*.*?to?bkuser@'%';
grant??replication?slave?on?*.*?to?bkuser@'%';

這個(gè)根據(jù)實(shí)際情況調(diào)整,例如我就是使用Xtrabackup的賬號(hào)來(lái)備份MySQL的binlog。 另外,如果在MySQL數(shù)據(jù)庫(kù)服務(wù)器本機(jī)備份binlog,那么就在本機(jī)安全加密登錄,如果是在遠(yuǎn)程服務(wù)器備份binlog的話,就在遠(yuǎn)程服務(wù)器配置

$?mysql_config_editor?set??--login-path=server1_dbbackup?-h?xxx.xxx.xxx.xxx?-ubkuser?-p?-P?3306
Enter?password:

mysql_binlog_backup_job.sh腳本

#!/bin/sh

#########################################################################################
#???????????????????????????????????????????????????????????????????????????????????????#
#?This?script?is?used?for?mysql?binlog?backup.??????????????????????????????????????????#
#???????????????????????????????????????????????????????????????????????????????????????#
#?#######################################################################################
#???????????????????????????????????????????????????????????????????????????????????????#
#?ScriptName????????????:????mysql_binlog_backup_job.sh?????????????????????????????????#
#?Author????????????????:????瀟湘隱者?????????????????????????????????????????????????????#
#?CerateDate????????????:????2017-04-14?????????????????????????????????????????????????#
#?Description???????????:???????????????????????????????????????????????????????????????#
#---------------------------------------------------------------------------------------#
#?????????????????????????作業(yè)中調(diào)用此腳本,然后此腳本去調(diào)用mysql_binlog_backup.sh執(zhí)行??????#
#?????????????????????????MySQL的二進(jìn)制日志備份(將MySQL的二進(jìn)制日志備份到NAS存儲(chǔ)或備份存#
#?????????????????????????儲(chǔ)上),此腳本還會(huì)判斷mysqlbinlog是否在一直在備份二進(jìn)制日志,??#
#?????????????????????????如果是的話,則退出當(dāng)前腳本。如果mysqlbinlog已經(jīng)由于服務(wù)器重???#
#?????????????????????????啟等原因退出了,則會(huì)重新調(diào)用mysql_binlog_backup.sh????????????#
#***************************************************************************************#
#?Version????????Modified?Date????????????Description???????????????????????????????????#
#***************************************************************************************#
#?V.1.0??????????2016-06-20?????create?the?script?for?mysql?binlog?backp????????????????#
#?V.1.1??????????2016-07-26?????fix?some?bug????????????????????????????????????????????#
#?V.1.2??????????2023-04-14?????$FIRST_BINLOG從MySQL中獲取,即使遠(yuǎn)程備份也不用手工??????#
#???????????????????????????????設(shè)定,本地備份也可以這種方式,本地備份默認(rèn)從?????????????#
#????????????????????????????????mysql?binlog?index?file讀取????????????????????????????#
#########################################################################################

#mysql?binlog備份文件的保留天數(shù)
KEEPY_DAYS=7
FIRST_BINLOG=''
LOG_DATE=$(date?+%Y_%m_%d_%H_%M_%S)
BACKUP_DATE=$(date?+%Y_%m_%d_%H_%M_%S)
LOCAL_BACKUP_DIR=/dbbackup/mysql_backup/db_backup/binlog_backup
#MYSQL_BINLOG_INDEX=/data/bin_logs/mysql_binlog.index
MYSQL_CMD=/opt/mysql/mysql8.0/bin/mysql
BACKUP_LOG_PATH=/dbbackup/mysql_backup/logs
ERROR_LOG=${BACKUP_LOG_PATH}/binlog_backup_error_${BACKUP_DATE}.log
FILE_TYPE="mysql_binlog.*"
SQL_TEXT='show?binary?logs'
MAIL_TO="xxxx@xxx.com.cn"
MAIL_FROM="xxxx@xxx.com.cn"
MYSQL_LOGIN_PATH=server1_dbbackup
error()
{
?echo?"$1"?1>&2
?echo?"$1"?>>?${ERROR_LOG}
?echo?"$1"?|?mailx?-s?"The?binlog?backup?on?the?server?`hostname`?failed?,please?check?the?log!"?-r?${MAIL_FROM}?${MAIL_TO}
?exit?1
}

##目錄不存在則創(chuàng)建目錄
if?[?!?-d?$BACKUP_LOG_PATH?];then
???????mkdir?-p?$BACKUP_LOG_PATH
fi

if?[?!?-x?/bin/mailx?];then
????error?"{LOG_DATE}:mailx?did?not?exists!"?
fi

if?[?!?-x?$MYSQL_CMD?];then
???error?"{LOG_DATE}:?mysql?client?did?not?exists!"?
fi
#SQL_RESULT=`mysql?-h${REMOTE_HOST}?-P${PORT}?-u${USER_NAME}?-p${PASSWORD}?${DATABASE_NAME}?-Bse?"${SQL_TEXT}"`
SQL_RESULT=`$MYSQL_CMD?--login-path=${MYSQL_LOGIN_PATH}?-Bse?"${SQL_TEXT}"`
FIRST_BINLOG=`echo?${SQL_RESULT}?|?awk?'{print?$1}'`
echo?$FIRST_BINLOG

if?[?!?$FIRST_BINLOG?];then
???error?"${LOG_DATE}:?please?check?the?mysql?binlog"??
fi

##create?local_backup_dir?if?this?folder?is?not?exists
if?[?!?-d?${LOCAL_BACKUP_DIR}?];then
??mkdir?-p?${LOCAL_BACKUP_DIR}
fi
if?[?!?-e?${MYSQL_BINLOG_INDEX}?];then
??error?"${LOG_DATE}:mysql?binlog?index?file?did?not?exists,?please?check?it!"?
fi

#刪除KEEPY_DAYS天之前的binlog備份文件
find?${LOCAL_BACKUP_DIR}?-name?"${FILE_TYPE}"?-type?f?-mtime?+$KEEPY_DAYS?-delete
#刪除30天前的錯(cuò)誤日志
find?${BACKUP_LOG_PATH}?-name?"binlog_backup_error*.log"???-mtime?30?-delete
process_num=$(ps?-ef?|?grep?-w?mysqlbinlog?|?grep?-v?grep?|wc?-l)

if?[?${process_num}?-ge?1?];then
???????exit?1?
else
??#如果是在本機(jī)備份binlog到NAS存儲(chǔ)或備份存儲(chǔ)上,從二進(jìn)制文件的索引獲取當(dāng)前MySQL數(shù)據(jù)庫(kù)最小的binlog文件
??#如果是遠(yuǎn)程備份二進(jìn)制日志(binlog)的話,則使用下面注釋的腳本獲取
??#FIRST_BINLOG=$(head?-1?${MYSQL_BINLOG_INDEX})
??#FIRST_BINLOG=$(find?${LOCAL_BACKUP_DIR}?-name?"mysql_binlog.*"??-printf?"%p\t%C@\n"?|?sort?-k2?-g?|head?-1?|?awk?'{print?$1}'?|?awk?-F?"/"?'{print?$NF}')?
??echo?${FIRST_BINLOG}
??nohup?sh?/dbbackup/mysql_backup/scripts/mysql_binlog_backup.sh?${FIRST_BINLOG}?${LOCAL_BACKUP_DIR}?${FILE_TYPE}?&
fi

mysql_binlog_backup.sh腳本

#!/bin/sh

#########################################################################################
#???????????????????????????????????????????????????????????????????????????????????????#
#?This?script?is?used?for?mysql?binlog?local?or?remote?backup.??????????????????????????#
#???????????????????????????????????????????????????????????????????????????????????????#
#?#######################################################################################
#???????????????????????????????????????????????????????????????????????????????????????#
#?ScriptName????????????:????mysql_binlog_backup.sh?????????????????????????????????????#
#?Author????????????????:????Kerry??????????????????????????????????????????????????????#
#?CerateDate????????????:????2017-04-14?????????????????????????????????????????????????#
#?Description???????????:???????????????????????????????????????????????????????????????#
#---------------------------------------------------------------------------------------#
#?????????????????????????此腳本參考了https://www.cnblogs.com/ivictor/p/5502240.html????#
#?????????????????????????的腳本,在它的基礎(chǔ)上做了一些改進(jìn),例如,ivitcor中腳本備份binlog#
#?????????????????????????如果服務(wù)器重啟了,則必須手動(dòng)執(zhí)行腳本.......???????????????????#
#***************************************************************************************#
#?Version????????Modified?Date????????????Description???????????????????????????????????#
#***************************************************************************************#
#?V.1.0??????????2016-06-20?????create?the?script?for?mysql?binlog?backp????????????????#
#?V.1.1??????????2016-07-26?????fix?some?bug????????????????????????????????????????????#
#########################################################################################

BACKUP_BIN=/opt/mysql/mysql8.0/bin/mysqlbinlog
BACKUP_LOG_PATH=/dbbackup/mysql_backup/logs
LOG_DATE=$(date?+%Y_%m_%d_%H_%M_%S)
BACKUP_LOG=${BACKUP_LOG_PATH}/binlog_backup.log
ERROR_LOG=${BACKUP_LOG_PATH}/binlog_backup_error_${LOG_DATE}.log
#復(fù)制二進(jìn)制日志的主機(jī),可以遠(yuǎn)程MySQL數(shù)據(jù)庫(kù)也可以是本機(jī)
MYSQL_LOGIN_PATH=server1_dbbackup
#time?to?wait?before?reconnecting?after?failure
SLEEP_SECONDS=10
MAIL_TO="xxx@xxx.com.cn"
MAIL_FROM="xxx@xxx.com.cn"

error()
{
?echo?"$1"?1>&2
?echo?"$1"?>>?${ERROR_LOG}
?echo?"$1"?|?mailx?-s?"The?binlog?backup?on?the?server?`hostname`?failed?,please?check?the?log!"?-r?${MAIL_FROM}?${MAIL_TO}
?exit?1
}
##目錄不存在則創(chuàng)建目錄
if?[?!?-d?$BACKUP_LOG_PATH?];then
???????mkdir?-p?$BACKUP_LOG_PATH
fi


if?[?"$#"?-ne?3];then???
????error?"${LOG_DATE}:you?must?input?3?arguments"?
fi

if?[?!?$1?];then
????error?"${LOG_DATE}:first_binlog?arguments?is?null"?
else
????FIRST_BINLOG=$1
fi

if?[?!?$2?];then
????error?"${LOG_DATE}:local_backup_dir?arguments?is?null"?
else
????LOCAL_BACKUP_DIR=$2
fi

if?[?!?$3?];then
????error?"${LOG_DATE}:file_type?arguments?is?null"?
else
????FILE_TYPE=$3
fi
##檢查mysqlbinlog二進(jìn)制文件是否存在
if?[?!?-x?${BACKUP_BIN}?];then
???????error?"${LOG_DATE}:mysqlbinlog?did?not?exists,?please?check?it!"?
fi
cd?${LOCAL_BACKUP_DIR}

##?運(yùn)行while循環(huán),連接斷開(kāi)后等待指定時(shí)間,重新連接
while?:
do
??#如果當(dāng)前備份二進(jìn)制日志目錄為空,則使用MySQL實(shí)例最小的二進(jìn)制日志文件名
??if?[?`ls?-A?"${LOCAL_BACKUP_DIR}"?|wc?-l`?-eq?0?];then
?????LAST_BINLOG_FILE=${FIRST_BINLOG}
??else
?????#LAST_FILE=`ls?-l?${LOCAL_BACKUP_DIR}?|?grep?-v?backuplog?|tail?-n?1?|awk?'{print?$9}'`
?????#echo?${LOCAL_BACKUP_DIR}
?????#echo?${FILE_TYPE}
?????#取mysqlbinlog備份的最后一個(gè)binlog文件名
?????LAST_BINLOG_FILE=`find?${LOCAL_BACKUP_DIR}?-name?"${FILE_TYPE}"??-printf?"%p\t%C@\n"?|?sort?-k2?-g?|tail?-1?|?awk?'{print?$1}'?|?awk?-F?"/"?'{print?$NF}'`
??fi
??#${BACKUP_BIN}?--login-path=${MYSQL_LOGIN_PATH}?--read-from-remote-server?--raw?--stop-never?--host=${REMOTE_HOST}?--port=${REMOTE_PORT}??${LAST_BINLOG_FILE}
??${BACKUP_BIN}?--login-path=${MYSQL_LOGIN_PATH}?--read-from-remote-server?--raw?--stop-never???${LAST_BINLOG_FILE}
??echo?"`date?+"%Y/%m/%d?%H:%M:%S"`?mysqlbinlog停止,返回代碼:$?"?|?tee?-a?${BACKUP_LOG}
??echo?"${SLEEP_SECONDS}秒后再次連接并繼續(xù)備份"?|?tee?-a?${BACKUP_LOG}??
??sleep?${SLEEP_SECONDS}
done

配置作業(yè)

*/10?*?*?*?*?/dbbackup/mysql_backup/scripts/mysql_binlog_backup_job.sh?>>?/dbbackup/mysql_backup/logs/mysql_binlog_back.log?2>&1

參考資料

https://www.cnblogs.com/ivictor/p/5502240.html

到此這篇關(guān)于MySQL中binlog備份腳本分享的文章就介紹到這了,更多相關(guān)MySQL中binlog備份腳本內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL表字段時(shí)間設(shè)置默認(rèn)值

    MySQL表字段時(shí)間設(shè)置默認(rèn)值

    很多人可能會(huì)把日期類(lèi)型的字段的類(lèi)型設(shè)置為 date或者 datetime,但是這些不是當(dāng)前時(shí)間,那么如何把字段時(shí)間設(shè)置成當(dāng)前時(shí)間,本文就具體來(lái)介紹一下
    2021-05-05
  • xampp中修改mysql默認(rèn)空密碼(root密碼)的方法分享

    xampp中修改mysql默認(rèn)空密碼(root密碼)的方法分享

    以前開(kāi)發(fā)我一直都是用的phpnow做php開(kāi)發(fā)環(huán)境,phpnow的特點(diǎn)就是一鍵安裝,安裝的時(shí)候會(huì)要求用戶輸入mysql的root密碼。今天由于客戶機(jī)器使用的xampp作為開(kāi)發(fā)環(huán)境,所以碰到了修改mysql默認(rèn)空密碼的問(wèn)題
    2014-04-04
  • MySQL中delimiter關(guān)鍵字的使用解讀

    MySQL中delimiter關(guān)鍵字的使用解讀

    這篇文章主要介紹了MySQL中delimiter關(guān)鍵字的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析

    基于Redo Log和Undo Log的MySQL崩潰恢復(fù)解析

    這篇文章主要介紹了基于Redo Log和Undo Log的MySQL崩潰恢復(fù)流程,點(diǎn)進(jìn)來(lái)的小伙伴不要錯(cuò)過(guò)奧
    2021-08-08
  • 一文了解MYSQL三大范式和表約束

    一文了解MYSQL三大范式和表約束

    范式是"符合某一種級(jí)別的關(guān)系模式的集合,表示一個(gè)關(guān)系內(nèi)部各屬性之間的聯(lián)系的合理化程度",下面這篇文章主要給大家介紹了關(guān)于MYSQL三大范式和表約束的相關(guān)資料,需要的朋友可以參考下
    2022-04-04
  • Mysql提升索引效率優(yōu)化的八種方法總結(jié)

    Mysql提升索引效率優(yōu)化的八種方法總結(jié)

    索引實(shí)際上也是一張表,保存了主鍵和索引的字段,并且指向?qū)嶓w表的記錄,所以索引也是需要占用空間的,這篇文章主要給大家介紹了關(guān)于Mysql提升索引效率優(yōu)化的八種方法,需要的朋友可以參考下
    2024-04-04
  • MySQL主從配置學(xué)習(xí)筆記

    MySQL主從配置學(xué)習(xí)筆記

    在本篇文章里小編給大家整理的是關(guān)于MySQL主從配置學(xué)習(xí)筆記相關(guān)內(nèi)容,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • show engine innodb status顯示信息不全如何解決

    show engine innodb status顯示信息不全如何解決

    執(zhí)行 show engine innodb status\G 時(shí),顯示的信息不全,DEADLOCK相關(guān)信息太多,后面的都沒(méi)了
    2012-11-11
  • mysql通過(guò)Navicat分區(qū)實(shí)操講解

    mysql通過(guò)Navicat分區(qū)實(shí)操講解

    在本文里我們給大家整理了關(guān)于mysql通過(guò)Navicat分區(qū)的相關(guān)知識(shí)點(diǎn),需要的朋友們跟著學(xué)習(xí)參考下。
    2019-03-03
  • MySQL如何保證備份數(shù)據(jù)的一致性詳解

    MySQL如何保證備份數(shù)據(jù)的一致性詳解

    在高并發(fā)的場(chǎng)景下,大量的請(qǐng)求直接訪問(wèn)Mysql很容易造成性能問(wèn)題,下面這篇文章主要給大家介紹了關(guān)于MySQL如何保證備份數(shù)據(jù)一致性的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2022-05-05

最新評(píng)論

银川市| 海安县| 鹤壁市| 保山市| 长葛市| 鹿泉市| 林西县| 庆安县| 灵石县| 万全县| 山西省| 黑水县| 沂水县| 商河县| 新民市| 四会市| 河源市| 页游| 靖州| 阿荣旗| 石屏县| 辽宁省| 绵阳市| 洪泽县| 宜丰县| 剑阁县| 永善县| 利川市| 福泉市| 师宗县| 郯城县| 布拖县| 湟中县| 横山县| 车致| 台南县| 周宁县| 栖霞市| 禄劝| 开原市| 双城市|