Opscenter

Datastax OpsCenter 5.1 無法備份“所有密鑰空間”

  • February 14, 2015

我們最近將公司伺服器 (Datastax Enterprise 4.5.3) 升級到 DSE 4.6.0。我們面臨的唯一問題是新的備份服務,我們無法為“所有密鑰空間”創建備份。然而,一個接一個地備份鍵空間就像一個魅力。該錯誤似乎來自安裝在節點上的 datastax-agent(s),我在下面附上了盡可能多的細節。

OpsCenter 事件日誌:

備份所有鍵空間失敗:備份以下目標的所有鍵空間失敗:快照

節點 <node-IP> 上所有鍵空間的快照失敗:clojure.lang.Compiler $ CompilerException: java.lang.ClassFormatError: Invalid method Code length 96939 in class file clojure/core $ eval87, 編譯:(NO_SOURCE_PATH:0:0) (< node-IP >)

節點 <node-IP> 上所有鍵空間的快照失敗:clojure.lang.Compiler $ CompilerException: java.lang.ClassFormatError: Invalid method Code length 96939 in class file 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
routes.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/routing[fn]
core.clj:2443 clojure.core/some
core.clj:107 compojure.core/routing
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]
中間件.clj:112 opsagent.http.middleware/wrap-content-error[fn]
中間件.clj:31 opsagent.http.middleware/wrap-request-logging[fn]
中間件.clj:17 opsagent.http.middleware/wrap-opscenter-id-check[fn]
中間件.clj:123 opsagent.http.middleware/wrap-version-header[fn]
keyword_params.clj:32 ring.middleware.keyword-params/wrap-keyword-params[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
Server.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
(Unknown Source) java.lang.Thread.run Caused by: java.lang.ClassFormatError: Invalid method Code length 96939 in
類文件 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/take-snapshot {: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),數據集要小得多,它就像一個魅力。

OpsCenter 5.1 中有一個(已知的)錯誤會導致備份在特定情況下失敗。不幸的是,看起來你有 . 該修復程序將在即將發布的 OpsCenter 5.1.1 中。

您發現的解決方法(按密鑰空間備份)應該可以可靠地工作。

引用自:https://serverfault.com/questions/667492