Удаленные данные в Кассандре возвращаются, как призрак - PullRequest
0 голосов
/ 01 января 2019

У меня есть кластер Cassandra с 3 узлами (3.7), пространство ключей

CREATE KEYSPACE demo WITH replication = {'class': 'SimpleStrategy', 'replication_factor': '2'}  AND durable_writes = true;

таблица

CREATE TABLE tradingdate (key text,tradingdate date,PRIMARY KEY (key, tradingdate));

один день при удалении одной строки, например

delete from tradingdate 
where key='tradingDay'and tradingdate='2018-12-31'

, тогда удаленная строка становится призрачной, когда запрос

select * from tradingdate 
where key='tradingDay'and tradingdate>'2018-12-27' limit 2;

     key        | tradingdate
    ------------+-------------
     tradingDay |  2018-12-28
     tradingDay |  2019-01-02


select * from tradingdate 
where key='tradingDay'and tradingdate<'2019-01-03' 
order by tradingdate desc limit 2;

     key        | tradingdate
    ------------+-------------
     tradingDay |  2019-01-02
     tradingDay |  2018-12-31

Поэтому, когда используется order by, удаленная строка (tradingDay, 2018-12-31) возвращается.

Я думаю,Я удаляю только строку на одном узле, но она все еще существует на другом узле.Итак, я выполняю:

nodetool repair demo tradingdate

на 3 узлах, затем удаленная строка полностью исчезает

Поэтому я хочу знать, зачем использовать order by, я вижу строку-призрак.

1 Ответ

0 голосов
/ 02 января 2019

Это хорошее чтение об удалениях в Cassandra (и других распределенных системах):

http://thelastpickle.com/blog/2016/07/27/about-deletes-and-tombstones.html

, а также:

https://docs.datastax.com/en/cassandra/3.0/cassandra/dml/dmlAboutDeletes.html

Вам необходимо будет выполнить / запланировать плановое восстановление хотя бы один раз в течение gc_grace_seconds, по умолчанию - десять дней, чтобы предотвратить повторное появление данных в кластере.

Также вам следует искать пропущенные сообщения в случае, если на одном из ваших узлов отсутствуют удаляемые (и другие сообщения):

# nodetool tpstats
Pool Name                    Active   Pending      Completed   Blocked  All time blocked
MutationStage                     0         0      787032744         0                 0
ReadStage                         0         0     1627843193         0                 0
RequestResponseStage              0         0     2257452312         0                 0
ReadRepairStage                   0         0       99910415         0                 0
CounterMutationStage              0         0              0         0                 0
HintedHandoff                     0         0           1582         0                 0
MiscStage                         0         0              0         0                 0
CompactionExecutor                0         0        6649458         0                 0
MemtableReclaimMemory             0         0          17987         0                 0
PendingRangeCalculator            0         0             46         0                 0
GossipStage                       0         0       22766295         0                 0
MigrationStage                    0         0              8         0                 0
MemtablePostFlush                 0         0         127844         0                 0
ValidationExecutor                0         0              0         0                 0
Sampler                           0         0              0         0                 0
MemtableFlushWriter               0         0          17851         0                 0
InternalResponseStage             0         0           8669         0                 0
AntiEntropyStage                  0         0              0         0                 0
CacheCleanupExecutor              0         0              0         0                 0
Native-Transport-Requests         0         0      631966060         0                19

Message type           Dropped
READ                         0
RANGE_SLICE                  0
_TRACE                       0
MUTATION                     0
COUNTER_MUTATION             0
REQUEST_RESPONSE             0
PAGED_RANGE                  0
READ_REPAIR                  0

Удаленные сообщения указывают, что что-то не так.

...