分享

微服务架构之MySQL数据库拆分原理详解

 0璇玑玉衡0 2017-11-21

概述

拆分数据库时,数据库将被重新组织成两个文件:后端数据库和前端数据库,其中前者包含各个模拟运算表,后者则包含查询、窗体和报表等所有其他数据库对象。每个用户都使用前端数据库的本地副本进行数据交互。要拆分数据库,请使用数据库拆分器向导。拆分数据库后,必须将前端数据库分发给各个用户。

一丶现状

我们将一个大而全的系统一拆为三,容器,发布,测试都已经独立出去,但是原始的数据库还是一套,现在需要将数据库做一个拆分,A、B、C三个系统有各自的数据库之后,我们的微服务化在现有部署、测试等已经独立的基础上才算最终完成,形成三个各自独立的单元。因此本篇文章叙述的不是数据库的水平拆分也不是垂直拆分,不是讲述分库分表,而是讲述从业务系统去拆分数据库,把业务最终微服务化。

微服务架构之MySQL数据库拆分原理详解

现状

二、方法

微服务架构之MySQL数据库拆分原理详解

拆分方案

SOA

通过提供RPC接口,将原先共用的表有一方系统提供接口服务,另一方系统来调用该接口。这种情况下系统之间是解耦了,但是数据调用的时候一方还是要强依赖另一方。这个时候要重新关注接口服务方如果down掉或者延时发生,需要有容错机制,比如熔断、降级等。同时要考虑好数据的托底展示,比如本机缓存,remote缓存。

数据异构

通过数据异构的方式,比如B系统与C系统原来是一张表,数据库拆分之后这张表的数据放在了C系统,但是B系统只需要这张表的部分字段,这个时候可以通过异构平台把C系统的表按需异构到B系统中的一张表。这样两个系统之间彻底解耦,各自微服务化,也没有了SOA方式的强依赖问题。

三、拆库的步骤(mysql)

集群A(源库)

集群B(新搭建)

集群C(新搭建)

微服务架构之MySQL数据库拆分原理详解

DB拆库起始位置

注意此方案需要停写!

步骤一、搭建集群B、C

将集群B、C以从库形式挂载到集群A

步骤二、将如下集群A主库设置为只读模式

192.168.x.x xx.mysql.xxx.com

命令:set global read_only=on;

步骤三、待从库无延迟后,集群B、C停止复制,执行如下操作

命令:stop slave;

此时A、B、C三套集群均为只读模式

步骤四、研发人员修改应用url指向到正确的数据库集群,待确认无误后,(此时可回退,打开写后不可回退)

通知DBA将集群A、B、C三套打开读写

命令:set global read_only=off;

步骤五、拆分完成

微服务架构之MySQL数据库拆分原理详解

DB最终位置

步骤六

观察一段时间后drop冗余表,DBA在复制的时候实际上是全量复制,因此后续我们需要drop掉各自系统内不需要的表。可以用rename的方式先行标出,一段时间后再drop掉。

===================================================================

回退方案

步骤一、集群B、C打开复制

命令:start slave;

步骤二、打开集群A的读写

命令:set global read_only=on;

四、SOA和微服务

SOA面向服务架构,是一种粗粒度、松耦合服务架构,服务之间通过简单、精确定义接口进行通讯,不涉及底层编程接口和通讯模型。关键点是接口调用,这是目前分布式系统中常用的方法。目前开源的RPC框架也有很多比如知名的DUBBO服务等。

微服务的重点是业务系统要彻底组件化和服务化,原有的单体应用系统会拆分为多个可以独立开发、运行、部署和运维的小应用。这些小的应用之间如果需要交互就通过服务来完成,比如提供DUBBO接口服务。每个小应用内部从前端WEB到业务逻辑处理,到数据库访问,以及数据库都是独立的。

总结

到这里微服务架构之MySQL数据库拆分原理详解结束了,不足之处还望大家多多包涵!!觉得收获的话可以点个关注收藏转发一波喔,谢谢大佬们支持。(吹一波,233~~)

下面和大家交流几点编程的经验:

1、多写多敲代码,好的代码与扎实的基础知识一定是实践出来的

2丶 测试、测试再测试,如果你不彻底测试自己的代码,那恐怕你开发的就不只是代码,可能还会声名狼藉。

3丶 简化算法,代码如恶魔,在你完成编码后,应回头并且优化它。从长远来看,这里或那里一些的改进,会让后来的支持人员更加轻松。

最后,每一位读到这里的网友,感谢你们能耐心地看完。希望在成为一名更优秀的Java程序员的道路上,我们可以一起学习、一起进步。

想了解学习以上内容可加群469717771 验证:(009)

微服务架构之MySQL数据库拆分原理详解

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多