- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我们的 Perfino 服务器最近崩溃了,从那时起记录了如下所示的错误。 (有一些线索暗示 OutOfMemory 会导致数据库损坏。)
建议:“可能的解决方案:使用恢复工具”。但是官方的 perfino 文档和日志都没有提供有关如何进行的更多说明。
所以这里的问题是:如何使用恢复工具?
堆栈跟踪:
ERROR [collector] server: could not load transaction data
org.h2.jdbc.JdbcSQLException: File corrupted while reading record: "[495834] stream data key:64898 pos:11 remaining:0". Possible solution: use the recovery tool; SQL statement:
SELECT value FROM transaction_names WHERE id=? [90030-176]
at org.h2.message.DbException.getJdbcSQLException(DbException.java:344)
at org.h2.message.DbException.get(DbException.java:178)
at org.h2.message.DbException.get(DbException.java:154)
at org.h2.index.PageDataIndex.getPage(PageDataIndex.java:242)
at org.h2.index.PageDataNode.getNextPage(PageDataNode.java:233)
at org.h2.index.PageDataLeaf.getNextPage(PageDataLeaf.java:400)
at org.h2.index.PageDataCursor.nextRow(PageDataCursor.java:95)
at org.h2.index.PageDataCursor.next(PageDataCursor.java:53)
at org.h2.index.IndexCursor.next(IndexCursor.java:278)
at org.h2.table.TableFilter.next(TableFilter.java:361)
at org.h2.command.dml.Select.queryFlat(Select.java:533)
at org.h2.command.dml.Select.queryWithoutCache(Select.java:646)
at org.h2.command.dml.Query.query(Query.java:323)
at org.h2.command.dml.Query.query(Query.java:291)
at org.h2.command.dml.Query.query(Query.java:37)
at org.h2.command.CommandContainer.query(CommandContainer.java:91)
at org.h2.command.Command.executeQuery(Command.java:197)
at org.h2.jdbc.JdbcPreparedStatement.executeQuery(JdbcPreparedStatement.java:109)
at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeQuery(NewProxyPreparedStatement.java:353)
at com.perfino.a.f.b.a.a(ejt:70)
at com.perfino.a.f.o.a(ejt:880)
at com.perfino.a.f.o.a(ejt:928)
at com.perfino.a.f.o.a(ejt:60)
at com.perfino.a.f.aa.a(ejt:783)
at com.perfino.a.f.o.a(ejt:847)
at com.perfino.a.f.o.a(ejt:792)
at com.perfino.a.f.o.a(ejt:787)
at com.perfino.a.f.o.a(ejt:60)
at com.perfino.a.f.ac.a(ejt:1011)
at com.perfino.b.a.b(ejt:68)
at com.perfino.b.a.c(ejt:82)
at com.perfino.a.f.o.a(ejt:1006)
at com.perfino.a.i.b.d.a(ejt:168)
at com.perfino.a.i.b.d.b(ejt:155)
at com.perfino.a.i.b.d.b(ejt:52)
at com.perfino.a.i.b.d.a(ejt:45)
at com.perfino.a.i.a.b.a(ejt:94)
at com.perfino.a.c.a.b(ejt:105)
at com.perfino.a.c.a.a(ejt:37)
at com.perfino.a.c.c.run(ejt:57)
at java.lang.Thread.run(Thread.java:745)
最佳答案
注意:我无法使用下面描述的过程恢复我的数据库。我仍然保留这篇文章作为引用,因为成功恢复的可能性取决于数据库的损坏程度,并且没有证据表明此过程无效。
Perfino 默认使用 H2 Database Engine作为它的持久化存储。 H2 有一个 recovery tool和一个 run script tool导入sql语句:
# 1. Create a dump of the current database using the tool [1]
# This tool creates a 'config.h2.sql' and a 'perfino.h2.sql' db dump
cd ${PERFINO_DATA_DIR}
java -cp ${PATH_TO_H2_LIB}/h2*.jar org.h2.tools.Recover
# 2. Rename the corrupt database file to e.g. *bkp
mv perfino.h2.db perfino.h2.db.bkp
# 3. Import the dump from step 1, ignoring errors
java -cp ${PATH_TO_H2_LIB}/h2*.jar \
org.h2.tools.RunScript \
-url jdbc:h2:${PERFINO_DATA_DIR}/db/perfino \
-script perfino.h2.sql -checkResults
h2.jar
下
${PERFINO_INSTALL_DIR}/lib/common/h2.jar
.您当然可以下载
official jar并尝试使用它,但就我而言,我只能使用 perfino 提供的 jar 来恢复数据库。
Exception in thread "main" org.h2.jdbc.JdbcSQLException: Feature not supported: "Restore page store recovery SQL script can only be restored to a PageStore file"
.
# 1. Delete database and mv files
cd ${PERFINO_DATA_DIR}
rm perfino.h2.db perfino.mv.db
# 2. Create a PageStore database manually
touch perfino.h2.db
# 3. try with MV_STORE=FALSE on the url [2]
java -cp ${PATH_TO_H2_LIB}/h2*.jar \
org.h2.tools.RunScript \
-url jdbc:h2:${PERFINO_DATA_DIR}/db/perfino;MV_STORE=FALSE \
-checkResults \
-continueOnError
关于perfino - 如何使用 "recovery tool"修复perfino h2数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41898380/
我正在使用 perfino 的评估版本,并且能够使用代理启动我的 java 应用程序。 服务器能够显示虚拟机的基本遥测,例如使用堆,CPU。 但是,我在“VM Data Views”->“Transa
我已经使用 perfino 一周了,我注意到的第一件事是没有记录任何交易,这很好,因为我们所有的工具都不使用 perfino 可能检测到的任何框架或特殊注释。 当我看到 POJO 事件事务时,我想我可
我们的 Perfino 服务器最近崩溃了,从那时起记录了如下所示的错误。 (有一些线索暗示 OutOfMemory 会导致数据库损坏。) 建议:“可能的解决方案:使用恢复工具”。但是官方的 perfi
我目前正在评估 perfino。我们的系统中有多个服务器与 REST (JAX-RS) 通信。问题是:“perfino 能否将我们自己的服务器之间的 REST 调用作为一个事务进行跟踪?”还是只支持R
我想用 perfino 或 Zipkin 监控一些 Windows 服务。有谁知道这是否可能? 干杯。 最佳答案 只要你有指定VM参数的能力,你就可以添加监控代理,不管JVM是否作为Windows服务
我是一名优秀的程序员,十分优秀!