南通网站开发招聘,现在去甘肃会被隔离吗,chatgpt 在线,本地搭建linux服务器做网站#x1f4eb;作者简介#xff1a;小明java问道之路#xff0c;2022年度博客之星全国TOP3#xff0c;专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化#xff0c;文章内容兼具广度、深度、大厂技术方案#xff0c;对待技术喜欢推理加验证#xff0c;就职于… 作者简介小明java问道之路2022年度博客之星全国TOP3专注于后端、中间件、计算机底层、架构设计演进与稳定性建设优化文章内容兼具广度、深度、大厂技术方案对待技术喜欢推理加验证就职于知名金融公司后端高级工程师。 热衷分享喜欢原创~ 关注我会给你带来一些不一样的认知和成长。 2022博客之星TOP3 | CSDN博客专家 | 后端领域优质创作者 | CSDN内容合伙人 InfoQ(极客邦)签约作者、阿里云专家 | 签约博主、51CTO专家 | TOP红人、华为云享专家 如果此文还不错的话还请关注、点赞、收藏三连支持一下博主~ 文末获取联系 精彩专栏推荐订阅收藏 专栏系列点击解锁 学习路线点击解锁 知识定位 Redis从入门到精通与实战 Redis从入门到精通与实战 围绕原理源码讲解Redis面试知识点与实战 MySQL从入门到精通 MySQL从入门到精通 全面讲解MySQL知识与企业级MySQL实战 计算机底层原理 深入理解计算机系统CSAPP 以深入理解计算机系统为基石构件计算机体系和计算机思维 Linux内核源码解析 围绕Linux内核讲解计算机底层原理与并发 数据结构与企业题库精讲 数据结构与企业题库精讲 结合工作经验深入浅出适合各层次笔试面试算法题精讲 互联网架构分析与实战 企业系统架构分析实践与落地 行业最前沿视角专注于技术架构升级路线、架构实践 互联网企业防资损实践 互联网金融公司的防资损方法论、代码与实践 Java全栈白宝书 精通Java8与函数式编程 本专栏以实战为基础逐步深入Java8以及未来的编程模式 深入理解JVM 详细介绍内存区域、字节码、方法底层类加载和GC等知识 深入理解高并发编程 深入Liunx内核、汇编、C全方位理解并发编程 Spring源码分析 Spring核心七IOC/AOP等源码分析 MyBatis源码分析 MyBatis核心源码分析 Java核心技术 只讲Java核心技术 本文目录
本文目录
本文导读
一、企业级分库分表生产实践方案
1、分库分表重难点分析
2、架构设计图
二、分库分表架构分析
1、数据库源迁移配置
1.1、数据路由
1.2、数据源配置
2、全量增量同步复制方案
3、校验数据定时任务方案
三、分库分表技术方案
1、Client模式客户端直连
2、Proxy模式中间层
总结 本文导读
本文是真实百亿级数据分库分表生产实践方案脱敏后的详解第一部分分析分库分表重难点给出总架构设计图第二部分是分库分表架构分析暴扣数据库源迁移配置、数据路由、数据源配置、全量增量同步复制及重试方案、校验数据定时任务方案最后一部分是介绍分库分表技术方案客户端直连和MyCat中间层。
一、企业级分库分表生产实践方案
1、分库分表重难点分析
通常生产环境数据库的架构是经过时间和业务迭代之后形成的当从一组单数据库和表迭代到分库分表时需要注意许多因素。
1、如果跑的是如果是单库单表的数据库代码对应的也是单库单表部署一套分库分表的数据库环境就需要每台服务器上装一个 mysql 实例每个 mysql 实例里创建一个库每个库建一堆的表。
2、分库分表的数据库是空的以及如何迁移历史中的所有数据的问题如果十亿级表中有大量历史数据并且仍在更新那么如何将单个数据库和单个表中的全部历史数据完全复制到子数据库和子表环境中完全同步增量同步。数据在复制过程中仍在变化。有必要将完整复制过程中发生变化的数据与增量复制同步。为了确保完全一致性还需要进行完整的数据验证
3、如何将单库单表老数据库下线掉每个迁库的需求经常会有新老数据库一起使用的情况。
4、如何把已有的数据分散到分库里去呢分库分表数据扩容这个过程应该怎么来做。
2、架构设计图
针对以上问题这里给出架构设计图如下 二、分库分表架构分析
1、数据库源迁移配置
1.1、数据路由
原数据库单库单表不需要进行数据库分片路由目标数据库分库分表需要根据一定的字段决定如何路由到那个分库的表里一般情况下10-100个库的方案会根据 用户ID、订单ID已经某些业务ID的后1~2位进行路由。
1.2、数据源配置
请参考【MySQL】MyCat分库分表分片规则配置详解与实战MySQL专栏启动、【MySQL】MyCAT三大配置文件详解MySQL专栏启动、【MySQL】高性能高可用表设计实战-表设计篇MySQL专栏启动
2、全量增量同步复制方案
一般数据同步使用全量同步增量同步的方式JOB调度系统ElasticJob发起一个数据同步任务把历史数据同步和写入到分库分表环境里去在这个过程中单库单表中的数据还会不断的增删改操作同步的执行增量数据复制全量数据复制的过程中还得把数据变更增量复制等某个时间点单库单表数据和分库分表的数据是保持一致和同步将老库下线。
1、存量数据这种方案需要后续删除非对应分片的数据风险较大。
2、业务双写是存量数据全量导入分库增量数据通过业务系统双写到原库和分库中从而达到一致由业务系统实现双写。
业务双写分为3步一同步写老库异步写分库查询查单库以老库为准校对新库中的老数据二、同步写老库同步写新库查询查分库三、此时如果没问题二、同步写新库、下线分库查询查分库
3、等某个时间单库单表数据和分库分表的数据保持一致和同步将老库下线。 3、校验数据定时任务方案
对批次内迁移任务表的内先获取老库的一批数据再获取新库的一批数据对数据进行核对校验对数据进行归正处理完成数据核对校验更改状态迁库明细表校验位如果数据核对失败记录数据核对错误信息。 三、分库分表技术方案
建议是选择 Proxy模式 中间层集中管理监控并且无代码侵入推荐中间件MyCAT。
1、Client模式客户端直连
Client模式客户端直连方案无需中间层相对轻便、无额外成本、性能相对较好但是支持的语言相对单一且代码侵入强例如TDDL、sharding-jdbc、Cobar-Client
2、Proxy模式中间层
Proxy模式在应用程序和MySQL之间搭建一层Proxy。中间层介于应用程序与数据库间需要做一次转发直接由应用程序连接数据库性能上有些许优势这里并非中间层一定不如客户端直连除了性能需要考虑的因素还有很多中间层更便于实现监控、数据迁移、连接管理等功能。例如阿里cobar、MyCAT、MySQL-Proxy、Amoeba for MySQL、Atlas360。
总结
本文是真实百亿级数据分库分表生产实践方案脱敏后的详解第一部分分析分库分表重难点给出总架构设计图第二部分是分库分表架构分析暴扣数据库源迁移配置、数据路由、数据源配置、全量增量同步复制及重试方案、校验数据定时任务方案最后一部分是介绍分库分表技术方案客户端直连和MyCat中间层。