作者: UMU @ MEET.ONE 实验室
问题
当 MongoDB 因不可抗力故障,nodeos 重启后会丢失上次故障时正在插入的记录。
解决
nodeos 会将插入语句连同错误原因等信息一起写入 log,这给了我们手动修复丢失的机会。下面以 transaction_traces 为例,介绍修复流程。
1. 找出所有失败记录
1 | grep 'mongo exception, trans_traces insert:' *.log > lost.txt |
2. 从 log 生成 mongo script
1 | echo 'print("++++"); |
3. 导入 MongoDB
1 | nohup mongo mongodb://$user:$password@127.0.0.1:$port/admin lost.js > lost.log |