MyRocks支持崩溃修复。通过WAL(预写日志)文件重放事务日志来完成崩溃恢复。 如果任何WAL条目已损,MyRocks有一个系统变量rocksdb_wal_recovery_mode来控制如何应用日志。 此变量可以是以下任何选项:
0: 如果检测到损坏的WAL条目是WAL中的最后一条目,则截断条目并正常启动;否则拒绝开始。
1: 默认值:如果检测到损坏的WAL条目,则无法启动。这是最保守的修复模式。
2: 如果在WAL中间检测到损坏的WAL条目,则在此之后阶段的所有WAL条目(即使可能存在未损坏的条目),然后正常启动。
对于Replication Slaves,此选项很好,因为slave实例可以从master服务器恢复任何丢失的数据而不破坏一致性。
对于Replication Master,如果未运行故障转移,此选项可能最终会丢失数据。
例如,如果主机崩溃并在此模式下重启(通过mysqld_safe或在OS重启后自动重启),并且它以静默方式截断多个WAL条目,
则主机将丢失一些可能存在于一个或多个slaves上的数据。
3: 如果在WAL中间检查到损坏的WAL条目,则跳过WAL条目并继续应用尽可能多的好的WAL条目,这是最危险的恢复选项,通常不建议使用。