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

MySQL binlog 遠(yuǎn)程備份方法詳解

 更新時(shí)間:2016年05月18日 14:09:27   作者:iVictor  
以前備份binlog時(shí),都是先在本地進(jìn)行備份壓縮,然后發(fā)送到遠(yuǎn)程服務(wù)器中,但是這種備份方式非常的不安全,下面通過(guò)本文給大家介紹MySQL binlog 遠(yuǎn)程備份的方法,需要的朋友一起學(xué)習(xí)吧

以前備份binlog時(shí),都是先在本地進(jìn)行備份壓縮,然后發(fā)送到遠(yuǎn)程服務(wù)器中。但是這其中還是有一定風(fēng)險(xiǎn)的,因?yàn)槿罩镜膫浞荻际侵芷谛缘?,如果在某個(gè)周期中,服務(wù)器宕機(jī)了,硬盤(pán)損壞了,就可能導(dǎo)致這段時(shí)間的binlog就丟失了。

而且,以前用腳本對(duì)遠(yuǎn)程服務(wù)器進(jìn)行備份的方式,有個(gè)缺點(diǎn):無(wú)法對(duì)MySQL服務(wù)器當(dāng)前正在寫(xiě)的二進(jìn)制日志文件進(jìn)行備份。所以,只能等到MySQL服務(wù)器全部寫(xiě)完才能進(jìn)行備份。而寫(xiě)完一個(gè)binlog的時(shí)間并不固定,這就導(dǎo)致備份周期的不確定。

從MySQL5.6開(kāi)始,mysqlbinlog支持將遠(yuǎn)程服務(wù)器上的binlog實(shí)時(shí)復(fù)制到本地服務(wù)器上。

mysqlbinlog的實(shí)時(shí)二進(jìn)制復(fù)制功能并非簡(jiǎn)單的將遠(yuǎn)程服務(wù)器的日志復(fù)制過(guò)來(lái),它是通過(guò)MySQL 5.6公布的Replication API實(shí)時(shí)獲取二進(jìn)制事件。本質(zhì)上,就相當(dāng)于MySQL的從服務(wù)器。與普通服務(wù)器類(lèi)似,主服務(wù)器發(fā)生事件后,一般都會(huì)在0.5~1秒內(nèi)進(jìn)行備份。

備份命令

復(fù)制代碼 代碼如下:

mysqlbinlog --read-from-remote-server --raw --host=192.168.244.145 --port=3306 --user=repl --password=repl --stop-never mysql-bin.000001

解釋如下:

--read-from-remote-server:用于備份遠(yuǎn)程服務(wù)器的binlog。如果不指定該選項(xiàng),則會(huì)查找本地的binlog。

--raw:binlog日志會(huì)以二進(jìn)制格式存儲(chǔ)在磁盤(pán)中,如果不指定該選項(xiàng),則會(huì)以文本形式保存。

--user:復(fù)制的MySQL用戶,只需要授予REPLICATION SLAVE權(quán)限。

--stop-never:mysqlbinlog可以只從遠(yuǎn)程服務(wù)器獲取指定的幾個(gè)binlog,也可將不斷生成的binlog保存到本地。指定此選項(xiàng),代表只要遠(yuǎn)程服務(wù)器不關(guān)閉或者連接未斷開(kāi),mysqlbinlog就會(huì)不斷的復(fù)制遠(yuǎn)程服務(wù)器上的binlog。

mysql-bin.000001:代表從哪個(gè)binlog開(kāi)始復(fù)制。

除了以上選項(xiàng)外,還有以下幾個(gè)選項(xiàng)需要注意:

--stop-never-slave-server-id:在備份遠(yuǎn)程服務(wù)器的binlog時(shí),mysqlbinlog本質(zhì)上就相當(dāng)于一個(gè)從服務(wù)器,該選項(xiàng)就是用來(lái)指定從服務(wù)器的server-id的。默認(rèn)為-1。

--to-last-log:代表mysqlbinlog不僅能夠獲取指定的binlog,還能獲取其后生成的binlog,獲取完了,才終止。如果指定了--stop-never選項(xiàng)則會(huì)隱式打開(kāi)--to-last-log選項(xiàng)。

--result-file:用于設(shè)置遠(yuǎn)程服務(wù)器的binlog,保存到本地的前綴。譬如對(duì)于mysql-bin.000001,如果指定--result-file=/test/backup-,則保存到本地后的文件名為/test/backup-mysql-bin.000001。注意:如果將--result-file設(shè)置為目錄,則一定要帶上目錄分隔符“/”。譬如--result-file=/test/,而不是--result-file=/test,不然保存到本地的文件名為/testmysql-bin.000001。

不足:

這個(gè)方式有個(gè)問(wèn)題,對(duì)于常規(guī)的主從復(fù)制來(lái)說(shuō),如果主從直接的連接斷開(kāi)了,則從會(huì)自動(dòng)再次連接,而對(duì)于mysqlbinlog,如果斷開(kāi)了,并不會(huì)自動(dòng)連接。

解決方案:

可通過(guò)腳本來(lái)彌補(bǔ)上述不足。

#!/bin/sh
BACKUP_BIN=/usr/bin/mysqlbinlog
LOCAL_BACKUP_DIR=/backup/binlog/
BACKUP_LOG=/backup/binlog/backuplog
REMOTE_HOST=192.168.244.145
REMOTE_PORT=3306
REMOTE_USER=repl
REMOTE_PASS=repl
FIRST_BINLOG=mysql-bin.000001
#time to wait before reconnecting after failure
SLEEP_SECONDS=10
##create local_backup_dir if necessary
mkdir -p ${LOCAL_BACKUP_DIR}
cd ${LOCAL_BACKUP_DIR}
## 運(yùn)行while循環(huán),連接斷開(kāi)后等待指定時(shí)間,重新連接
while :
do
 if [ `ls -A "${LOCAL_BACKUP_DIR}" |wc -l` -eq 0 ];then
 LAST_FILE=${FIRST_BINLOG}
 else
 LAST_FILE=`ls -l ${LOCAL_BACKUP_DIR} | grep -v backuplog |tail -n 1 |awk '{print $9}'`
 fi
 ${BACKUP_BIN} --raw --read-from-remote-server --stop-never --host=${REMOTE_HOST} --port=${REMOTE_PORT} --user=${REMOTE_USER} --password=${REMOTE_PASS} ${LAST_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

腳本解讀:

1. 實(shí)際上定義了一個(gè)死循環(huán),如果備份失敗,則10s后重新連接。

2. 第一次運(yùn)行時(shí)需指定FIRST_BINLOG的值,指從哪個(gè)binlog開(kāi)始復(fù)制,一般為mysql-bin.000001。后續(xù)執(zhí)行的時(shí)候就直接獲取備份目錄下最新的binlog,從最新的binlog開(kāi)始復(fù)制。

總結(jié):

1. 如果指定了--raw,mysqlbinlog獲取事件后,并不會(huì)實(shí)時(shí)落盤(pán),而是先保存在本地服務(wù)器的內(nèi)存中,每4K刷盤(pán)一次。這也就減少了頻繁的日志寫(xiě)操作。如果此時(shí)mysqlbinlog和主服務(wù)器之間的連接斷開(kāi)了,則內(nèi)存中的binlog會(huì)馬上刷新到磁盤(pán)中。

2. 盡管mysqlbinlog類(lèi)似于從服務(wù)器,但從服務(wù)器上的relaylog卻是實(shí)時(shí)存盤(pán)的,即從服務(wù)器獲取主服務(wù)器產(chǎn)生的事件后,會(huì)實(shí)時(shí)寫(xiě)入到relaylog中。

3. 如果不指定--raw,這個(gè)時(shí)候會(huì)以文本格式存盤(pán),此時(shí),--result-file=/test/不能指定為目錄,必須明確寫(xiě)上文件名,譬如--result-file=/test/1.sql,此時(shí),mysqlbinlog獲取事件后,是實(shí)時(shí)落盤(pán)的,不會(huì)每4K刷盤(pán)一次。

以上所述是小編給大家介紹的MySQL binlog 遠(yuǎn)程備份教程詳解的相關(guān)知識(shí),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • 如何利用SSH隧道連接遠(yuǎn)程MySQL數(shù)據(jù)庫(kù)

    如何利用SSH隧道連接遠(yuǎn)程MySQL數(shù)據(jù)庫(kù)

    為保護(hù)MySQL數(shù)據(jù)庫(kù)安全,可通過(guò)SSH隧道連接,服務(wù)端僅需開(kāi)放SSH端口,加強(qiáng)密碼策略,客戶端可使用Navicat等工具,或通過(guò)編程(如SpringBoot)實(shí)現(xiàn)端口轉(zhuǎn)發(fā),推薦使用密鑰建立SSH隧道,以免密碼泄露風(fēng)險(xiǎn),詳述了端口轉(zhuǎn)發(fā)的手動(dòng)設(shè)置方法及自動(dòng)化腳本配置
    2024-11-11
  • 遠(yuǎn)程連接mysql報(bào)錯(cuò)“Host?xxx?is?not?allowed?to?connect?to?this?MySQL?server“簡(jiǎn)單解決辦法

    遠(yuǎn)程連接mysql報(bào)錯(cuò)“Host?xxx?is?not?allowed?to?connect?to?th

    這篇文章主要給大家介紹了關(guān)于遠(yuǎn)程連接mysql報(bào)錯(cuò)“Host?xxx?is?not?allowed?to?connect?to?this?MySQL?server“的解決辦法,文中通過(guò)代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • Mysql8創(chuàng)建用戶及賦權(quán)操作實(shí)戰(zhàn)記錄

    Mysql8創(chuàng)建用戶及賦權(quán)操作實(shí)戰(zhàn)記錄

    一般在開(kāi)發(fā)中,我們需要新建一個(gè)賬戶,并賦予某個(gè)數(shù)據(jù)庫(kù)的訪問(wèn)權(quán)限,下面這篇文章主要給大家介紹了關(guān)于Mysql8創(chuàng)建用戶及賦權(quán)操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-04-04
  • Mysql SQL服務(wù)器模式介紹

    Mysql SQL服務(wù)器模式介紹

    這篇文章主要介紹了Mysql SQL服務(wù)器模式介紹,需要的朋友可以參考下MySQL服務(wù)器可以以不同的SQL模式來(lái)操作,并且可以為不同客戶端應(yīng)用不同模式,這樣每個(gè)應(yīng)用程序可以根據(jù)自己的需求來(lái)定制服務(wù)器的操作模式,需要的朋友可以參考下
    2014-12-12
  • MySQL Workbench導(dǎo)出表結(jié)構(gòu)與數(shù)據(jù)的實(shí)現(xiàn)步驟

    MySQL Workbench導(dǎo)出表結(jié)構(gòu)與數(shù)據(jù)的實(shí)現(xiàn)步驟

    MySQL Workbench是一個(gè)強(qiáng)大的數(shù)據(jù)庫(kù)設(shè)計(jì)工具,提供了便捷的數(shù)據(jù)導(dǎo)入導(dǎo)出功能,本文就來(lái)介紹一下MySQL Workbench導(dǎo)出表結(jié)構(gòu)與數(shù)據(jù)的實(shí)現(xiàn)步驟,感興趣的可以了解一下
    2024-05-05
  • MySql數(shù)據(jù)庫(kù)時(shí)間序列間隔查詢方式

    MySql數(shù)據(jù)庫(kù)時(shí)間序列間隔查詢方式

    這篇文章主要介紹了MySql數(shù)據(jù)庫(kù)時(shí)間序列間隔查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • mysqldump數(shù)據(jù)庫(kù)備份參數(shù)詳解

    mysqldump數(shù)據(jù)庫(kù)備份參數(shù)詳解

    這篇文章主要介紹了mysqldump數(shù)據(jù)庫(kù)備份參數(shù)詳解,需要的朋友可以參考下
    2014-05-05
  • Ubuntu20下MySQL?8.0.28?安裝卸載方法圖文教程

    Ubuntu20下MySQL?8.0.28?安裝卸載方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了Ubuntu20下MySQL?8.0.28?安裝卸載方法圖文教程,文中安裝步驟介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)完整步驟記錄

    Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)完整步驟記錄

    最近工作中用到國(guó)產(chǎn)數(shù)據(jù)庫(kù)達(dá)夢(mèng),簡(jiǎn)稱DM,下面這篇文章主要給大家介紹了關(guān)于Mysql遷移DM國(guó)產(chǎn)達(dá)夢(mèng)數(shù)據(jù)庫(kù)完整步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),需要的朋友可以參考下
    2024-07-07
  • 源碼編譯安裝MySQL8.0.20的詳細(xì)教程

    源碼編譯安裝MySQL8.0.20的詳細(xì)教程

    這篇文章主要介紹了源碼編譯安裝MySQL8.0.20的詳細(xì)教程,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05

最新評(píng)論

葵青区| 集安市| 时尚| 平武县| 柘荣县| 荃湾区| 象山县| 贡嘎县| 岱山县| 庐江县| 河北省| 区。| 南岸区| 吕梁市| 灵台县| 贡嘎县| 湾仔区| 晋宁县| 福鼎市| 兰西县| 卓尼县| 越西县| 屏南县| 高雄县| 马关县| 阳山县| 濮阳县| 盘锦市| 饶平县| 桓仁| 铅山县| 平和县| 资中县| 西吉县| 湄潭县| 周至县| 台湾省| 东宁县| 龙州县| 股票| 台湾省|