SlideShare a Scribd company logo
1 of 37
Download to read offline
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

What's hot

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

What's hot (20)

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

Viewers also liked

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

Viewers also liked (7)

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

Similar to D baa s_in_xiaomi

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

Similar to D baa s_in_xiaomi (20)

新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
合久必分,分久必合
合久必分,分久必合合久必分,分久必合
合久必分,分久必合
 
大众点评网的技术变迁之路
大众点评网的技术变迁之路大众点评网的技术变迁之路
大众点评网的技术变迁之路
 
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
[.Net开发交流会][2010.06.19]大众点评网的技术变迁之路(王宏)
 
Application express overview_cn_final -v2
Application express overview_cn_final -v2Application express overview_cn_final -v2
Application express overview_cn_final -v2
 
Yog Framework
Yog FrameworkYog Framework
Yog Framework
 
新浪微博平台与安全架构
新浪微博平台与安全架构新浪微博平台与安全架构
新浪微博平台与安全架构
 
百度数据库中间层
百度数据库中间层百度数据库中间层
百度数据库中间层
 
Beyond rails server
Beyond rails serverBeyond rails server
Beyond rails server
 
Teched 2012 60分钟构建私有云
Teched 2012 60分钟构建私有云Teched 2012 60分钟构建私有云
Teched 2012 60分钟构建私有云
 
云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路云梯的多Namenode和跨机房之路
云梯的多Namenode和跨机房之路
 
ASP.Net MVC2 简介
ASP.Net MVC2 简介ASP.Net MVC2 简介
ASP.Net MVC2 简介
 
王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计王龙:百度数据库架构演变与设计
王龙:百度数据库架构演变与设计
 
KSDG BaaS Intro
KSDG BaaS IntroKSDG BaaS Intro
KSDG BaaS Intro
 
Nodejs & NAE
Nodejs & NAENodejs & NAE
Nodejs & NAE
 
如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统如何架构和开发高性能,高伸缩性Web 应用系统
如何架构和开发高性能,高伸缩性Web 应用系统
 
Accelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud eraAccelerate Database as a Service(DBaaS) in Cloud era
Accelerate Database as a Service(DBaaS) in Cloud era
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
 
前端性能测试
前端性能测试前端性能测试
前端性能测试
 
Meteor
MeteorMeteor
Meteor
 

D baa s_in_xiaomi