mysql集群

1.MySQL高可用集群原理
(1)数据库的主从架构与分库分表
数据量大,使用MQ削峰。 但是数据库本身的性能得不到提升。
数据库提升,基于分布式解决方案。最为常见的MySql以及ShardingSphere框架,来分库分表。
单机---->集群
(2)MySql主从同步
mysql集群_第1张图片
在MySQL运行的过程中,打开BinLog日志,在从库上起一个线程,与主库链接。监听主库日志,拉取数据。
对MySQL来说,性能是最高的。
BinLog默认不开。

2.MySQL主从集群
注意时间同步。启用ntp服务。
mysql集群_第2张图片
mysql集群_第3张图片
主从同步,以库为单位。
show master status

GTID同步集群
本质是基于BinLog来实现同步。它会基于事务的ID,同步。准确性更高一点。

3.异步复制和半同步复制
mysql集群_第4张图片
半同步可以降级为异步。
主从的状态是没有办法切换的。

4.高可用方案

让主从可以切换。
MMM
主主复制
mysql集群_第5张图片
VIP,虚拟IP,对应真实的IP。
VIP漂移。
基本要淘汰。缺陷,容易丢失事务。 高可用不行。
MHA
mysql集群_第6张图片

MGR
mysql集群_第7张图片
多主模式
单主模式
一个集群最多支持9个节点

分库分表方案介绍
(1)垂直分片:
mysql集群_第8张图片
整体数据量大,有作用。
只是单个表数据量大,并行。

(2)水平分片mysql集群_第9张图片
缺点,不好扩容。

常用策略:
取余\取模:存放均匀,扩容麻烦
按照范围分片: 容易扩容, 数据分布不均
按照时间分片:毕节容易交热点数据区分出来
按照枚举值分片:例如按地区

----思路:
首先数据按范围分片,保证扩容不用迁移数据。使用Redis记录每个月的分片情况,每个月份,取模的方式不一样,保证每个月的数据存放均匀。
取模的时候可以加权,让数据尽量平均。

事务一致性问题:
保证多个分片之间的事务一致。
跨节点查询问题:

跨节点分页、排序函数

主键避重的问题

公共表处理

DBLE 专门只做MySQL的分库分表。


Apache ShardingShpere(可以查看中文网站内容)
分布式数据库解决方案

ShardingJDBC 客户端分库分表。和应用程序在一起。数据分片。
mysql集群_第10张图片
ShardingProxy 数据库代理端。
mysql集群_第11张图片
mysql集群_第12张图片
mysql集群_第13张图片
ShardingSphere 已于 2020 年 4 月 16 日成为 Apache 软件基金会的顶级项目。
mysql集群_第14张图片
连接、增量 和 可插拔 是 Apache ShardingSphere 的核心概念。
连接:通过对数据库协议、SQL 方言以及数据库存储的灵活适配,快速的连接应用与多模式的异构数据库;
增量:获取数据库的访问流量,并提供流量重定向(数据分片、读写分离、影子库)、流量变形(数据加密、数据脱敏)、流量鉴权(安全、审计、权限)、流量治理(熔断、限流)以及流量分析(服务质量分析、可观察性)等透明化增量功能;
可插拔:项目采用微内核 + 三层可插拔模型,使内核、功能组件以及生态对接完全能够灵活的方式进行插拔式扩展,开发者能够像使用积木一样定制属于自己的独特系统。

inline 不支持范围查找;(只能用id)
standard 标准,支持in ,=,between (只能用id)
complex策略,支持多个字段,分片策略。
hint 策略,按照与SQL条件无关的条件去分。

你可能感兴趣的:(Mysql,spring,java,后端)