深入解析 MongoDB Plan Cache

前段时间笔者遇到一个MongoBD Plan Cache的bug,于是深究了下MongoDB优化器相关源码。在这里分享给大家,一方面让大家知道MongoDB优化器工作原理,一方面就是避免踩坑。 首先帖一下笔者反馈给官方的bug地址:https://jira.mongodb.org/browse/SERVER-34785 注意目前官方仍在修复中,最新动态可参考:https://jira.mongod…

Continue Reading

深入浅出MongoDB复制

申明 本文由笔者首发于 InfoQ:《深入浅出MongoDB复制》 MongoDB中文社区:《深入浅出MongoDB复制》 由于自己开了blog,所以将之前比较好的文章挪过来便于大家浏览。 综述 笔者最近在生产环境中遇到许多复制相关问题,查阅网上资料发现官方文档虽然系统但是不够有深度,网上部分深度文章则直接以源码展示,不利于大家了解。所以本文则是结合前两者最终给读者以简单的方式展现MongoDB复…

Continue Reading

深入浅出 Redis client/server交互流程

申明 本文由笔者首发于InfoQ:《深入浅出 Redis client/server交互流程》 由于自己开了blog,所以将之前比较好的文章挪过来便于大家浏览。 综述 最近笔者阅读并研究redis源码,在redis客户端与服务器端交互这个内容点上,需要参考网上一些文章,但是遗憾的是发现大部分文章都断断续续的非系统性的,不能给读者此交互流程的整体把握。所以这里我尝试,站在源码的角度,将redis c…

Continue Reading

Redis 内存分配分析

为什么要分析 之前业务反应,数据导入到Redis 中,内存是原来文件占用的几倍。所以这里来介绍一下Redis是如何分配内存的。并且在我们日常去评估一个新上线的业务redis内存使用也是非常有帮助的。 需要了解的 这里以简单的Redis String数据类型作为例子,其他数据类型可以作为参考,只要不是采用压缩数据类型存储的。全文会介绍到涉及到内存分配的地方。并且会以此来计算Redis使用的内存,最终…

Continue Reading

如何解决Redis 主从数据不一致问题

线上问题 近期我们在对Redis做大规模迁移升级的时候,采用模拟复制协议的方式进行数据传输同步。 在此期间,我们遇到如下两个问题: 迁移前后Redis过期时间不一致。 迁移前后Redis key 数量不一致。 迁移前后Redis过期时间不一致 针对第一个问题,Redis 过期时间不一致问题,通过测试并且查阅Redis源码中得出如下结论: Redis社区版本在正常的主从复制也会出现过期时间不一致问题…

Continue Reading

shutdown abort模式丢失redo,使用隐含参数启库

shutdown abort模式 丢失redo log 无法open数据库 通过告警报错ORA-00354: corrupt redo log block header 从该错误可以看出当前日志的redo block的header出现问题,导致oracle无法读取redo进行恢复。通过以下检查发现数据库文件头都一致,没有需要恢复的文件,但是由于数据库是非正常关闭,last_change scn没有…

Continue Reading

使用bbed修改数据

bbed是一个强大的工具,允许我们绕过oracle直接从数据文件中修改对应的内容 ZBDBA@orcl11g>select * from emp; EMPNO ENAME JOB MGR HIREDATE SAL COMM DEPTNO ———- ——————– —————— ———- ———— —…

Continue Reading

跳过丢失归档进行恢复

在我们恢复的时候,发现中间缺失归档,大部分dba认为从缺失的归档开始以后的归档都无法进行恢复。但是我们从非常规的方式,修改数据文件对应的信息是可以跳过该缺失的归档,并且利用后面的归档进行恢复的。 SYS@orcl11g>recover datafile 6; ORA-00279: change 2054392 generated at 10/28/2014 23:20:14 needed f…

Continue Reading