在金融,电商,等高可用环境下,不允许有任何数据丢失的情况,redo log 是一个不错的低成本高可用方案,其作用有点类似mysql binlog, 下面在生产环境中事件和优化的多线程安全,自己恢复的 c++ redo log 类,在实际生产过程遇到相应问题,很多地方进行优化设计,尽量保持高性能和高可靠性。
/******************************************************
function: redo log is use for service restart, sys crash
and Exception to recover the data.
author: liuyi
date:2016.08.26
version:1.0
******************************************************/
#ifndef REDO_LOG_H
#define REDO_LOG_H
#include
#include
#include
#include
#include
#include
#include
#include
#include
// test 程序
#include
#include
#include
#include "redo_log.h"
using namespace std;
int main(int argc, char *argv[])
{
redo_log a;
if(a.init("/home/admin/learn/redo_log", 20000))
cout<<"init ok"< unfinish_records;
a.reload_unfinish_records(unfinish_records);
for(size_t i = 0; i < unfinish_records.size(); i++)
{
cout<
测试分两步, g++ test_redo_log.cpp -lpthread ;
第一步 ./a.out 0 ; 查看redo log 生成和删除情况,
第二部 ./a.out 1; 看出 redo log 恢复情况