我正在運行Cassandra 3.9
羣集,今天我在一些生成的報告中注意到一些NULL值。Cassandra數據損壞:出現在某些列上的NULL值
我打開了cqlsh,經過一些查詢,我發現空值出現在整個數據上,顯然是隨機列。
Replication factor is 3.
我已經開始在集羣中nodetool repair
,但尚未完成。
我的問題是:我搜索了這種行爲,找不到任何地方。顯然,在列中隨機出現NULL值不是一個常見問題。
有誰知道發生了什麼事?這種數據損壞看起來很嚴重。提前感謝任何想法。
ADDED詳情:
發生在那些經常與
toTimestamp(now())
從未返回NULL
更新的列,所以它的不是空數據去發生在那些只插入不可改變列。一次,永不改變。 (但是桌面上的其他列經常更新。)
更新是否導致這種情況與刪除操作相似?看起來對我來說有點嚴肅,醒悟到一堆NULL
的值。
我也特別瞭解一些已經丟失的數據,我已經確定的三個條目是針對缺少的重要條目。這些並沒有被刪除 - 在一個特定的表格上沒有刪除,這個表格在任何地方都是NULL。
我是唯一的管理員,沒有人在一夜之間運行任何nodetool
命令,100%確定。
UPDATE
nodetool repair
已現運行6+小時,它完全恢復上一個varchar
欄「項目說明」中的數據。
這是一個卡桑德拉問題,不,根本沒有刪除。就像我說過的函數永不返回null(toTimestamp(now())
)。
更新2
所以nodetool repair
一夜之間完成,但NULLs
仍然有在上午。
所以我去了節點停止並重新啓動它們,因此,NULLs
已經消失,並且沒有數據丟失。
如果你問我,這是一個主要的聯盟bug。我沒有足夠的資源後,現在它走了,但如果任何人都面臨着這樣這裏的簡單的「修復」:
- 運行
nodetool repair -dcpar
解決所有節點的數據中心。 - 按節點重新啓動。
一個NULL可以是[刪除的結果](http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html)。 – LHWizard
嗨。感謝這個想法。更新是否會導致此問題?此表格有2或3列每小時更新一次。但是NULL的列不會更新。例如,插入後永遠不會更改的文件路徑列充滿NULL。還有一個時間戳列,只能通過Cassandra函數toTimestamp(now())更新,永遠不會爲NULL .... –
[TTLs也可以導致NULL](https://docs.datastax.com/en/cql/3.3/ cql/cql_using/useExpire.html) – LHWizard