Datastax OpsCenter 5.1 无法备份“所有键空间”

Datastax OpsCenter 5.1 无法备份“所有键空间”

我们最近将公司服务器(Datastax Enterprise 4.5.3)升级到了 DSE 4.6.0。我们面临的唯一问题是新的备份服务,我们无法为“所有键空间”创建备份。不过,逐个备份键空间非常有效。错误似乎来自安装在节点上的 datastax-agent(s),我将在下面附上我能记得的尽可能多的详细信息。

OpsCenter 事件日志:

所有键空间备份失败:以下目标的所有键空间备份失败:快照

节点 <node-IP> 上所有键空间的快照失败:clojure.lang.Compiler$CompilerException:java.lang.ClassFormatError:类文件 clojure/core$eval87 中的方法代码长度无效,编译:(NO_SOURCE_PATH:0:0)(<node-IP>)

节点 <node-IP> 上所有键空间的快照失败:clojure.lang.Compiler$CompilerException:java.lang.ClassFormatError:类文件 clojure/core$eval87 中的方法代码长度无效,编译:(NO_SOURCE_PATH:0:0)(<node-IP>)

上述错误(所有键空间的快照......)稍微长一些,因为它对集群上的每个可用节点都出现一次,最后出现“所有键空间的备份失败:......”错误。

同时,所有datastax-agents都出现以下错误信息:

错误 [qtp1549990111-47] 2015-02-13 18:35:50,887 未处理的路线
 异常:clojure.lang.Compiler$CompilerException:
 java.lang.ClassFormatError: 类中方法代码长度无效 96939
 文件 clojure/core$eval87,编译:(NO_SOURCE_PATH:0:0)
                      Compiler.java:6567 clojure.lang.Compiler.analyzeSeq
                      Compiler.java:6361 clojure.lang.Compiler.analyze
                      Compiler.java:6616 clojure.lang.Compiler.eval
                      Compiler.java:6608 clojure.lang.Compiler.eval
                      Compiler.java:6582 clojure.lang.Compiler.eval
                           core.clj:2852 clojure.core/eval
                           路线.clj:58 opsagent.http.routes/fn
                             core.clj:94 compojure.core/make-route[fn]
                             core.clj:40 compojure.core/if-route[fn]
                             core.clj:25 compojure.core/if-method[fn]
                            core.clj:107 compojure.core/路由[fn]
                           core.clj:2443 clojure.core/some
                            core.clj:107 compojure.core/路由
                         RestFn.java:139 clojure.lang.RestFn.applyTo
                            core.clj:619 clojure.core/apply
                            core.clj:112 compojure.core/routes[fn]
                            Var.java:415 clojure.lang.Var.invoke
                       middleware.clj:93 opsagent.http.middleware/wrap-application-error[fn]
                       middleware.clj:75 opsagent.http.middleware/wrap-content-type[fn]
                      middleware.clj:112 opsagent.http.middleware/wrap-content-error[fn]
                       middleware.clj:31 opsagent.http.middleware/wrap-request-logging[fn]
                       middleware.clj:17 opsagent.http.middleware/wrap-opscenter-id-check[fn]
                      middleware.clj:123 opsagent.http.middleware/wrap-version-header[fn]
                   keyword_params.clj:32 ring.middleware.关键字参数/wrap-关键字参数[fn]
                           params.clj:58 ring.middleware.params/wrap-params[fn]
                            jetty.clj:19 opsagent.http.jetty/proxy-handler[fn]
                        (未知来源)opsagent.http.jetty.proxy$org.eclipse.jetty.server.handler.AbstractHandler$0.handle
                 HandlerWrapper.java:111 org.eclipse.jetty.server.handler.HandlerWrapper.handle
                         服务器.java:349 org.eclipse.jetty.server.Server.handle
         AbstractHttpConnection.java:452 org.eclipse.jetty.server.AbstractHttpConnection.handleRequest
         AbstractHttpConnection.java:894 org.eclipse.jetty.server.AbstractHttpConnection.content
         AbstractHttpConnection.java:948 org.eclipse.jetty.server.AbstractHttpConnection$RequestHandler.content
                     HttpParser.java:857 org.eclipse.jetty.http.HttpParser.parseNext
                     HttpParser.java:235 org.eclipse.jetty.http.HttpParser.parseAvailable
             AsyncHttpConnection.java:76 org.eclipse.jetty.server.AsyncHttpConnection.handle
          SelectChannelEndPoint.java:609 org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle
           SelectChannelEndPoint.java:45 org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run
               QueuedThreadPool.java:599 org.eclipse.jetty.util.thread.QueuedThreadPool.runJob
               QueuedThreadPool.java:534 org.eclipse.jetty.util.thread.QueuedThreadPool$3.run
                        (未知来源)java.lang.Thread.run 导致:java.lang.ClassFormatError:方法无效,代码长度为 96939
 类文件 clojure/core$eval87
                        (未知来源)java.lang.ClassLoader.defineClass1
                        (未知来源)java.lang.ClassLoader.defineClass
                        (未知来源)java.lang.ClassLoader.defineClass
              DynamicClassLoader.java:46 clojure.lang.DynamicClassLoader.defineClass
                      Compiler.java:4663 clojure.lang.Compiler$ObjExpr.getCompiledClass
                      Compiler.java:3819 clojure.lang.Compiler$FnExpr.parse
                      Compiler.java:6558 clojure.lang.Compiler.analyzeSeq

  信息 [qtp1549990111-47] 2015-02-13 18:35:50,888 HTTP: :post
 /ops/拍摄快照 {:req-id "c13bb101-2f9e-4880-8b1f-efc178f49b3e"} -
 500

以上内容适用于 2 个数据中心(Datastax 默认值、Cassandra/Analytics DC 和 DseSimpleSnitch)中的 5 个节点的生产集群。分析 DC 与 Spark 和 CFS 配合使用。我尝试将相同的过程(升级路径 4.5.3->4.6.0-> 备份所有键空间)应用于我的本地 2 台机器集群(一台 Cassandra,一台 Analytics),数据集小得多,效果非常好。

答案1

OpsCenter 5.1 中有一个 (已知) 错误,会导致备份在特定情况下失败。很遗憾,您似乎遇到了这个问题。修复程序将在即将发布的 OpsCenter 5.1.1 中提供。

您发现的解决方法(每个键空间备份)应该可靠地工作。

相关内容