我们运行的是datastax java driver 1.9版本,我们的配置如下所示:
cassandra.contactpoints=tfi-db-ddac-001.tfi.myCompany.net,tfi-db-ddac-002.tfi.myCompany.net
cassandra.username=username
cassandra.password=password
cassandra.keyspace.create=CREATE KEYSPACE myKeySpace WITH replication = {'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 1};
cassandra.keyspace_log.create=CREATE KEYSPACE myKeySpace_log WITH replication = {'class' : 'NetworkTopologyStrategy', 'DC1' : 1, 'DC2' : 1};
cassandra.log_entries.write_consistency_level=TWO
cassandra.metric_monitor.write_consistency_level=TWO
cassandra.app_tracking.write_consistency_level=TWO
使用此命令并将依赖项更新为4.x:
try (CqlSession session = CqlSession.builder()
.addContactPoint(new InetSocketAddress("tfi-db-ddac-001.tfi.myCompany.net", 9042))
.addContactPoint(new InetSocketAddress("tfi-db-ddac-002.tfi.myCompany.net", 9042))
.withLocalDatacenter("dc1")
.withAuthCredentials("username","password")
.build()) {
我总是得到这个错误:
You specified dc1 as the local DC, but some contact points are from a different DC: Node(endPoint=tfi-db-ddac-002.tfi.myCompany.net/10.8.64.97:9042, hostId=43e3df16-1e44-4aff-b0ac-2fee0e17ace5, hashCode=2043258b)=ggi-l, Node(endPoint=tfi-db-ddac-001.tfi.myCompany.net/10.8.64.95:9042, hostId=4d5b9290-8c92-4f1a-b348-51d42d439e2b, hashCode=7f1da1b2)=ggi-s; please provide the correct local DC, or check your contact points
有人能给我一个建议/例子,请如何迁移到4.xCassandra。
先谢了!
2条答案
按热度按时间vulvrdjw1#
所以这个:
还有这个
使用的数据中心名称 * 不 * 相同。请记住,Cassandra是区分大小写的。由于旧的驱动程序配置工作,我猜数据中心名称应该是大写的
DC1
。尽管如此,您总是可以检查nodetool status
只是为了确保。ozxc1zmp2#
Cassandra Java驱动程序的版本4是从头开始重构的,因此它与旧版本(包括DSE版本的驱动程序)不兼容。
与旧版本的Java驱动程序相比,最大的区别之一是内置的负载平衡策略(
DefaultLoadBalancingPolicy
和DcInferringLoadBalancingPolicy
)将只连接到一个数据中心。因此,驱动程序将只接受属于配置的本地DC的联系点(如果使用默认负载平衡策略)。在初始化阶段,驱动程序明确检查已配置接触点的DC(参见
OptionalLocalDcHelper. checkLocalDatacenterCompatibility()
)。当驱动程序检测到“坏”接触点时,它将记录WARN
消息,其中包含以下指令:(a)提供正确的本地DC,或(b)检查接触点列表。它与群集DC是否都不是应用程序示例的“本地”无关--当驱动程序检测到这种不推荐的配置时,它仍将向您发出警报。由于它被记录为警告(
WARN
),因此应用程序仍将工作,但驱动程序将永远不会在查询计划中包括远程节点。有关详细信息,请参阅Load balancing with the Java driver。干杯!