首页 > 解决方案 > Cassandra 二级索引备份和恢复

问题描述

我已经建立了一个 2 dc 的 Cassandra 集群。DC1 - 9 个节点,代表 5,一致性 - 本地仲裁。DC2 - 4 个节点,代表 3,一致性 - 本地仲裁。一直在测试备份和恢复,发现恢复数据后修复节点需要很长时间。System.log 和 compactionstats 显示大部分时间都花在重建二级索引上。寻找答案:

有没有办法备份和恢复二级索引?Cassandra如何修复二级索引?它总是经过全面重建吗?有没有办法专门从 nodetool 修复过程中排除二级索引重建?

备份策略:基于快照,存储在云端。Lucene 目录持有索引也被备份

恢复策略:从快照恢复 sstables,拷贝回 Lucene 目录。

标签: cassandrasecondary-indexes

解决方案


当您运行nodetool snapshot它时,它还会拍摄二级索引的快照。

来自 instaclustr doc:备份文件的确切位置和文件命名约定取决于二级索引的类型和 Cassandra 的版本。

  • 常规二级索引
    • Cassandra 2.2 +
      二级索引将作为 sstables 存储在各自表内的单独目录下。二级索引目录命名为“.nameOfTheIndex”。sstable 文件的命名约定是'md-#-big-*',例如。md-1-big-Data.db
    • Cassandra 2.1.x 和 Cassandra 2.0.x
      二级索引将作为 sstables 存储在各自表的同一目录中。sstable 文件的命名约定是,
    • 对于 Cassandra 2.0.x,
      'keyspace-table.nameOfTheIndex-jb-#- ',例如。testkeyspace-testtable.testindex-jb-1-Data.db - 对于 Cassandra 2.1.x,'keyspace-table.nameOfTheIndex-ka-#- ',例如。testkeyspace-testtable.testindex-ka-1-Data.db
  • SASI 索引(SSTable Attached Secondary Index)
    与SASI Index 的另一个重要区别是,如果集群在Instaclustr 备份服务启动之前已经有SASI 索引,则备份服务不会备份SASI 索引。在这种情况下,需要重新启动 Cassandra 服务。如果生产集群出现这种情况,您可以联系我们的技术支持团队寻求帮助。命名约定:'md-1-big-SI_table_column_idx.db'</li>

推荐阅读