点评RDS平台介绍
陈柯任@DBA  201608  
• 背景
• 技术架构
• 面向DBA需求解决方案
• 面向开发需求解决方案
点评RDS平台介绍
背景(why?)
工单
审核
大表
DDL
标题内
容 故障
处理
。。。
Slow
SQL
处理
集群
扩容数据
迁移
数据
权限
背景(why?)
1.  ⼯工单审核,大表DDL,Slow Query,数据权限
——数据相关
1. 集群扩容,数据迁移,故障转移处理
——数据库相关
• 改造原系统 or 新建系统?
背景(why?)
老系统 RDS
没有统一的架构 统一的架构
无扩展性 支持横向扩展
维护成本高 维护成本低
功能单一 功能丰富
面向DBA 面向开发
技术架构
1. 系统基本架构
2. 无状态任务流中心
系统基础架构
可水平扩展 可水平扩展 可水平扩展 可水平扩展
	
  
	
  
slb 	
  
RDS
Lion
Puma
MHA
+
MySQL
Job
Center
	
  
	
  
Zebra
⽆无状态任务流中⼼心
1. Process由多个完全独立的task组成
2. 每个task可以有多个子task并发执行
Process
Center
task
queue
Task
Job
Center
success/failed
Create
process
doStart() doNext()
Task
Task
Single
Job
⽆无状态任务流中⼼心
⾯面向DBA解决⽅方案
1. 一键集群搭建,一键扩容/还原,自动备份
——一键日常维护
1. 库级别负载均衡,主从延迟过大Markdown从库访问,慢SQL封杀
——精细流量控制
1. 迁库/拆库,单表拆分,数据多维度同步
——动态数据迁移
⾯面向DBA解决⽅方案
1. 一键集群搭建,一键扩容/还原,自动备份
——一键日常维护
1. 库级别负载均衡,主从延迟过大Markdown从库访问,慢SQL封杀
——精细流量控制
1. 迁库/拆库,单表拆分,数据多维度同步
——动态数据迁移
以前的做法:
1. 联系开发停掉应
用?
2. 直接kill查询?
3. 切换数据库?
4. 防火墙封ip?
精细流量控制——慢SQL封杀
查找应用->联系开发->停掉应用->黄
花菜凉了
杀的还没有增加的快
整个集群被压垮
无辜应用躺枪
精细流量控制——慢SQL封杀
对每个通过zebra访问的SQL计算hash值,并放到SQL前缀
里面,禁止此ID值,这一类型SQL全部被封杀
/*id:fbe25163*/select ….
⾯面向DBA解决⽅方案
1. 一键集群搭建,一键扩容/还原,自动备份
——一键日常维护
1. 库级别负载均衡,主从延迟过大Markdown从库访问,慢SQL封杀
——精细流量控制
1. 迁库/拆库,单表拆分,数据多维度同步
——动态数据迁移
动态数据迁移——库表迁移
1. 集群间库表数据
迁移
2. 多库/多表同时
迁移
3. 多库迁移,数据
源切换相互独立
动态数据迁移——库表迁移
难点:
1.  如何保证数据一致性?
2.  如何最小化影响线上业务?
1   多
1 1
5 3
以前 现在
一次迁移一个库 同时迁移多个库
一次迁移忙一天 一次迁移一分钟
业务影响5分钟 业务影响3秒钟
动态数据迁移——库表迁移
迁移基本步骤:	
  
seed数据迁移
增量数据同步
账号及权限迁移
动态数据迁移——库表迁移
数据源切换
动态数据迁移——库表迁移
怎么实现增量同步?
中间机 puma
优点:速度快 优点:配置使用简单
缺点:只能同时从一个集
群迁移,资源利用率不高
缺点:速度上有不小性能
损失
NONO
YES
YES
切换动态数
据源
Kill query
end
YES
NO
start
A B
是否有
库需要迁移
数据是
否一致
权限是
否一致
Rename table
Lock tables
Reset slave
怎么安全可靠的实现数据源切换?
Dump数据
切换数据源
账号迁移增量同步添加临时数
据源
Reset slave
YES
权限是
否一致
Lock tables 数据是
否一致
切换动态数据源Kill queryRename table
end
NO
start
YES
单表拆分流程:
6
1
2
3
4
5
配置分表规
则
根据规则分
批dump数据
配置增量同
步任务
等待数据同
步一致
业务开启双
写
业务关闭
老表写入
动态数据迁移——单表拆分
⾯面向开发解决⽅方案
数据查询
数据修改
1.  	
  
2.  	
  
安全方便地
安全方便地
⾯面向开发解决⽅方案
处理方式 问题
1. 申请临时权限查询 a. 繁杂的账号管理,临时账号过期需重
新申请
b. 线上集群切换可能访问到主库
c. 不能控制用户访问,一些用户慢
SQL会影响线上业务
d. 审计和安全
2. 简易的需求提交平台 a. 许多需求需要DBA审核
b. 大表DDL需要DBA手工执行
原系统解决⽅方式:
⾯面向开发解决⽅方案
RDS的SqlEditor模块:
⾯面向开发解决⽅方案
RDS的SqlEditor模块:
⾯面向开发解决⽅方案
SqlEditor模块的优势:
1. 统一的系统级访问账号
2. 从向数据库申请权限变成向系统申请权限
3. 从根源上规范了用户的访问行为(默认访问运营库,主库
查询严格控制,返回结果1w行,60秒kill)
4. 审计、安全控制更加方便(读写权限分离,column级别的
密级设置以及数据模糊)
5. 自助化程度更高
谢谢  

美团点评技术沙龙010-点评RDS系统介绍