专栏系列(点击解锁)
学习路线(点击解锁)
知识导向
Redis从入门到精通与实战
Redis从入门到精通与实战
围绕原理源码详解Redis笔试知识点和实战
MySQL从入门到精通
MySQL从入门到精通
MySQL知识全面讲解,企业级MySQL实战
计算机基本原理
深入理解计算机系统CSAPP
基于对计算机系统、预制计算机系统和计算机思维的深刻理解
Linux内核源码分析
围绕Linux内核讲解计算机的底层原理和并发
数据结构与企业题库精讲
数据结构与企业题库精讲
结合工作经验,通俗易懂,适合各个层次,面试面试算法题
互联网架构分析与实践
企业系统架构分析实践与实施
行业最前沿视角问道私服连接到数据库怎么修改,聚焦技术架构与架构实践的升级路线
互联网公司防止资金流失的实践
互联网金融公司防资金流失方法理论、规范与实践
Java 全栈白皮书
精通Java8和函数式编程
本专栏立足实战,逐步深化Java8及未来编程模型
深入理解JVM
详细介绍显存区、字节码、方法底层、类加载和GC知识
深入理解高并发编程
深入理解 Linux 内核、汇编和 C++ 中的并发编程
源码分析
Core 7 IOC/AOP等源码分析
源码分析
核心源码分析
Java核心技术
只谈Java核心技术
本文目录
本文是真实百亿数据分库分表的脱敏生产实践方案解读。 第一部分分析了分库分表的重点和难点,给出了总体架构设计图。 第二部分是分库分表架构分析,dump库源迁移配置,数据路由,数据源配置,全量+增量同步复制和重试方案,验证数据定时任务方案,最后一部分是介绍分库分表技术方案客户端直连MyCat中间层。
一、企业级分库分表生产实践方案一、分库分表重点难点分析
一般生产环境数据库的结构是经过时间和业务迭代后生成的。 从一组单库单表迭代到分库分表时,需要注意很多激励因素。
1、如果你跑的是单库单表的数据库,代码对应的是单库单表。 要部署分库分表的数据库环境,需要在每台服务器上安装一个mysql实例。 每个mysql实例在里面创建一个,为每个建一堆表。
2、分库分表的数据库为空,如何迁移历史上所有的数据。 如果亿级表中有大量历史数据,但还在更新中,如何将单库单表的所有数据全部复制到子库子表环境中(全同步+增量同步)。 数据在复制过程中仍在变化。 需要同步全量复制和增量复制中变化的数据,为了保证全量一致性,还需要进行全量数据校验
3、单库单表的老数据库怎么下线? 对于每一个数据库迁移需求,新旧数据库往往是一起使用的。
4、如何将现有数据分散到分库中,如何扩展分库和分表的数据容量。
2.架构设计图
针对以上问题,这里给出架构设计图,如下:
二、分库分表架构分析 1、数据库源迁移配置 1.1. 数据路由
原单库单表的数据库不需要做分库路由。 目标数据库(分库分表)需要根据某个数组决定如何路由到哪个分库的表。 通常10-100个数据库的方案会根据用户ID、订单ID、个人业务ID的后1-2位进行路由。
1.2. 数据源配置
请参考:【MyCat】MyCat分库、分表、分表规则配置解读与实践(MyCat列启动)、【MySQL】MyCAT三大配置文件解读(MySQL列启动)、【MySQL】高-性能与高可用表设计实践-表设计(MySQL专栏开篇)
2.全量+增量同步复制方案
通常,数据同步采用全量同步+增量同步的方式。 JOB调度系统()发起数据同步任务,将历史数据同步写入分库分表环境。 在这个过程中,单库单表的所有数据都会不断的增删改查,同步进行增量数据复制。 在数据全量复制的过程中,数据的变化也必须进行增量复制。 数据保持一致同步,旧数据库下线。
1. 对于已经存在的数据,这些方案后期需要删除非对应分片的数据,存在风险。
2、业务后缀为存量数据全量导出到分库,增量数据通过业务系统后缀传输到原库和分库,实现一致性,业务系统实现后缀。
业务后缀分为3步:1.同步写旧库,异步写分库(查询单库,根据旧库查看新库中的旧数据),2.同步写老库,同步写新库(查询查分库), 3.如果此时没有问题, 2.同步写新库,下线分库(查询查分库)
3、一定时间后,单库单表数据与分库分表数据一致同步,老库下线。
3.查看数据定时任务方案
对于batch(迁移任务表),先从旧库中获取一批数据,然后从新库中获取一批数据,对数据进行校验和校准问道私服连接到数据库怎么修改,对数据进行归一化处理,完成数据校验, 校准和修改状态(迁移库计划的校准位),如果数据验证失败,记录数据验证错误信息。
三、分库分表技术方案
建议选择代理模式的中间层集中管理和监控,没有代码侵入,推荐中间件MyCAT。
1.模式(客户端直连)
模式,客户端直连方案,没有中间层比较轻,没有额外的开销,性能比较好,支持的语言比较单一,代码侵入性强,比如TDDL,-jdbc,Cobar-
2.代理模式(中间层)
代理模式,在应用程序和MySQL之间建立一层代理。 中间层介于应用程序和数据库之间。 需要做一个转发,应用程序直接连接数据库,在性能上有一定的优势。 并不是说中间层不一定比客户端直连差。 不仅是业绩,还有很多激励因素要考虑。 中间层更容易实现监控、数据迁移、连接管理等功能。 比如阿里cobar、MyCAT、MySQL-Proxy、、Atlas(360)。
总结
本文是真实百亿数据分库分表的脱敏生产实践方案解读。 第一部分分析了分库分表的重点和难点,给出了总体架构设计图。 第二部分是分库分表架构分析,dump库源迁移配置,数据路由,数据源配置,全量+增量同步复制和重试方案,验证数据定时任务方案,最后一部分是介绍分库分表技术方案客户端直连MyCat中间层。