国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數(shù)據(jù)庫 > MySQL > 正文

MySQL binlog 遠程備份方法詳解

2024-07-24 12:41:34
字體:
供稿:網(wǎng)友

以前備份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/shBACKUP_BIN=/usr/bin/mysqlbinlogLOCAL_BACKUP_DIR=/backup/binlog/BACKUP_LOG=/backup/binlog/backuplogREMOTE_HOST=192.168.244.145REMOTE_PORT=3306REMOTE_USER=replREMOTE_PASS=replFIRST_BINLOG=mysql-bin.000001#time to wait before reconnecting after failureSLEEP_SECONDS=10##create local_backup_dir if necessarymkdir -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
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 任丘市| 安远县| 湾仔区| 阿城市| 中宁县| 义马市| 马尔康县| 昌乐县| 荔浦县| 冕宁县| 泌阳县| 邹平县| 三门峡市| 进贤县| 天祝| 芦山县| 东辽县| 白河县| 霍邱县| 疏勒县| 昌乐县| 清原| 田东县| 天镇县| 南阳市| 麻城市| 龙井市| 石泉县| 化德县| 晋城| 贺州市| 莱州市| 太仓市| 莎车县| 定远县| 莫力| 米泉市| 峨边| 呼图壁县| 兴和县| 繁昌县|