1.场景

image.png image.png
image.png

image.png
image.png
解决方案
image.png
image.png
好处
image.png

2.中间件

image.png
image.png

image.png

image.png
数据库中间件主要负责把数据分发到数据库
image.png

如何拆分数据库

image.png
image.png
水平拆分.png

如何将未分库分表的系统,动态切换到分库分表上(生产上的切换流程,线上迁移)

image.png
image.png
image.png
image.png
image.png

不停机双写方案

image.png

image.png
image.png
image.png

如何动态扩容缩容

image.png
image.png
停机扩容不建议使用
image.png

分库分表id主建问题

image.png
image.png
image.png
image.png
image.png
image.png

数据库自增id

做一个全局自增主建的表
缺点:全局的主建库有瓶颈
适用环境:并发很低,几百/s 但是数据量大,几十亿数据,所以需要分库分表来存放海量数据
image.png

UUID

适用环境:图片编号,不适用生成唯一id,由于长度较长会影响性能

雪花算法

image.png
给大家举个例子吧,比如下面那个 64 bit 的 long 型数字:
第一个部分,是 1 个 bit:0,这个是无意义的。
第二个部分是 41 个 bit:表示的是时间戳。
第三个部分是 5 个 bit:表示的是机房 id,10001。
第四个部分是 5 个 bit:表示的是机器 id,1 1001。
第五个部分是 12 个 bit:表示的序号,就是某个机房某台机器上这一毫秒内同时生成的 id 的序号,0000 00000000
image.png

Mysql读写分离

image.png
image.png
image.png
image.png
image.png
image.png

为什么MySQL要读写分离

image.png

读写分离

image.png

MySQL主从复制原理

image.png
image.png