ssdb binlog机制 存疑

int BinlogQueue::del_range(uint64_t start, uint64_t end){
    while(start <= end){
        leveldb::WriteBatch batch;
        for(int count = 0; start <= end && count < 1000; start++, count++){
            batch.Delete(encode_seq_key(start));
        }
//这里会实际删除数据库的数据,但是del_range会在binlog定期清理函数中调用

//问题:log_clean_thread_func的定位应该是清理min/last seq ,维护一个范围而已,为何要实际删除数据呢?况且,set的kv值,在commit时候,实际写入了db了(然后清理log时候再给删除)?实在不明白!

        leveldb::Status s = db->Write(leveldb::WriteOptions(), &batch);
        if(!s.ok()){
            return -1;
        }
    }
    return 0;
}

  

时间: 2024-10-10 17:55:16

ssdb binlog机制 存疑的相关文章

MySQL binlog相关分析

1.redolog.binlog的简单分析 图解:redolog和binlog机制 2.开启binlog及关注点 3.关注binlog的相关参数 4.binlog模式分析 5.关于binlog的使用 补充:双一模式 一.区别redolog和binlog 1.如下表格的一个简单对比   redolog binlog 日志作用 保护脏数据 数据库备份恢复使用 引擎支持 只适合InnoDB引擎 所有引擎 日志格式 物理日志 逻辑日志,SQL语句 提交方式 快速提交 提交时一次性写入 保存形式 会被循环

使用beanstalkd实现定制化持续集成过程中pipeline - 持续集成系列

持续集成是一种项目管理和流程模型,依赖于团队中各个角色的配合.各个角色的意识和配合不是一朝一夕能练就的,我们的工作只是提供一种方案和能力,这就是持续集成能力的服务化.而在做持续集成能力服务化的过程中,最核心的一点就是,如何实现一个可定制化的任务流,即所谓的pipeline. 在传统的持续集成工具实现了pipeline功能,以供串联上下游job,并把多个job联系成一次完整的构建,例如jenkins的pipeline插件. 但是各种持续集成工具,或多或少都有自己的短板,总结起来如下: 1.配置并不

Online DDL gh-ost工具测试

OS:centos 6.5 DB:percona server 5.6.32 gh-ost:1.0.21 DB-M:192.168.128.128 DB-S : 192.168.128.129 简介: gh-ost是github开源的一款在线执行sql的开源工具.可以用于在线表结构变更(特别是大表,原因下面讲) 在线表结构变更,目前常用有以下几种方式: 1.小表:online ddl (5.6及其以后版本) 创建临时表为更改后的表结构,更新临时表数据,原表的新入数据记录入内存中的alter lo

keepalived实现redis双机高可用

现在的生产环境基本上都采用主备方式,而如何实现redis的主备呢?一般情况下,redis实现主从复制比较简单,只需要在从服务器的配置文件里配置 "slaveof"即可.但这样存在一个问题:主服务器挂掉时,可临时将业务地址转移到从服务器,但从服务器无法进行写操作. 为解决这个问题,在网上查找了一些资料.主要有以下几种方案 1.使用keepalived+监控脚本实现主备切换 2.使用redis cluster实现双主切换,原理就是模仿MySQL的bin-log机制. 本文介绍一下第1种方案

HDFS架构剖析

HDFS架构核心内容: 一.NameNode/DataNode 二.数据存储副本 三.元数据持久化 四.数据模型 五.故障容错 具体讲解: 一.NameNode/DataNode HDFS采用Master/Slave架构,其集群由一个NameNode和多个DataNodes组成. NameNode是中心服务器,负责管理文件系统的名字空间(namespace)以及客户端的访问.DataNode负责管理它所在节点上的存储.用户能够通过HDFS文件系统的名字空间以文件的形式在上面存储数据. 对于内部存

keepalived实现redis双主备份

现在的生产环境基本上都采用主备方式,而如何实现redis的主备呢?一般情况下,redis实现主从复制比较简单,只需要在从服务器的配置文件里配置 "slaveof "即可.但这样存在一个问题:主服务器挂掉时,可临时将业务地址转移到从服务器,但从服务器无法进行写操作.为解决这个问题,在网上查找了一些资料.主要有以下几种方案 使用keepalived+监控脚本实现主备切换 使用rediscluster实现双主切换,原理就是模仿MySQL的bin-log机制. 本文介绍一下第一种方案 设计思路

一种消息和任务队列——beanstalkd

beanstalkd 是一个轻量级消息中间件,其主要特性: 基于管道  (tube) 和任务 (job) 的工作队列 (work-queue):d 管道(tube),tube类似于消息主题(topic),在一个beanstalkd中可以支持多个tube,每个tube都有自己的producer和consumer: 任务(job),beanstalkd用job代替了message的概念,与消息不同,job有一系列状态:  内部实现采用了 libevent, 服务器-客户端之间用类似 memcache

Redis 在CentOS 6上的 安装和部署以及redis的主从复制sentinel实现HA

一.简介Redis是基于内存的存储,所有数据都工作与内存中,基于键值存储(key-value store),经常拿来跟memcached做比较:memcached没有持久能力,Redis有持久能力,可以把内存中的数据写入到磁盘中:memcached是多线程服务器,redis是单线程服务器,一个线程响应所有的客户端请求. Redis的数据的持久可以有两种机制来实现:一是基于RDB,另一种机制是基于AOF来实现. 从本质上来讲Redis是一个高级的key-value store 和数据结构存储,Re

redis系列-14点的灵异事件

概述 项目组每天14点都会遭遇惊魂时刻.一条条告警短信把工程师从午后小憩中拉回现实.之后问题又神秘消失.是PM喊你上工了?还是服务器给你开玩笑?下面请看工程师如何一步一步揪出真凶,解决问题. 如果不想看故事,可以直接跳到最后事后烟章节下看和Redis相关部分. 起因 某天下午,后端组的监控系统发出告警,服务器响应时间变长,超过了阈值.过一会儿系统自动恢复了,告警解除. 第二天差不多的时间点,监控系统又发出了同样的告警,过几分钟后又恢复了. 我们决定排查这个问题. 背景 首先要介绍一下应用的架构,