当前位置: 首页 > 知识库问答 >
问题:

使用nodetool对Cassandra快照的takeSnapshot java.lang.NosuchMethodException

井修雅
2023-03-14

我试图使用运行在docker容器上的nodetool快照工具获取cassandra数据库的快照。更准确地说,我使用以下命令

nodetool -h cassandra -p 9999 snapshot
error: takeSnapshot(java.lang.String, java.util.Map, [Ljava.lang.String;)
-- StackTrace --
java.lang.NoSuchMethodException: takeSnapshot(java.lang.String, java.util.Map, [Ljava.lang.String;)
        at com.sun.jmx.mbeanserver.PerInterface.noSuchMethod(PerInterface.java:169)
        at com.sun.jmx.mbeanserver.PerInterface.invoke(PerInterface.java:135)
        at com.sun.jmx.mbeanserver.MBeanSupport.invoke(MBeanSupport.java:252)
        at com.sun.jmx.interceptor.DefaultMBeanServerInterceptor.invoke(DefaultMBeanServerInterceptor.java:819)
        at com.sun.jmx.mbeanserver.JmxMBeanServer.invoke(JmxMBeanServer.java:801)
        at javax.management.remote.rmi.RMIConnectionImpl.doOperation(RMIConnectionImpl.java:1468)
        at javax.management.remote.rmi.RMIConnectionImpl.access$300(RMIConnectionImpl.java:76)
        at javax.management.remote.rmi.RMIConnectionImpl$PrivilegedOperation.run(RMIConnectionImpl.java:1309)
        at javax.management.remote.rmi.RMIConnectionImpl.doPrivilegedOperation(RMIConnectionImpl.java:1401)
        at javax.management.remote.rmi.RMIConnectionImpl.invoke(RMIConnectionImpl.java:829)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at sun.rmi.server.UnicastServerRef.dispatch(UnicastServerRef.java:357)
        at sun.rmi.transport.Transport$1.run(Transport.java:200)
        at sun.rmi.transport.Transport$1.run(Transport.java:197)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.Transport.serviceCall(Transport.java:196)
        at sun.rmi.transport.tcp.TCPTransport.handleMessages(TCPTransport.java:573)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run0(TCPTransport.java:834)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.lambda$run$0(TCPTransport.java:688)
        at java.security.AccessController.doPrivileged(Native Method)
        at sun.rmi.transport.tcp.TCPTransport$ConnectionHandler.run(TCPTransport.java:687)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)

有人知道为什么会这样吗?

提前感谢!

共有1个答案

邴兴为
2023-03-14

看起来Docker内部和主机上的Cassandra版本不兼容--主机上的DataStax Enterprise或Cassandra4.0 beta都有TakesNapshot函数的另一组参数(该函数是5年前由该提交引入的)。

要解决这个问题,您需要使用相同版本的Cassandra来执行命令,最简单的方法是在Docker容器中使用Docker exec nodetool snapshot ions-if-meedition> 执行命令

 类似资料:
  • 我有几个关于备份/恢复Cassandra集群的最佳方法的问题。 背景:我有一个在EC2中运行的集群。它的节点配置如下: 实例类型:m3.medium存储:50 GB根卷/100 GB另一个卷 在阅读了大量的文件和搜索了一些网站后,我明白了带有Cassandra(nodetool)快照的EBS快照看起来很有前途。 问题:EBS 还拍摄增量快照,Nodetools 也拍摄快照,那么这两个工具有何不同或

  • Cassandra doc提到“nodetool snapshot”命令对表数据进行快照。然而,我也能够在生成所有快照文件的快照目录中看到schema.cql和manifest.json文件。 这是预期的行为吗?如果需要,我也可以使用此架构.cql 文件来还原架构吗? 我的卡珊德拉版本 编辑: < li >恢复数据时是否必须使用快照中的cql文件?假设我已经创建了存储在其他地方表cql。我能用那个

  • 我正在为一个Cassandra数据库构建一个备份和恢复过程,以便在我需要的时候做好准备,这样我就可以理解细节,以便构建适合生产的东西。我在这里遵循Datastax的说明: http://www.datastax.com/documentation/cassandra/2.0/cassandra/operations/ops_backup_restore_c.html。 首先,我将数据库放置在一个d

  • 尝试cassandra快照时发生java错误。 root@cassandramytest]\/usr/local/apache-cassandra-1.1.7/bin/nodetool-h localhost mytest 所以,我添加了 /etc/security/limits.conf 遵循以下步骤:http://www.datastax.com/docs/1.1/troubleshootin

  • 我们定期备份我们的集群,并且每天在aws s3上存储模式和快照备份。 不知何故,我们丢失了所有数据,在从备份中恢复数据时,我们能够恢复模式,但在将快照文件复制到/var/lib/cassandra/data目录时,它没有在表中显示数据。 复制数据后,我们已经完成了nodetool刷新- keyspace表,但仍然没有工作。 你能帮忙吗?

  • Overview Rados supports two related snapshotting mechanisms: pool snaps: snapshots are implicitely applied to all objects in a pool self managed snaps: the user must provide the current SnapContext on