所以我在cassandrav3中删除了一个表,然后重新创建了同一个表,这样我就可以删除一些不必要的列(我知道我应该使用alter命令,我想当时不是很聪明)。
不管是谁,我一个多星期前做了这个动作,所有这些记录的ttl都是8天,
AND compaction = {'class': 'org.apache.cassandra.db.compaction.TimeWindowCompactionStrategy', 'compaction_window_size': '1', 'compaction_window_unit': 'DAYS', 'max_threshold': '32', 'min_threshold': '4'}
AND compression = {'chunk_length_in_kb': '64', 'class': 'org.apache.cassandra.io.compress.LZ4Compressor'}
AND crc_check_chance = 1.0
AND dclocal_read_repair_chance = 0.1
AND default_time_to_live = 691200
AND gc_grace_seconds = 86400
AND max_index_interval = 2048
AND memtable_flush_period_in_ms = 0
因此,基本上,旧表的数据目录中的所有数据现在都应该过期了。但是我看到目录不是空的,并且仍然消耗空间(~900mb)。但当我查看日期时,这些目录最后一次更新是在一周前。所以从技术上来说,删除它们是安全的。但是,有没有更好、更安全的方法来删除或清除这些目录,而不会弄乱生产数据?
1条答案
按热度按时间o8x7eapl1#
当您删除一个表时,它不再由cassandra控制,因此不会对它执行任何活动,例如旧数据过期。当
drop table
cassandra应该为一个表创建一个快照,名称如下dropped-<timestamp>-<table-name>
. 您可以手动(万不得已)或更好地使用命令从每个节点删除此快照nodetool clearsnapshot -t snapshot_name