Logo
可用性管理

可用性管理 #

集群自身高可用 #

多个计算节点高可用说明:因计算节点是无状态的,发生故障时无需切换,只要一个节点是存活的集群就是可用的。

集群业务高可用 #

集群和业务之间需添加接入层的高可用软件来保障高可用,SphereEx可以配合用户通过解决方案来实现。

同城多中心架构图 #

  • 部署架构图

部署架构图

  • 切换说明
故障RPOPTO
单AZ故障00
多AZ故障0取决于恢复任意AZ的时间

同机房架构图 #

  • 部署架构图

部署架构图

  • 切换说明
故障RPOPTO
单AZ故障00
多AZ故障0取决于恢复任意AZ的时间

集群组件可用性说明 #

组件名称部署架构后台技术安全性说明
监控中心单机Prometheus出现故障人工处理
监控插件单机出现故障人工处理
治理中心集群ZooKepper出现故障自动切换
日志中心集群Elasticsearch+logstash出现故障自动切换
Filebeat单机出现故障人工处理
计算节点单机Engine-Proxy出现故障自动下线,无需切换
存储节点用户部署环境用户部署环境用户部署环境

ZooKeeper集群不可用(大于半数节点不可用) #

SQL分类SQL语言分类Engine集群可用性描述
用户SQLDQL可用
DML可用
DDL不可用
DCL不支持
TCL不支持
DistSQLRQL可用(从节点内存读取数据,重启后不可用)
RDL不可用
RAL不可用
RUL不可用
SQL语言分类 #

SQL(Structure Query Language)语言共分为四大类:数据查询语言DQL,数据操作语言DML,数据定义语言DDL,数据控制语言DCL。另外数据库中事务控制语言称为TCL。

  1. DQL概述

DQL(Data Query Language)数据查询语言,数据检索语句,用于从表中获取数据。关键字有:select。

Select语句:查询表里的数据。

  1. DML概述

DML(Data Manipulation Language )数据操作语言,用于操作数据库对象中包含的数据,操作的对象是记录。主要的关键字有:update、delete、insert。DML操作可以手动控制事务的开启、提交和回滚。

Insert语句:向数据表张插入一条记录。

Delete语句:删除数据表中的一条或多条记录,也可以删除数据表中的所有记录,但是,它的操作对象仍是记录。

Update语句:用于修改已存在表中的记录的内容。

  1. DDL概述

DDL(Data Definition Language)数据定义语言,用于定义和管理数据库中的所有对象的语言,对数据库中的某些对象(例如database,table)进行管理。操作对象包括数据库本身以及数据库对象,如表、视图等等。主要的关键字有:create、alter、drop、truncate。DDL操作是隐性提交的,不能回滚。

Create语句:可以创建数据库和数据库的一些对象。

Drop语句:可以删除数据表、索引、触发程序、条件约束以及数据表的权限等。

Alter语句:修改数据表定义及属性。

Truncate语句:清空表里的数据。

  1. DCL概述

DCL(Data Control Language )数据控制语句,操作对象是数据库的权限,并控制数据库操纵事务发生的时间及效果,对数据库实行监视等。这些操作使数据更加的安全。主要的关键字有:grant、revoke 。

Grant语句:允许对象的创建者给某用户或某组或所有用户(PUBLIC)某些特定的权限。

Revoke语句:可以废除某用户或某组或所有用户访问权限。

  1. TCL概述

TCL(Transaction Control Language)事务控制语句,用于控制事务。主要的语句关键字有:commit、rollback、savepoint、set transaction。

Rollback语句:用于事务的回退操作。

Savepoint语句:为回退而存在,个数没有限制,与虚拟机中快照类似。savepoint是事务中的一点。用于取消部分事务,当结束事务时,会自动的删除该事务中所定义的所有保存点。

Commit语句:用于提交事务。

Set transaction语句:设置事务的各种状态,比如只读、读/写、隔离级别。

DistSQL语言分类 #

  • RDL(Resource & Rule Definition Language)负责资源和规则的创建、修改和删除;
  • RQL(Resource & Rule Query Language)负责资源和规则的查询和展现;
  • RAL(Resource & Rule Administration Language)负责 Hint、事务类型切换、分片执行计划查询等管理功能。
  • RUL (Resource Utility Language) 为 SphereEx-DBPlusEngine 的工具类语言,提供 SQL 解析、SQL 格式化、执行计划预览等功能。

存储节点高可用感知 #

定义 #

高可用是现代系统的最基本诉求,作为系统基石的数据库,对于高可用的要求也是必不可少的。

在存算分离的分布式数据库体系中,存储节点和计算节点的高可用方案是不同的。

对于有状态的存储节点来说,需要其自身具备数据一致性同步、探活、主节点选举等能力;

对于无状态的计算节点来说,需要感知存储节点的变化的同时,还需要独立架设负载均衡器,并具备服务发现和请求分发的能力。

尽可能的保证 7X24 小时不间断的数据库服务,是 SphereEx-DBPlusEngine 高可用模块的主要设计目标。

SphereEx-DBPlusEngine 不提供数据库高可用的能力,它通过第三方提供的高可用方案感知数据库主从关系的切换。 确切来说,SphereEx-DBPlusEngine 提供数据库发现的能力,自动感知数据库主从关系,并修正计算节点对数据库的连接。

动态读写分离 #

高可用和读写分离一起使用时,读写分离无需配置具体的主库和从库。 高可用的数据源会动态的修正读写分离的主从关系,并正确的疏导读写流量。

  • 支持项
    • MySQL MGR 单主模式。
    • MySQL 主从复制模式。
    • OpenGauss 主从复制模式。
  • 不支持项
    • MySQL MGR 多主模式。

原理介绍 #

SphereEx-DBPlusEngine 提供的高可用方案,允许用户进行二次定制开发及实现扩展,主要分为四个步骤 : 前置检查、动态发现主库、动态发现从库、同步配置。

原理图

存储节点状态收集 #

用户可以通过配置 storage_node_heartbeat_interval_milliseconds 参数,配置存储节点状态收集间隔,单位毫秒,如果配置等于0,则关闭存储节点状态收集功能。从计算节点的运行日志中可以查看到存储节点状态收集的日志

通过 DistSQL 配置

set dist variable storage_node_heartbeat_interval_milliseconds = 10000;

通过 yaml 文件配置

props:
  storage-node-heartbeat-interval-milliseconds: 10000

使用场景

  1. 单播路由,过滤掉不可用的数据源。单播路由使用场景:比如广播表查询。
  2. 静态读写分离读路由,过滤掉不可用的数据源。

集群生态工具可用性说明 #

工具部署架构安全性说明
SphereEx-Boot单机出现故障人工处理
SphereEx-Console单机出现故障人工处理,后台数据库为主从架构,无法自动切换需人工介入