cassandra的schema version, gossip_generation 和host id

这是cassandra里面很重要的三个值;

schema version是cassandra cluster里每个node的schema版本,什么叫版本呢?因为cassandra是无中心化的,所以你很难知道所有的node上的schema是否是一致的。你不可能每次把所有的schema都拿了去比较一次。这样很不高效。所以cassandra里就有了schema version这个概念。每次执行DDL操作的时候,都会新生成一个新的schema version, 当这个DDL操作复制到其他node的时候,其他的node也会生成同样的schema version(这是因为生成的算法是固定的,并且一致的). 并且这个schema_version还是保存在system.local.schema_version column里; 所以schema version就是指schema的所有table, column, keyspace的一个版本;

那么这个schema version有什么用呢?首先很多操作都会需要检查schema version, 如果schema version不一致,那是不允许继续后面的操作的; 报出的错误是schema version disagreement;

首先,当执行DDL操作的时候,因为这个DDL复制到其他node的时间有先后,所以在执行DDL过程中的某个特定时刻,各个node上的schema version一定是存在不一致的。但是这只是非常短暂的过程。如果出现长时间不一致,那该怎么办呢?repair system keyspace; 让keyspace, tables, columns, indexes在各个node上全部一致; 如果你还不放心,那么就重启不一致的node;

如何查看schema version是否一致,执行nodetool describecluster能看到结果; 因为我们期待的结果是所有node上的schema都是一样的,所以理想期刊下,schema version在所有clusternodes上的值是一样的;

解决方法:

如果repair还是不能解决schema disggreement问题,那么可以通过重启不一致的node来解决;

source code:

在schema.java里有一个函数

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco }
p.p2 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; min-height: 15.0px }
p.p3 { margin: 0.0px 0.0px 0.0px 0.0px; font: 11.0px Monaco; color: #4e9072 }
span.s1 { color: #931a68 }
span.s2 { color: #7e504f }
span.s3 { color: #3933ff }
span.s4 { color: #000000 }
span.s5 { color: #0326cc }

public void updateVersion()

{

try

{

MessageDigest versionDigest = MessageDigest.getInstance("MD5");

for (Row row : SystemKeyspace.serializedSchema())

{

if (invalidSchemaRow(row) || ignoredSchemaRow(row))

continue;

// we want to digest only live columns

ColumnFamilyStore.removeDeletedColumnsOnly(row.cf, Integer.MAX_VALUE, SecondaryIndexManager.nullUpdater);

row.cf.purgeTombstones(Integer.MAX_VALUE);

row.cf.updateDigest(versionDigest);

}

version = UUID.nameUUIDFromBytes(versionDigest.digest());

SystemKeyspace.updateSchemaVersion(version);

}

catch (Exception e)

{

throw new RuntimeException(e);

}

}

时间: 2024-12-24 11:06:37

cassandra的schema version, gossip_generation 和host id的相关文章

Cassandra schema version 不一致

ERROR 04:18:00 Configuration exception merging remote schemaorg.apache.cassandra.exceptions.ConfigurationException: Column family ID mismatch (found 2afa3e50-41c3-11e6-98c7-0f5611eeb44b; expected 61495160-41c0-11e6-98c7-0f5611eeb44b) at org.apache.ca

Rider 2017.1.1下跑AVD出现Unexpected schema version 3错误的解决方法

本人在mac下使用Rider开发.net跨平台项目,在跑Android项目调用google自带模拟器时出现了Unexpected schema version 3错误.尝试多次,终于找到比较傻瓜的解决方法: 1.在ADV中删除所有模拟器 2.只创建一个模拟器 3.运行Rider下Android项目 问题解决.根据尝试,目前只能创建一个模拟器,否则会再次出现Unexpected schema version 3错误,如想多个模拟器测试,可另外使用Genymotion创建模拟器.

shematool -initschema -dbtype mysql error org.apache.hadoop.hive.metastore.hivemetaexception:Failed to get schema version

命令:schematool -initSchema -dbType mysql Fix the issue: edit /etc/mysql/my.cnf change bind-address            = 127.0.0.1    to  bind-address            = 0.0.0.0 Restart mysqld (/etc/init.d/mysql restart).

Citrix adc host id查看

登陆vpx 默认用户名:nsroot 密码:nsroot 通过shell 进入linux 输入:lmutil lmhostid 原文地址:https://blog.51cto.com/holger/2433881

手动打造Snort报警平台

背景 大家在安装基于Snort NIDS系统,配置可视化报警时会遇到各种问题例如 Snort不报警怎么办? 数据库里没有报警怎办? 浏览器打开ACID,里面一片空白怎么办?看着别人安装成功了,我却怎么也装不上?真是折磨人呐!这里我总结了一些实用方法仅供参考. 一.准备工作 手动编译安装Snort时所需的准备工作如下所示.步骤 1.准备软件环境.在安装前,必须在交换机上设置SPAN.中高端Cisco交换机都有SPAN功能.SPAN须为一个专用端口.以下是在虚拟机环境下的实验,须把网卡设置为混杂模式

Cassandra性能测试

驱动下载 https://github.com/datastax/java-driver/ java代码示例 http://blog.csdn.net/guotong1988/article/details/9145697 语法细节 http://zhaoyanblog.com/archives/180.html 运行时报错 Exception in thread "main" java.lang.NoClassDefFoundError: io/netty/util/Timer 报错

Microsoft SQL Server Version List(SQL Server 版本)

原帖地址 What version of SQL Server do I have? This unofficial build chart lists all of the known Service Packs (SP), Cumulative Updates (CU), patches, hotfixes and other builds of MS SQL Server 2014, 2012, 2008 R2, 2008, 2005, 2000, 7.0, 6.5 and 6.0 tha

Cassandra 基本操作

Cassandra version: apache-cassandra-2.1.3 OS: Ubuntu 14.10 进入cassandra命令行 $./cassandra-cli 查看节点状态 $ ./nodetool statusDatacenter: datacenter1=======================Status=Up/Down|/ State=Normal/Leaving/Joining/Moving-- Address Load Tokens Owns Host ID

WebService学习笔记-XML&Schema&HTTP

XML约束 在XML技术里,可以编写一个文档(文件)来约束一个XML文档的书写规范,这称之为XML约束 1.namespace 相当于schema文件的id 2.targetNamespace属性 用来指定schema文件的namespace的值 3.xmlns属性 引入一个约束, 它的值是一个schema文件的namespace值 4.schemaLocation属性 用来指定引入的schema文件的位置 schema规范中: 1. 所有标签和属性都需要有schema文件来定义 2. 所有的s