2017-09-01 85 views
0

我們正在運行Couchbase Community Edition 4.5.1,並且最近經歷了將TTL添加到文檔的過程之前並不存在。這樣做之後,我們取消了數據庫的csv備份,並注意到大量文檔仍然返回0的終止。我們不確定問題是更新失敗還是數據拉取。檢查Couchbase中的文檔到期

不幸的是,Couchbase有一個問題,即N1QL的元數據中沒有返回到期,因此我們無法獨立確認csv對於任何給定的文檔是否正確。

是否有另一種方法通過控制檯UI或API調用獲取文檔的當前TTL?

回答

1

您可以使用libcouchbase中包含的cbc實用程序通過--keystats獲取TTL。例如:

$ cbc-stats --keystats -u Administrator -P - -U couchbase://localhost/travel-sample airline 
_112 
Bucket password: 
localhost:11210 key_is_dirty false 
localhost:11210 key_exptime 0 
localhost:11210 key_flags 33554432 (cbc: converted via htonl) 
localhost:11210 key_cas 1503621971151421440 
localhost:11210 key_vb_state active 

並注意Couchbase Server 5.0Sub-Document API得到了增強,可以獲取TTL爲virtual XATTR。例如:

$ cbc-subdoc -u Administrator -P - -U couchbase://localhost/travel-sample 
Bucket password: 
subdoc> get -x $document airline_112 
airline_112   CAS=0x14ddf0375af40000 
0. Size=188, RC=0x00 Success (Not an error) 
{"CAS":"0x14ddf0375af40000","vbucket_uuid":"0x0000e976b253ad5c","seqno":"0x0000000000000001","exptime":0,"value_bytes":118,"datatype":["json"],"deleted":false,"last_modified":"1503621971"} 
1. Size=118, RC=0x00 Success (Not an error) 
{"callsign":"FLYSTAR","country":"United Kingdom","iata":"5W","icao":"AEU","id":112,"name":"Astraeus","type":"airline"} 
subdoc> get -x $document.exptime airline_112 
airline_112   CAS=0x14ddf0375af40000 
0. Size=1, RC=0x00 Success (Not an error) 
0 
1. Size=118, RC=0x00 Success (Not an error) 
{"callsign":"FLYSTAR","country":"United Kingdom","iata":"5W","icao":"AEU","id":112,"name":"Astraeus","type":"airline"} 
subdoc> get -x $document.exptime -x $document.value_bytes airline_112 
airline_112   CAS=0x14ddf0375af40000 
0. Size=1, RC=0x00 Success (Not an error) 
0 
1. Size=3, RC=0x00 Success (Not an error) 
118 
2. Size=118, RC=0x00 Success (Not an error) 
{"callsign":"FLYSTAR","country":"United Kingdom","iata":"5W","icao":"AEU","id":112,"name":"Astraeus","type":"airline"} 

您也可以從SDK中以編程方式獲取這些XATTR,這對於單元測試可能非常方便。隨着我們接近5.0版本的發佈,這些功能的文檔正在開發中。

+1

謝謝,cbc-stats命令工作 - 出於某種原因,在我們正在拉的所有csv上到期爲0,但是這個工具證實我們已經正確設置了TTL。 – Brian