How do I recover from "Invalid log entry in replay" when transaction log is being replayed during server start?
Error Condition
A Virtuoso transaction log file may fail to replay, with 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
Resolution of this error varies with the kind of Virtuoso server you're running.
Recovery Methods
Single-Server Deployments of both Open Source and Commercial Edition
WARNING: Do not use this recovery method on Cluster Deployments of Commercial Edition.This can be recovered by truncating to the transaction log to the reported error offset.
Unix-like OS can use the built-in dd
command; Windows users must first install WinDD or cygwin to get the same functionality.
Given the error above, the recovery steps on a Unix-like OS would look like --
# mv virtuoso.trx old.trx # dd if=old.trx of=new.trx bs=1 count=13205546 13205546+0 records in 13205546+0 records out # mv new.trx virtuoso.trx # virtuoso-iodbc-t -f
Restarting Virtuoso should now succeed.