大文件跨網(wǎng)傳輸技巧
運(yùn)維DBA跨網(wǎng)傳輸大文件就如同上茅廁下廚房一般無(wú)二
好的方法并非顯而易見(jiàn),且方法的優(yōu)劣差異可能非常顯著
常言道:蔬菜最后一公里價(jià)格翻一翻,即便不聽(tīng)常言
我們用迅雷下載常常駐足在99.9%,亦可窺見(jiàn)文件校驗(yàn)的昂貴
整個(gè)傳輸需要綜合考量的因素頗多,這里我僅拿是否壓縮來(lái)寫(xiě)
壓縮無(wú)須做文件校驗(yàn),且節(jié)省網(wǎng)絡(luò)帶寬,提高傳輸速度
相關(guān)資源如:CPU、內(nèi)存、IO,最好用vmstat -n 5看IO或者CPU是否為瓶頸
切莫教條主義導(dǎo)致和數(shù)據(jù)庫(kù)服務(wù)器爭(zhēng)搶資源拖垮DB Server
因?yàn)閴嚎s必然要增加CPU開(kāi)銷(xiāo)!
以下介紹4種方法
㈠ rsync
利用rsync的二進(jìn)制差異算法,只在網(wǎng)間同步變化的數(shù)據(jù),這是rsync優(yōu)勢(shì)所在。
在知道文件中大部分的內(nèi)容都不需要傳輸?shù)膱?chǎng)景下,可以?xún)?yōu)先考慮使用rsync。
[plain] [mysql@even ~]$ rsync -av /backup/ -e ssh root@192.168.1.110:/bak root@192.168.1.110's password: sending incremental file list ./ cdio_bak.sql sent 1061815 bytes received 34 bytes 163361.38 bytes/sec total size is 1061575 speedup is 1.00 [mysql@even ~]$ mv cdio_bak.sql.bz2 /backup [mysql@even ~]$ rsync -av /backup/ -e ssh root@192.168.1.110:/bak root@192.168.1.110's password: sending incremental file list ./ cdio_bak.sql.bz2 sent 308 bytes received 34 bytes 76.00 bytes/sec total size is 1061757 speedup is 3104.55
顯然,這次只同步了變化的308字節(jié)大小。
㈡ scp
這大概會(huì)是最簡(jiǎn)單的方法,但速度較慢,因?yàn)槊坎蕉家x寫(xiě)磁盤(pán)
[plain] [mysql@even ~]$ gzip -c cdio_bak.sql > cdio_bak.sql.gz [mysql@even ~]$ scp cdio_bak.sql.gz root@192.168.1.110:/bak [root@odd bak]# gunzip cdio_bak.sql.gz
㈢ 管道
一步到位,極大降低IO開(kāi)銷(xiāo)。平時(shí)我也是用這種。
[plain] [mysql@even ~]$ gzip -c cdio_bak.sql | ssh root@192.168.1.110 "gunzip -c - > /bak/cdio.sql"
㈣ nc
跨網(wǎng)ssh并非最佳,netcat能使數(shù)據(jù)在網(wǎng)間"裸奔",避免加密帶來(lái)的系統(tǒng)開(kāi)銷(xiāo)。
[plain]
ODD機(jī)器[受]:
猶如餓壞了的寵物小狗,張著嘴等著小主人喂食
[root@odd ~]# nc -l -p 55555 | tar zxvf -
EVEN機(jī)器[攻]:
比如貪玩的小主人,往小狗嘴里倒東東
[root@even ~]# tar zcvf - mm | nc 192.168.1.110 55555
bitsCN.com聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com