Cassandra Repair 问题

问1:

文档建议每周或者每月跑一次full repair.那么如果我是使用partition rangerepair,是否还有必要在cluster的每个节点上定期跑full repair ?

答1:

为什么要定期跑full repair

一般在gc_grace_seconds 间隔时间内跑repair

- 确保集群的数据保持一致。通常节点的write consistency都不会是ALL。所以集群内的数据可能不一致。

以及保证删除的数据不会恢复

  • 对down掉的节点修复不一致

    down的节点有可能过了hintedhandoff设置的时间,不会有hintedhandoff message写入。

    数据也有很大的不一致性。

什么是partition range修复

在一个集群里,通常replicator>1.意味着同一份数据在集群内有很多份.如果在每个节点上run repair.

对于同一份数据就会重复repair replicator 次。加上 -pr 参数。就是对于同一range的数据只repair一次。

提高了repair效率。

综上所述,使用partition range repair,仍然有必要定期跑full repair.

问2:

repair 需不需要将一个down 掉的节点移除掉,如果不移除,repair是不是会继续修复其他records

答2:

Cassandra(cassandra 3.x) 目前的做法:

如果replicator =3,集群中共有6个节点,1个节点就有3/6的数据。1/6 的数据是它的token range负责的数据,2/6是他作为replicate的数据。当这个节点down了。有一半的数据replicate=2,这时候run repair 是不会修复这一半的数据的。

深入思考

在上面的回答中可以看出来,因为有多份数据的存在,所以一个node负责的数据占比是很大的。也就是现有的repair会导致很大

一部分数据不能够保持一致。

假如现在一个节点已经down掉10天了,有很多的数据都没有repaired。你也不确定节点什么时候能够修复,需要你做决定了

1.尽早移除节点,然后将节点添加回来

这样会因为token arrangement的重新分配,导致数据在节点间传递。

2.不移除节点,等节点修复好,正常工作

越来越多的数据没有repaired。而且down node时间会超过gc_grace_seconds,这样被删除的数据就会有被恢复的可能。

不去定期做repair,为什么会导致delete data 恢复呢

删除数据时,会发送一个tombstone标记,标记数据被删除,然后在compaciton阶段将数据删除。

如果在发送delete request到节点时,某个拥有该数据的节点down了,Cassandra会一直重新发送。

只要节点在gc_grace_seconds时间内恢复过来,他就会收到delete request。如果节点超过了这个时间。tombstone 就会被gc回收,节点就会丢失删除数据的delete request,这样这条被删除的数据会被恢复出来。

综上两点,我们需要更好的机制去处理repair

jira ticket

https://issues.apache.org/jira/browse/CASSANDRA-10446

Cassandra User 问题汇总(1)------------repair的更多相关文章

  1. Cassandra中的数据一致性

       Cassandra中数据一致性指的是数据行在各个复制节点(replicas)上的更新和同步程度.通过提供tunable consistency,Cassandra扩展了eventual cons ...

  2. 容器化部署Cassandra高可用集群

    前提: 三台装有docker的虚拟机,这里用VM1,VM2,VM3表达(当然生产环境要用三个独立物理机,否则无高可用可言),装docker可参见Ubuntu离线安装docker. 开始部署: 部署图 ...

  3. Cassandra1.2文档学习(15)—— 配置数据一致性

    参考文档:http://www.datastax.com/documentation/cassandra/1.2/webhelp/index.html#cassandra/dml/dml_config ...

  4. (24)odoo中模型标识汇总

    * 设置->技术->数据结构->模型                模型    模型描述    类型    瞬态模型account.account    科目    基础对象    ...

  5. 监控和管理Cassandra

    了解Cassandra集群的性能特点有助于诊断和维护Cassandra.由于Cassandra使用JAVA开发的,所以它就提供了JMX环境下的一些管理工具来管理Cassandra,它们包括:Cassa ...

  6. Cassandra 备份 - 1 - 节点镜像恢复

    之前比较关注如何使用Cassandra,但是真正想大规模使用前提还是需要搞清楚备份机制,确保数据安全. 本文主要内容来自文档 "Cassandra2.2"的翻译.最后部分为真实操作 ...

  7. Cassandra 的压缩策略STCS,LCS 和 DTCS

    更新说明: 本文编写时最新的Cassandra版本为2.2,最新的稳定版本为2.1.8 2016年6月23日,增加一篇译文,当下最新版本为3.7 最新的Cassandra 2.1 或者更高的版本支持3 ...

  8. MongoDB资料汇总专题[转发]

    转发下..这个哥收集的很全 MongoDB资料汇总专题 作者:nosqlfan http://blog.nosqlfan.com/html/3548.html 最后更新时间:2013-04-22 1. ...

  9. Cassandra监控 - OpsCenter手册

    注:本文转自:http://eric100.blog.51cto.com/2535573/1717792 Opscenter用户手册 1.       OpsCenter简介 DataStaxOpsC ...

随机推荐

  1. java中的链表编写

    通过while循环取出节点内容 class Node{//定义一个节点类,用于保存数据和取得下一个节点 private String data;//节点中数据 private Node next;// ...

  2. jQuery中的for循环var与let的区别

    今天在写jQuery请求接口中发现一个问题: 在用AJAX发送请求中又嵌套了一个AJAX请求,发现在内层请求的success中对第一次success中的循环变量 i 无法获取,具体代码如下: $.aj ...

  3. [LeetCode] Valid Palindrome II 验证回文字符串之二

    Given a non-empty string s, you may delete at most one character. Judge whether you can make it a pa ...

  4. [测试题]無名(noname)

    Description 因为是蒯的题所以没想好名字,为什么要用繁体呢?去看<唐诗三百首>吧! 题意很简单,给你一个串,求他有多少个不同的子串,满足前缀为A,后缀为B. 需要注意的是,串中所 ...

  5. slab机制

    1.内部碎片和外部碎片 外部碎片 什么是外部碎片呢?我们通过一个图来解释: 假设这是一段连续的页框,阴影部分表示已经被使用的页框,现在需要申请一个连续的5个页框.这个时候,在这段内存上不能找到连续的5 ...

  6. ●杜教筛入门(BZOJ 3944 Sum)

    入门杜教筛啦. http://blog.csdn.net/skywalkert/article/details/50500009(好文!) 可以在$O(N^{\frac{2}{3}})或O(N^{\f ...

  7. ●POJ 3974 Palindrome(Manacher)

    题链: http://poj.org/problem?id=3974 题解: Manacher 求最长回文串长度. 终于会了传说中的马拉车,激动.推荐一个很棒的博客:https://www.61mon ...

  8. poj 1265 Area 面积+多边形内点数

    Area Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 5861   Accepted: 2612 Description ...

  9. URAL 1297 最长回文子串(后缀数组)

    1297. Palindrome Time limit: 1.0 secondMemory limit: 64 MB The “U.S. Robots” HQ has just received a ...

  10. bzoj1071[SCOI2007]组队

    1071: [SCOI2007]组队 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 2472  Solved: 792[Submit][Status][ ...