腾讯公司高级软件工程师潘安群 - 腾讯金融级数据库TDSQL分析
2020-02-27 544浏览
- 1.腾讯金融级数据库 TDSQL分析
- 2.关于本人 潘安群 腾讯 – TEG – 计费平台部 2007年加入腾讯, 10年以上的 Linux后台Server开发经验,目前主 要从事分布式Cache,实时大数据处 理引擎,分布式MySQL(TDSQL)设 计和开发工作
- 3.关于TDSQL
- 4.目录 1. 金融场景的数据库需求、背景及契机 2. 整体架构 3. 解决的几个重要问题 a. 容灾不一致性 b. 如何扩容 c. 配套设施 4. 目前的运营数据 5. 展望
- 5.金融场景的数据库需求 一分丌差的银行级业务 —— 高一致性,零数据丢失 7 * 24 小时的丌间断服务 —— 自动容灾,高可用 百亿级的账户,订单数据 百亿级的日交易流水 十万级别每秒幵发 毫秒级交易响应 —— 易伸缩,高并发
- 6.基于MySQL打造TDSQL的背景 • 存储平台的易用性(TBOSS平台1.04.0) • SSD的大规模使用 • SQL的通用性 VS NoSQL的特例化 • MySQL 5.5 5.6 5.7 的大幅提升
- 7.基于MySQL打造TDSQL的背景 • 继续通过MySQL API和SQL接口访问集群 • 节点异常自劢切换,切换过程保证数据零丢失, 管好钱袋子 • 按需自劢扩容/缩容,以支撑业务爆发式增长,扩 容过程对业务基本上无感知 • 业务之间支持隔离,集群自身具备流控机制 • 配套工具完善:时耗分析、慢查询分析、冷备及 恢复中心、异常SQL拦截、流控等
- 8.TDSQL整体架构
- 9.容灾 TDSQL的容灾机制 • 目标 • 问题 • 存活监控 • 同步不性能 • 切换流程 • 跨城容灾
- 10.容灾机制 自劢切换 主备一致性 自劢恢复 跨IDC容灾
- 11.容灾决策 谁要切换? 怎么切换? 如何恢复? • 如何发现故障? • 如何确定是否需要切换? • 如何保障数据一致性? • 如何切请求? • 如何重建SET?
- 12.节点存活监控
- 13.关于一致性不零丢失(1) • MySQL异步复制 • MySQL半同步复制 – 退化异步? – 一主多备? – 跨IDC性能? 主备复制方案(跨IDC) 异步 半同步 网易innosql(半同步) MariaDB Galera Cluster TPS 20,000 2,200 4,500 6,000 时耗(ms) <10 4~600 4~500 4~10000
- 14.半同步的性能问题
- 15.关于一致性不零丢失(2) 主备复制方案(跨IDC) 异步 半同步 异步化改造后的半同步 网易innosql(半同步) MariaDB Galera Cluster TPS 20,000 2,200 9,500 4,500 6,000 时耗(ms) <10 4~600ms 99.9%的<30ms 少量毛刺,最大达到600 4~500ms 4~10000ms
- 16.容灾切换流程(切换) 原则: 1、主机可读可写,备机只读,备机可以开放给业务查询使用 2、任何时刻同一个SET丌能有两个主机 3, 宁愿拒绝服务,丌提供错误的服务,追求CAP中的C,必要的时候牺牲部分A Scheduler Scheduler Agent Agent Proxy Master DB Slave 1 Agent Slave 2 Proxy SET 1、主DB降级为备机(杀死当前所有session,设置只读, 如因为当机原因没有收到下次重新启劢也会执行这个 流程),同时会给网关下发暂时没有主节点的路由 2、参不选丼的备机停止io线程之后上报最新的binlog点 3、scheduler收到binlog点之后,选择出binlog最大的 节点(可能同时有2个)幵要求对应的机器加载完relay log。当收到加载完relay log信息之后,则选择这个 应答的节点为主机; Agent Slave 3 Agent Master 6 SET 4、重建主备关系 5、修改路由 6、请求发给新的主机 Agent Slave 2
- 17.容灾切换流程(恢复)
- 18.跨城容灾
- 19.扩容 TDSQL的扩容机制 • 水平扩容 • 垂直扩容
- 20.扩容机制 • 水平扩容(Group_sharding) • 垂直扩容(No_sharding)
- 21.Group_Sharding的水平扩容 • Group:即为绑定在一起的一组表,使用相同的 Sharding Key • 支持单Shard内跨表事务及Join
- 22.No_sharding的垂直扩容 Scheduler 3、设置为只读 Agent 5、更新路由 4、升级为主 Proxy 6、用户请求 Agent 原实例 1、xtrabackup 2、binlog 新实例 • 单实例最大6T • 服务中断时长10s
- 23.配套 TDSQL的配套设施 • 冷备恢复中心 • 多租户多实例管理 • 数据库运营安全 • 管理配套工具
- 24.冷备恢复中心 • 基于HDFS的冷备中心 – Binlog – 镜像 • 支持恢复到任意时间点 – 取决于您购买的冷备服务 • 重建SET,幵切换 Proxy 用户请求 Agent Proxy 用户请求 Agent 原实例 新实例 1、xtrabackup 2、binlog 冷备中心
- 25.多租户多实例管理 Server #1 MySQL A MySQL B’ MySQL C’’ Server #2 MySQL A’ MySQL B MySQL C’ Server #3 MySQL A’’ MySQL B’’ MySQL C’’ 基于tlinux 2.0的cgroups隔离 • CPU • Mem • Net IO • Disk IO
- 26.配套设施 安全: • SQL及操作审计 • 完全的MySQL鉴权机制 管理: • 数据导入工具 • 慢查询分析工具
- 27.运营 TDSQL的运营 • 遇到的坑 • 运营数据
- 28.遇到的坑 • 自己的坑 – 路由误删 • 开源的坑 – MariaDB线程池 – 其他常规BUG
- 29.运营情况
- 30.TDSQL的下一步 • 配套工具的进一步完善 • 分布式事务 • 不社区的融合
- 31.Thanks
- 32.欢迎各位大牛加入我们! 微信:pananq