京东数据库智能运维平台建设之路
在传统的直连数据库的方案下,当Master出现网络不可达时,一般都会选择新的Slave变为Master,然后将原来Master上的域名漂移到新的Master上。但是这种方案在网络抖动的情况下很容易由于AppServer上的DNS缓存,而导致双Master,并且出现脏写的情况。从整体架构图可以看出,ContainerDB与用户之间通过Gate连接。Gate是一个集群化服务,多个Gate服务都映射到一个域名下,Gate通过IP地址直接访问各个MySQL服务,而且Gate对各个MySQL角色的识别完全依赖于元数据服务:Topology。当ContainerDB中某个MySQL的Master产生网络不可达时,会选出新的Master,并更新路由元数据信息,最后才做Master切换,这样就避免了由于网络抖动和DNS缓存而在成双主和数据脏写,从而对数据进行了严格的保护。 流式查询处理 ContainerDB通过在Gate层实现基于优先级的归并排序提供了快速流式查询的功能,在进行大批量数据查询时,能瞬时返回部分查询结果数据,极大提高客户体验。 无感知数据迁移 ContainerDB通过在交叉在Window函数中分别执行部分存量数据拷贝和增量数据追加的算法,开发了在线数据迁移和接入工具JTransfer,通过JTransfer可以将传统MySQL数据库中的动态数据迁移到ContainerDB中,当ContainerDB中的数据与源MySQL中的数据的lag小于5秒时,首先会将源MySQL停写,待lag变为0时将源MySQL的域名漂移到Gate集群,整个迁移过程用户AppServer无感知。 兼容MySQL协议 ContainerDB完全兼容MySQL协议,支持标准MySQL客户端和官方驱动程序接入,并且支持大部分ANSI SQL语法。 路由规则透明 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |