SlideShare a Scribd company logo
DBaaS In Xiaomi
李彬
About me
• 2008 ~ 2011 就职于百度,负责十分、凤巢、北
斗等核心商业数据库
• 2011 ~ 2012 合伙创业
• 2012 ~ 至今 就职于小米,负责数据库团队建设、
数据库优化等工作,关注自动化运维,云技术等
Agende
为什么要做DBaaS
怎么做的
DBaaS使用示例
后续计划
传统部署——运维驱动
传统部署
用户
• 响应周期长
• 等待时间不可控
DBADBA
• 重复、持续的工作
• 误操作、遗漏操作
• 很多事情还需要人工响应、处理
• 快速增长的集群带来的压力
DataBase As A Service
• 把数据库做成标准化服务
目标目标
快 捷快 捷 简 单简 单 高可用高可用 低维护低维护
可选方案
• 公有云
• 数据安全
• 可控性
• 私有云
• 无成熟的开源方案
• 自己动手,丰衣足食
数据
安全
成本
可控
性
需求
覆盖面
数据库
生命
周期
数据库
生命
周期
常规
操作
常规
操作
可用性
无新增
单点
隐患
无新增
单点
隐患
容错
能力
容错
能力
扩展性
支持多
种类型
数据库
支持多
种类型
数据库
性能
无额外
性能
损耗
无额外
性能
损耗
易用性
使用
便捷
使用
便捷
维护
成本低
维护
成本低
整体设计
服务
发现
服务器管理
服务部署 实例管理
数据管理
运行
状态
服务
发现
服务器管理
服务部署 实例管理
数据管理
运行
状态
服务器管理
管理服务器
故障检测
类型管理
配置管理
管理资源
资源分配
使用情况记录
资源回收
服务部署
生成镜像生成镜像 申请资源申请资源 部署应用部署应用
健康检查健康检查卸载应用卸载应用回收资源回收资源
实例管理
角色管理角色管理 配置管理配置管理 实例启停实例启停
状态监控状态监控故障处理故障处理
数据管理
数据
初始化
数据
初始化
数据迁移数据迁移
备份
恢复
备份
恢复
数据操作数据操作
服务发现
• 数据库实例地址信息
• 数据库角色信息
• 感知数据库实例变更情况
运行状态
性能指标性能指标
资源使用
情况
资源使用
情况
角色信息角色信息 报表报表
DBaaS Architecture
Framework
• 每种数据库服务有自己的Framework
• 实例管理
• 数据管理
• 故障管理
DBaaS MySQL
DBaaS MySQL特点
• 快速部署
• 1分钟内完成集群部署
• 单实例 & 多实例
• 可支持单机单实例部署,独占所有资源
• 也可单机多实例部署,提升硬件利用率
• 高可用
• 故障对服务透明
• 从库挂掉,自动重建一个从库实例,不影响访问
• 主库挂掉,1分钟内恢复主库功能
• 自动保持实例数不变
DBaaS MySQL特点
• 快速增加、减少只读实例
• 数据备份
• 可恢复到30天内的任意时间点
• 支持Proxy
• 统一入口
• 负载均衡
• 服务发现
• 状态报告
• 资源使用情况
• 数据库运行报表
MySQL REST API
• POST /v1/mysql
• 创建并启动新的MySQL集群
• GET /v1/mysql/{appId}
• 获取MySQL集群appId的信息
• DELETE /v1/mysql/{appId}
• 删除MySQL集群 appId
• DELETE /v1/mysql/{appId}/tasks/{taskId}
• 删除MySQL集群appId的只读实例taskId
• PUT /v1/mysql/{appId}/scaleout
• 扩容数据库集群appId的只读实例数
创建集群
POST /v1/mysql HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"app_id": "/department/product/service",
"instances":4,
"mem":12000,
"cpus":2,
"disk":0
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "User: dbUser, Pass: dbPass"
}
创建示例
删除集群
• DELETE /v1/mysql/{appid}
DELETE /v1/mysql/department/product/service HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Delete mysql app successful"
}
增加只读实例
• PUT /v1/mysql/{appId}/scaleout
PUT /v1/mysql/department/product/service/scaleout HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"instances": 6
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "MySQL scale out success"
}
减少只读实例
• DELETE /v1/mysql/{appId}/tasks/{taskId}
DELETE
/v1/mysql/department/product/service/tasks/department_product_service_mysql.7a4f4f
ac-6031-11e5-b804-ecf4bbd357d4 HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Delete mysql task department_product_service_mysql.7a4f4fac-6031-
11e5-b804-ecf4bbd357d4 successful"
}
Proxy REST API
• POST /v1/proxy
• 创建新的Proxy集群
• GET /v1/proxy/{appId}
• 获取数据库集群appId的Proxy信息
• DELETE /v1/proxy/{appId}
• 删除Proxy集群 appId
• PUT /v1/proxy/{appId}/scaleout
• 扩容ProxyappId的实例数
• DELETE /v1/proxy/{appId}/tasks/{taskId}
• 删除Proxy appId的实例taskId
创建数据库Proxy
POST /v1/proxy HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"app_id": "/department/product/service",
"instances":2,
"mem":120,
"cpus":2,
"disk":0
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Proxy deploy successful"
}
删除Proxy
• DELETE /v1/proxy/{appId}
DELETE /v1/proxy/department/product/service HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Delete proxy app /department/product/service successful"
}
扩容Proxy实例数
• PUT /v1/proxy/{appId}/scaleout
PUT /v1/proxy/department/product/service/scaleout HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
{
"instances": 3
}
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Proxy scale out success"
}
删除Proxy实例
• DELETE /v1/proxy/{appId}/tasks/{taskId}
DELETE
/v1/proxy/department/product/service/tasks/department_product_service_proxy.
7a4f4fac-6031-11e5-b804-ecf4bbd357d4 HTTP/1.1
Accept: application/json
Content-Type: application/json; charset=utf-8
HTTP/1.1 200 OK
Content-Type: application/json
{
"id": "/department/product/service",
"status": "ok",
"message": "Delete proxy task department_product_service_proxy.7a4f4fac-6031-11e5-
b804-ecf4bbd357d4 successful"
}
DBaaS Redis
DBaaS Redis特点
• 快速部署
• 1分钟内完成集群部署
• 自动分片
• 主从关系
• 高可用
• 故障对业务透明
• 从实例挂掉,自动重建一个从实例
• 主实例挂掉,秒级完成切换
• 自动保持实例数不变
Redis REST API
• POST /v1/redis
• 创建并启动新的Redis cluster集群
• GET /v1/redis/{appId}
• 获取Redis集群appId的信息
• DELETE /v1/redis/{appId}
• 删除Redis集群 appId
• DELETE /v1/redis/{appId}/tasks/{taskId}
• 删除Redis集群appId的实例taskId
DBaaS带来的改变
• 对于用户
• 使用的是资源,而不再是具体的服务器
• 按需使用资源,可以节省成本
• 无需关注底层结构
• 自助式管理,交付周期短
• 降低数据库使用门槛,有利于提高开发、测试效率
• 对于运维人员
• 可以减少基础运维工作量
• 更多精力投入优化、开发
• 提高人机比,提高运维效率
Next…
谢 谢!
虚位以待:
• 高级运维研发工程师
• 高级数据库开发工程师
• 高级应用运维工程师
• 高级系统运维工程师
简历请砸向这里:
libin_dba@xiaomi.com

More Related Content

PDF
阿里巴巴运维团队的无状态运维思路
mysqlops
 
PPTX
Pptv lb日志实时分析平台
drewz lin
 
PDF
豆瓣数据架构实践
Xupeng Yun
 
PPTX
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
Xuefeng Zhang
 
PDF
盛大游戏运维体系
Ken Liu
 
PPTX
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
liu sheng
 
PDF
天涯论坛的技术进化史-Qcon2011
Yiwei Ma
 
PDF
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术团队
 
阿里巴巴运维团队的无状态运维思路
mysqlops
 
Pptv lb日志实时分析平台
drewz lin
 
豆瓣数据架构实践
Xupeng Yun
 
浅谈电商网站数据访问层(DAL)与 ORM 之适用性
Xuefeng Zhang
 
盛大游戏运维体系
Ken Liu
 
20120613联动优势数据访问层DAL架构和实践4(刘胜)最新特性
liu sheng
 
天涯论坛的技术进化史-Qcon2011
Yiwei Ma
 
美团点评技术沙龙010-点评RDS系统介绍
美团点评技术团队
 

What's hot (20)

PPTX
中大型规模的网站架构运维 Saac
Chao Zhu
 
PDF
MySQL 高可用方案及成功案例
郁萍 王
 
PPTX
淘宝双11双12案例分享
vanadies10
 
PDF
阿里巴巴运维自动化的探索与规划
mysqlops
 
PDF
MySQL5.6&5.7 Cluster 7.3 Review
郁萍 王
 
PDF
MySQL 網路參考架構
郁萍 王
 
PPTX
大型电商的数据服务的要点和难点
Chao Zhu
 
PPT
淘宝网架构变迁和挑战(Oracle架构师日)
vanadies10
 
PDF
美团点评技术沙龙14:美团云对象存储系统
美团点评技术团队
 
PDF
自助工具助Dba提升效率
Chao Zhu
 
PPTX
賽門鐵克 Storage Foundation 6.0 簡報
Wales Chen
 
PDF
No sql@vip new
Chao Zhu
 
PPTX
大型系统的Java中间件实践q con北京
vanadies10
 
PPTX
SQL Server效能調校
國昭 張
 
PPT
Java@taobao
vanadies10
 
PDF
艺龙旅行网架构案例分享-Qcon2011
Yiwei Ma
 
PDF
构建基于Lamp的网站架构
Cosey Lee
 
PPT
淘宝Java中间件之路 it168
vanadies10
 
PDF
1号店数据库架构
Louis liu
 
PPTX
MySQL压力测试经验
Jinrong Ye
 
中大型规模的网站架构运维 Saac
Chao Zhu
 
MySQL 高可用方案及成功案例
郁萍 王
 
淘宝双11双12案例分享
vanadies10
 
阿里巴巴运维自动化的探索与规划
mysqlops
 
MySQL5.6&5.7 Cluster 7.3 Review
郁萍 王
 
MySQL 網路參考架構
郁萍 王
 
大型电商的数据服务的要点和难点
Chao Zhu
 
淘宝网架构变迁和挑战(Oracle架构师日)
vanadies10
 
美团点评技术沙龙14:美团云对象存储系统
美团点评技术团队
 
自助工具助Dba提升效率
Chao Zhu
 
賽門鐵克 Storage Foundation 6.0 簡報
Wales Chen
 
No sql@vip new
Chao Zhu
 
大型系统的Java中间件实践q con北京
vanadies10
 
SQL Server效能調校
國昭 張
 
Java@taobao
vanadies10
 
艺龙旅行网架构案例分享-Qcon2011
Yiwei Ma
 
构建基于Lamp的网站架构
Cosey Lee
 
淘宝Java中间件之路 it168
vanadies10
 
1号店数据库架构
Louis liu
 
MySQL压力测试经验
Jinrong Ye
 
Ad

Viewers also liked (7)

PPTX
基于Python构建可扩展的自动化运维平台
liuts
 
PDF
美团点评技术沙龙010-美团数据库自动化运维系统构建之路
美团点评技术团队
 
PDF
链家网存储架构变迁,吕毅
毅 吕
 
PDF
微博基于Docker的混合云平台设计与实践
Weibo Corporation
 
PPT
Django敏捷开发 刘天斯
liuts
 
PDF
關於測試,我說的其實是......
hugo lu
 
PDF
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Weibo Corporation
 
基于Python构建可扩展的自动化运维平台
liuts
 
美团点评技术沙龙010-美团数据库自动化运维系统构建之路
美团点评技术团队
 
链家网存储架构变迁,吕毅
毅 吕
 
微博基于Docker的混合云平台设计与实践
Weibo Corporation
 
Django敏捷开发 刘天斯
liuts
 
關於測試,我說的其實是......
hugo lu
 
Wot2015 微博平台护城河-构建高效的防御体系-王关胜
Weibo Corporation
 
Ad

Similar to D baa s_in_xiaomi (20)

PPT
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
 
PDF
合久必分,分久必合
Qiangning Hong
 
PDF
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
Shanda innovation institute
 
PDF
大众点评网的技术变迁之路
jeffz
 
PPTX
Application express overview_cn_final -v2
TravelSky
 
PDF
Yog Framework
fansekey
 
KEY
新浪微博平台与安全架构
n716
 
PDF
百度数据库中间层
yp_fangdong
 
KEY
Beyond rails server
Michael Chen
 
PPTX
Teched 2012 60分钟构建私有云
Cheng Zhang
 
PPTX
云梯的多Namenode和跨机房之路
li luo
 
PDF
ASP.Net MVC2 简介
Allen Lsy
 
PDF
王龙:百度数据库架构演变与设计
YANGL *
 
PDF
KSDG BaaS Intro
ericpi Bi
 
PDF
Nodejs & NAE
q3boy
 
PPT
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
 
PPTX
Accelerate Database as a Service(DBaaS) in Cloud era
Junchi Zhang
 
PPTX
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
 
PPTX
前端性能测试
tbmallf2e
 
PDF
Meteor
Tencent
 
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
锐 张
 
合久必分,分久必合
Qiangning Hong
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
Shanda innovation institute
 
大众点评网的技术变迁之路
jeffz
 
Application express overview_cn_final -v2
TravelSky
 
Yog Framework
fansekey
 
新浪微博平台与安全架构
n716
 
百度数据库中间层
yp_fangdong
 
Beyond rails server
Michael Chen
 
Teched 2012 60分钟构建私有云
Cheng Zhang
 
云梯的多Namenode和跨机房之路
li luo
 
ASP.Net MVC2 简介
Allen Lsy
 
王龙:百度数据库架构演变与设计
YANGL *
 
KSDG BaaS Intro
ericpi Bi
 
Nodejs & NAE
q3boy
 
如何架构和开发高性能,高伸缩性Web 应用系统
melity78
 
Accelerate Database as a Service(DBaaS) in Cloud era
Junchi Zhang
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
acelyc1112009
 
前端性能测试
tbmallf2e
 
Meteor
Tencent
 

D baa s_in_xiaomi