cassandra - 如何恢复在 Cassandra 中使用截断删除的数据
问题描述
我不小心在 Cassandra 中截断了一张桌子。我想知道是否有任何工具可用于恢复其中的数据。任何帮助,将不胜感激。谢谢。
解决方案
auto_snapshot(默认值:true)
Cassandra 是否在截断键空间或删除表之前拍摄数据快照。为防止数据丢失,DataStax 强烈建议使用默认设置。如果将 auto_snapshot 设置为 false,则在截断或丢弃时会发生数据丢失。
(取自https://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html)
如果运气好,请查看旧 sstable 的快照目录。为了恢复它们“只”需要被复制回它们的原始位置。
这是发生的事情:
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/backups
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-Data.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-Index.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-Filter.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-Summary.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-Digest.crc32
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-CompressionInfo.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-Statistics.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/mc-1-big-TOC.txt
然后我发出TRUNCATE demokeyspace.demo
- 之后是这样的:
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/backups
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-Summary.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-TOC.txt
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-Digest.crc32
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-Filter.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-CompressionInfo.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-Index.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-Data.db
./data1/demokeyspace/demo-0d1a38b05fe211e8875d13cbb58d64f2/snapshots/truncated-1527228644868-demo/mc-1-big-Statistics.db
只需将这些文件复制回来。但请记住,您需要在所有节点上执行此操作,然后运行nodetool refresh demokeyspace demo
以重新读取表(当然使用您的键空间和列族)。
推荐阅读
- spring - 如何在没有“匹配...与”的情况下做到这一点
- c++ - 修改小部件 C++ GTK 的 css
- python - 在 Python 中从 C 中更改数组的数据
- web-services - ORDS RESTful oracle-apex - 一种公式化 JSON 响应(POST 方法)
- python - 如何从使用外键链接到另一个元素的元素的数据库中获取值?
- java - 添加了在使用 OpenJDK8 框架时调用 API ClassPathXmlApplicationContext 时遇到的异常问题
- java - 在以下情况下,Java 中三元运算符的真正用途是什么。哪个会更有效率?
- c# - EF Code First - 两列之间的一列不应为空
- android - 如何检查字符串是否具有指定字符?
- android - 单击按钮时从 recyclerview 中删除项目 - Kotlin MVVM Firestore