数据库架构之RDBMS读写分离和分库分表

北京医院治酒渣鼻 http://pf.39.net/bdfyy/bdfhl/210721/9213976.html

MyCat是一款开源(遵循ApacheLicense2.0协议)的大数据库集群中间件,用于搭建MySQL数据库的分布式集群,实现分库分表功能,解决数据库中海量数据存储和查询性能的问题。MyCat还是一个MySQL数据库的集群中间件,主要实现RDBMS数据库集群的故障转移、负载均衡、读写分离等功能。MyCat2.0使用了全新架构。

Keepalived是一款基于VRRP协议的轻量级服务高可用和负载均衡方案,提供避免服务器单点故障和请求分流的能力。

本方案基于CentOS8系统设计,建议在RedHat/CentOS系统中使用。部署数据库集群使用服务器及网络资源较多,建议在实施前做好规划工作,有利于部署工作顺利、有序进行。

1.前言

1、分库分表

MyCat的关键技术是分库分表,它通过将MySQL数据库中物理表中的数据切分成多个表分片,并将表分片存储在多个数据库节点上,从而构建分布式存储架构,提升巨表关联、排序、分组聚合等OLAP的能力。

分库分表的工作原理:拦截客户端提交的SQL语句并进行分析(如:分片分析、路由分析、读写分离分析、缓存分析等),然后将此SQL发往后端的真实数据库,并将返回的结果处理(如:数据合并)后再返回给客户端。如下图:

单个规则匹配

多个规则匹配

2、读写分离集群

MyCat还是一个位于MySQL数据库和客户端之间,主要实现读写分离功能的集群中间件。主要解决在业务系统存在大量的读并发时,通过负载均衡提高查询请求吞吐量,并将多个数据库节点集群化管理,在多主集群中单点数据库故障时候选主节点切换。

MySQL数据库集群

3、运维监控

MyCat提供运维监控系统,能够实现对MyCat的JVM、线程、后端RDBMS数据库、服务器(CPU、内存、磁盘、网络)的监控服务。

运维监控

4、应用场景

1)适用于MySQL数据库集群的读写分离、候选主节点切换、负载均衡等高可用模式;

2)适用于MySQL数据库集群的分表分库,对于单表数据超过万的物理表进行分片,最大支持亿数据的单表分片;

3)适用于多租户应用,通过分库分表实现应用数据按照租户划分物理数据库存储。从租户的角度来看,个人应用的数据集约存储在独立的空间,从应用角度看,分布式数据库有利于海量数据的分析和查询;

4)适用于海量数据的统计、分析、研判等OLAP能力的支撑数据库,分库分表能够快速完成巨表关联、排序、分组聚合等数据计算功能;

5)适用于海量数据的实时查询,如:百亿数据频繁查询的记录需要在3秒内反馈结果,包括主键查询、范围查询或其他属性查询的情况;

6)不适用物理表无法分片、分布式事务强一致性、分布式数据JOIN查询的应用场景。

5、关键特性

支持SQL92标准;

支持MySQL、Oracle、DB2、SQLServer、PostgreSQL等DB的常见SQL语法;

遵守MySQL原生协议,跨语言,跨平台,跨数据库的通用中间件代理;

基于心跳的自动故障切换,支持读写分离,支持MySQL主从库,以及GaleraCluster集群;

支持GaleraforMySQL集群,PerconaCluster或者MariaDBcluster;

基于Nio实现,有效管理线程,解决高并发问题;

支持数据的多片自动路由与聚合,支持sum、count、max等常用的聚合函数,支持跨库分页;

支持单库内部任意JOIN,支持跨库2表JOIN,甚至基于Caltlet的多表JOIN;

支持通过全局表,ER关系的分片策略,实现了高效的多表JOIN查询;

支持多租户方案;

支持XA分布式事务(1.6.5);

支持全局序列号,解决分布式下的主键生成问题;

分片规则丰富,插件化开发,易于扩展;

强大的Web监控系统,命令行监控;

支持前端作为MySQL通用代理,后端JDBC方式支持Oracle、DB2、SQLServer、MongoDB、巨杉;

支持密码加密;

支持服务降级;

支持IP白名单;

支持SQL黑名单、SQL注入攻击拦截;

支持Prepare预编译指令(1.6);

支持非堆内存(DirectMemory)聚合计算(1.6);

支持PostgreSQL的Native协议(1.6);

支持MySQL和Oracle存储过程,out参数、多结果集返回(1.6);

支持Zookeeper协调主从切换、zk序列、配置zk化(1.6);

支持库内分表(1.6);

集群基于ZooKeeper管理,在线升级,扩容,智能优化,大数据处理(2.0开发版)。

6、基本概念

1)物理库和物理表:在数据库实例上部署的物理数据库(如:MySQL数据库)和库中的表;

2)逻辑表:MyCat定义的表,MyCat将逻辑表的操作解释为物理库表的操作,一个逻辑表可能对应多个物理库表;

3)逻辑库:MyCat定义的逻辑表集合。

2.数据库集群部署拓扑图

部署拓扑图

网络资源规划:

1、MySQL主从库

2、MyCat+Keepalived高可用集群

KeepalivedVirtualIP:..0.30。

3、MyCat监控节点

主机名:Monitor

IP


转载请注明:http://www.aierlanlan.com/rzfs/1767.html

  • 上一篇文章:
  •   
  • 下一篇文章: 没有了