運(yùn)維平臺(tái)的建設(shè)思考-元數(shù)據(jù)管理(三)

繼第一篇,第二篇介紹了關(guān)于元數(shù)據(jù)的一些想法,最近做了一些改進(jìn)。
對(duì)于一部分的元數(shù)據(jù)抽取大體有下面的兩種方式。假設(shè)數(shù)據(jù)源已經(jīng)做了很大的努力,終于統(tǒng)一起來了。我們現(xiàn)在要通過ssh的方式從源端抽取出數(shù)據(jù)來。
一種方式就是直接通過ssh的方式發(fā)送對(duì)應(yīng)的查詢腳本,然后可以得到一個(gè)完整的列表,二次加工即可。
運(yùn)維平臺(tái)的建設(shè)思考-元數(shù)據(jù)管理(三)
另外一種方式是直接在每臺(tái)服務(wù)器上都部署一個(gè)類似agent的載體,每個(gè)服務(wù)器端都會(huì)獨(dú)立的運(yùn)行這些腳本內(nèi)容,然后通過ssh的方式返回即可。
當(dāng)然下面的圖有一些夸張,實(shí)際上沒有這么多的數(shù)據(jù)源,只是說明了這種方式。
運(yùn)維平臺(tái)的建設(shè)思考-元數(shù)據(jù)管理(三)
從個(gè)人的角度而言,如果喜歡偷懶類似一勞永逸的方式,我還是喜歡第一種方式,通過ssh發(fā)送腳本,然后返回服務(wù)端的運(yùn)行結(jié)果。這種方式不需要特別的配置,比較輕巧快捷,當(dāng)然這種場(chǎng)景的前提是腳本內(nèi)容不大,調(diào)用次數(shù)不頻繁。
假設(shè)調(diào)用的腳本為seal.sql,嘗試使用下面的方式來調(diào)用。語(yǔ)句這么簡(jiǎn)答,我都有一種勝利在握的感覺了。
cat seal.sql | ssh 10.12.xxxx  'MySQL '
但是奇怪的是,沒有任何的輸出。
反復(fù)嘗試,在數(shù)據(jù)庫(kù)端反復(fù)運(yùn)行了腳本,內(nèi)容都沒有任何的問題。
所以感覺是不是這種方式會(huì)有一些特殊字符的影響或者是語(yǔ)句的注釋干擾等等。
然后在得不到任何反饋的情況下,先嘗試使用本地的方式來運(yùn)行,遠(yuǎn)程調(diào)用腳本的形式,這種方式奇怪的是也依舊沒有任何結(jié)果。
嘗試了很多種方式,看起來是運(yùn)行了,但是沒有結(jié)果輸出
# ssh 10.127.33.7 ' cat  /home/dba/Monitor_Hardware/seal.sql|mysql  '
Logging to file '/home/mysql/query.log'
# ssh 10.127.33.7  'mysql < /home/dba/Monitor_Hardware/seal.sql'
Logging to file '/home/mysql/query.log'
# ssh 10.127.33.7  'mysql < /home/dba/Monitor_Hardware/seal.sql > /tmp/a.log'
# ssh 10.127.33.7  "mysql < /home/dba/Monitor_Hardware/seal.sql > /tmp/a.log"
# ssh 10.127.33.7  "/usr/bin/mysql < /home/dba/Monitor_Hardware/seal.sql > /tmp/a.log"
# ssh 10.127.33.7  "/usr/bin/mysql < /home/dba/Monitor_Hardware/seal.sql > /tmp/a.log" # ssh 10.127.33.7 "mysql seal 'select user from mysql.user'"
Logging to file '/home/mysql/query.log'
調(diào)用了一個(gè)sql語(yǔ)句來驗(yàn)證,發(fā)現(xiàn)還是有結(jié)果輸出的。
# ssh 10.127.33.7 "mysql seal -e 'select user from mysql.user'"
Logging to file '/home/mysql/query.log'
xxxxuser
sys_pm
mysqlmon
..
那么問題在哪里呢?
在反復(fù)查看腳本之后,唯一可以假定的就是里面有一個(gè)字段值是中文了。
sql語(yǔ)句類似  select xxxxx  join xxxxx  where  device.server_responser in ('楊建榮');
按照這種情況來看,還是來看看是不是中文的影響。
可以使用這種方式來簡(jiǎn)單驗(yàn)證,傳入變量LANG
cat seal.sql | ssh 10.127.33.7 'export LANG=en_US.utf-8;mysql -vv'
還是原來的腳本,加入-vv的選項(xiàng),這種方式的輸出結(jié)果為:
Empty set
Bye
看來就是語(yǔ)句運(yùn)行了,但是因?yàn)樽址牟患嫒?,?dǎo)致沒有查詢到任何結(jié)果。
這個(gè)問題的一個(gè)原因就是因?yàn)閟ql語(yǔ)句中的字段值為中文,可以嘗試通過其它的code值來代替。
另外一個(gè)就是需要考慮字符集的情況,當(dāng)然明確了這點(diǎn)。這個(gè)問題客戶端為GBK,數(shù)據(jù)庫(kù)端為UTF8,所以還是需要考慮這種差異,最后還是使用發(fā)送腳本的方式來運(yùn)行,使用下面的方式來改進(jìn)即可。
cat seal.sql |iconv -f GBK -t UTF8 | ssh 10.127.33.7 'export LANG=en_US.utf-8;mysql ' |iconv -f UTF8 -t GBK

當(dāng)前名稱:運(yùn)維平臺(tái)的建設(shè)思考-元數(shù)據(jù)管理(三)
瀏覽地址:http://bm7419.com/article20/jcecjo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、營(yíng)銷型網(wǎng)站建設(shè)、自適應(yīng)網(wǎng)站、面包屑導(dǎo)航、用戶體驗(yàn)、搜索引擎優(yōu)化

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)