文档详情

京东弹性数据库的最新实践.docx

发布:2018-01-19约1.22万字共38页下载文档
文本预览下载声明
京东弹性数据库的最新实践京东弹性数据库不是一个单一的产品,而是京东在对数据库的使用、运维和开发过程中遇到的一系列问题的解决方案,和运维经验的总结升华进而形成的一套产品系列,主要包括三大功能模块:核心功能模块:JED,提供数据查询和写入的自动路由、自动弹性伸缩、自动FailOver、自动负载调度和数据库服务智能自治的功能。实时数据发布与订阅模块: BinLake,完全自助、无状态、自动负载、完全自治、可横向扩展的集群化Binlog采集和订阅服务。自动化运维模块:DBS,实现了京东线上所有数据库服务申请、DDL/DML上线、数据抽取等的流程化和自动化。 分享大纲:1、发展历程2、功能特性3、整体架构4、实现细节5、使用情况一、发展历程在我2011年加入京东之初,京东的数据库正是处于诸侯混战的阶段,各种数据库都有,包括:MySQL、PostGre、Oracle、SQL Sever,在2011年之后,开始去IOE,到了2014年,京东基本上完成了去IOE,所有的业务系统都迁移到了MySQL上。在大规模使用MySQL的过程中,我们发现,随着业务数据量的增长,很多业务开始了漫长的分库、分表之旅,起初各个业务系统在自己的业务代码中维护分库分表的路由规则,而且各个业务系统的路由规则和整体设计都不一样,后来由于人员更迭以至于业务代码无法维护,不同业务使用的数据库分库分表模式不尽相同,导致数据库的维护工作也难如登天。这时我们开始重新思考应该提供什么样的数据库服务,得出了以下几点:统一分库分表标准路由针对业务透明数据库服务伸缩无感知统一数据服务业务研发自助申请服务数据库运维工作自动化为了实现上述功能特点,我们分为两步走:第一步是优先解决业务和运维窘境,从而争取足够的时间和技术buffer进一步完善产品,第二步是最终完美形态的产品研发。因此,我们首先在2015年开发了JProxy,优先解决紧急的业务和运维难题:分库分表规则统一化和路由透明化。在拿到充分的时间buffer后,我们从2016年开始以匠人的精神精雕细琢京东弹性数据库。二、功能特性如前面所说:京东弹性数据库是一个产品系列,主要是解决数据库的运维、使用和研发过程中的问题,具备动态伸缩、高可用、查询透明路由、集群化日志服务和自动化运维等功能。本章将就京东弹性数据库三个核心模块的功能进行详细说明。1、JED(JD Elastic DataBase)JED是JProxy功能的父集,它除了具备透明路由、统一分库分表标准之外,还提供了五大功能:(1)在线动态扩容起初某个业务可能申请了4个分库,后面随着业务的发展,数据量越来越大,可能需要扩容到 8个分库,一般的数据库中间件在扩容时,需要与业务研发部门协商一个业务低谷期停业务,然后进行扩容,扩容完毕后重新启动业务。为了解决这个问题,JED提供了在线动态扩容功能,扩容只会对业务造成秒级影响,且无需人工介入。我们现在可以触发自动扩容,设置的策略是当磁盘的使用率达到80%,就自动进行扩容。(2)自动FailoverMaster一旦出现宕机,哨兵检测系统就会第一时间检测到,会自动触发注册在哨兵检测系统中的Hook程序,Hook程序就会选择一个最新的Slave替换Master,然后更新ETCD中的元数据信息,业务方的下一次请求就会发送新的Master上。(3)兼容MySQL协议JED是完全兼容MySQL协议的,即通过MySQL的Client端或者标准的JDBC Driver都可以连接到JED的Gate层,然后进行查询和计算。(4)多源数据迁移我们基于ghost进行改造,开发了京东的数据传输和接入工具: JTransfer,实现了业务数据的动态迁移。如果以前你的业务是运行在MySQL上的,现在要迁到JED上,你不需要停止任何业务,直接启动JTransfer的数据迁移服务,就可以在后台自动完成数据的同步和迁移。迁移完毕后,JTransfer会自行比对JED上的数据与原来数据的一致性和lag计算,当数据完全一致,且lag小于5秒时,就会邮件通知业务方进行复验,复验没有问题,业务方直接将数据库连接指向到JED就可以正常提供服务了。(5) 数据库审计JED具有数据库审计的功能,该功能实现在Gate层,在Gate层我们会得到应用发送给JED的所有SQL,然后将SQL语句或者SQL模板发送给MQ。由于是在Gate层实现的,而Gate层与MySQL服务不在一个容器上,因此对MySQL服务不会产生任何的负面影响。2、BinLakeBinLake只做一样工作:集群化Binlog的采集和订阅服务。BinLake之前,我们使用Canal进行binlog采集,但我们发现存在资源浪费等问题:若一个业务需要采集MySQL Binlog,并且还需要HA保证的话,我们至少需要两台服务器。那多个业务怎
显示全部
相似文档