How do I recover from "Invalid log entry in replay" when transaction log is being replayed during server start
If a Virtuoso transaction log file log file fails to replay due to an error of the form:
11:42:57 Invalid log entry in replay. Delete transaction log virtuoso.trx or truncate at point of error. Valid data may exist after this record. A log record begins with bytes 193 188 5 188 0. Error at offset 13205546 11:42:57 Searching for the next valid header signature starting at 13205547 11:42:57 No valid looking header found. 11:42:57 Server exiting
It can be recovered on unix based systems using the dd command to truncate to the log to the point of offset error as follows:
# dd if=virtuoso.trx of=new.trx bs=1 count=13205546 13205546+0 records in 13205546+0 records out # mv new.trx virtuoso.trx
Then restart with the transaction log file truncated to the point of corruption, which should now be successful.
Note: On Windows cygwin can be installed to enable the samedd command to be used for such a recovery also.