欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySQL binlog 遠程備份方法詳解

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

以前備份binlog時,都是先在本地進行備份壓縮,然后發(fā)送到遠程服務(wù)器中。但是這其中還是有一定風險的,因為日志的備份都是周期性的,如果在某個周期中,服務(wù)器宕機了,硬盤損壞了,就可能導致這段時間的binlog就丟失了。

而且,以前用腳本對遠程服務(wù)器進行備份的方式,有個缺點:無法對MySQL服務(wù)器當前正在寫的二進制日志文件進行備份。所以,只能等到MySQL服務(wù)器全部寫完才能進行備份。而寫完一個binlog的時間并不固定,這就導致備份周期的不確定。

從MySQL5.6開始,mysqlbinlog支持將遠程服務(wù)器上的binlog實時復制到本地服務(wù)器上。

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

備份命令

復制代碼 代碼如下:

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:用于備份遠程服務(wù)器的binlog。如果不指定該選項,則會查找本地的binlog。

--raw:binlog日志會以二進制格式存儲在磁盤中,如果不指定該選項,則會以文本形式保存。

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

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

mysql-bin.000001:代表從哪個binlog開始復制。

除了以上選項外,還有以下幾個選項需要注意:

--stop-never-slave-server-id:在備份遠程服務(wù)器的binlog時,mysqlbinlog本質(zhì)上就相當于一個從服務(wù)器,該選項就是用來指定從服務(wù)器的server-id的。默認為-1。

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

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

不足:

這個方式有個問題,對于常規(guī)的主從復制來說,如果主從直接的連接斷開了,則從會自動再次連接,而對于mysqlbinlog,如果斷開了,并不會自動連接。

解決方案:

可通過腳本來彌補上述不足。

#!/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}
## 運行while循環(huán),連接斷開后等待指定時間,重新連接
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. 實際上定義了一個死循環(huán),如果備份失敗,則10s后重新連接。

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

總結(jié):

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

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

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

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

相關(guān)文章

  • 通過mysqladmin遠程管理mysql的方法

    通過mysqladmin遠程管理mysql的方法

    在一些特殊場景下,想要遠程重啟mysql,以便讓某些修改能及時的生效,但是mysql并沒有提供遠程重啟的功能,唯一能做的就是遠程關(guān)閉mysql服務(wù)
    2013-03-03
  • PHP使用mysqli擴展連接MySQL數(shù)據(jù)庫

    PHP使用mysqli擴展連接MySQL數(shù)據(jù)庫

    這篇文章主要介紹了PHP使用mysqli擴展連接MySQL數(shù)據(jù)庫,需要的朋友可以參考下
    2014-08-08
  • 基于MySQL的存儲引擎與日志說明(全面講解)

    基于MySQL的存儲引擎與日志說明(全面講解)

    下面小編就為大家分享一篇基于MySQL的存儲引擎與日志說明(全面講解),具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • MySql數(shù)據(jù)庫基礎(chǔ)知識點總結(jié)

    MySql數(shù)據(jù)庫基礎(chǔ)知識點總結(jié)

    這篇文章主要介紹了MySql數(shù)據(jù)庫基礎(chǔ)知識點,總結(jié)整理了mysql數(shù)據(jù)庫基本創(chuàng)建、查看、選擇、刪除以及數(shù)據(jù)類型相關(guān)操作技巧,需要的朋友可以參考下
    2020-06-06
  • 10個mysql中select語句的簡單用法

    10個mysql中select語句的簡單用法

    本篇文章主要講述的是MySQL SELECT句法的簡單分析,我們大家都知道MySQL數(shù)據(jù)庫是我們大家經(jīng)常使用的數(shù)據(jù)庫,其相關(guān)的應(yīng)用也是備受關(guān)注的,那么以下的文章主要是對MySQL SELECT句法的簡單分析。
    2014-08-08
  • mysql 8.0.11 壓縮包版安裝配置方法圖文教程

    mysql 8.0.11 壓縮包版安裝配置方法圖文教程

    這篇文章主要為大家詳細介紹了mysql 8.0.11 壓縮包版安裝配置方法圖文教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-05-05
  • MySQL數(shù)據(jù)庫三種常用存儲引擎特性對比

    MySQL數(shù)據(jù)庫三種常用存儲引擎特性對比

    MySQL中的數(shù)據(jù)用各種不同的技術(shù)存儲在文件(或內(nèi)存)中,這些技術(shù)中的每一種技術(shù)都使用不同的存儲機制,索引技巧,鎖定水平并且最終提供廣泛的不同功能和能力。在MySQL中將這些不同的技術(shù)及配套的相關(guān)功能稱為存儲引擎。
    2016-01-01
  • 詳細分析mysql視圖的原理及使用方法

    詳細分析mysql視圖的原理及使用方法

    這篇文章主要介紹了mysql視圖的相關(guān)資料,幫助大家更好的理解和學習MySQL,感興趣的朋友可以了解下
    2020-08-08
  • MySQL時間盲注的五種延時方法實現(xiàn)

    MySQL時間盲注的五種延時方法實現(xiàn)

    MySQL時間盲注主要有五種,sleep(),benchmark(t,exp),笛卡爾積,GET_LOCK() RLIKE正則,本文就主要介紹了這五種方法,感興趣的可以了解一下
    2021-05-05
  • 快速解決mysql導數(shù)據(jù)時,格式不對、導入慢、丟數(shù)據(jù)的問題

    快速解決mysql導數(shù)據(jù)時,格式不對、導入慢、丟數(shù)據(jù)的問題

    這篇文章主要介紹了快速解決mysql導數(shù)據(jù)時,格式不對、導入慢、丟數(shù)據(jù)的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論