关于MogDB我所知的一切(一)

本文涉及的产品
云数据库 RDS SQL Server,独享型 2核4GB
云原生数据库 PolarDB MySQL 版,Serverless 5000PCU 100GB
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: 关于MogDB我所知的一切

一、MogDB数据库介绍

MogDB是云和恩墨基于openGauss开源数据库进行完善增强的企业发行版。它围绕高性能、高可用、全密态、自动化运维、多数据库兼容等企业需求,应对企业用户需求新一代数据库的应用场景。其核心价值是高安全、高性能、高兼容、易运维和全天候的企业支持。

二、MogDB目前公开的客户

ce66b5a635820866a2502a0d0c039392_20220831-63d89c9a-ee8d-4db5-b250-03cda283c553.png

三、MogDB生态工具

1 . 关于MogHA(MogDB Highly Available )

  • MogHA 是云和恩墨基于 MogDB 同步异步流复制技术自研的一款保障数据库主备集群高可用的企业级软件系统
  • MogHA 能够自主探测故障实现故障转移,虚拟IP自动漂移等特性,使得数据库的故障持续时间从分钟级降到秒级(RPO=0,RTO<30s),确保数据库集群的高可用服务。
  • 为什么需要MogHA
  • 首先我们需要理解一下什么是高可用,高可用的目的是为了让数据库尽可能提供连续服务,以保证上层业务的稳定运行。数据库虽然支持主备库的部署结构,其目的是防止单点故障。但数据库并不提供故障检测以及自动化切换主备的功能,这也不属于数据库的处理范畴。所以需要有 MogHA 这样的一套高可用系统,来保证数据库服务的连续性。
  • 功能特性
  • 自主发现数据库实例角色
  • 自主故障转移
  • 支持网络故障检测
  • 支持磁盘故障检测
  • 虚拟IP自动漂移
  • 感知双主脑裂,自动选主
  • 数据库进程和CPU绑定
  • HA自身进程高可用
  • 支持单机并行部署多套 MogHA
  • 支持 x86_64 和 aarch64
  • 系统架构

769f1d98877ba6d37c3162b9cd1d7fa8_20220831-afd9967b-d252-4ff3-8a26-9e52e8ac9efd.png

  • 支持的模式
  • Lite 模式,顾名思义即轻量级模式,该模式仅需在主库和一台同步备机器上启动 MogHA 服务,此时 MogHA 服务可以保证这两台机器上数据库实例的高可用,当主库发生不可修复的问题或者网络隔离时,MogHA 可以自主地进行故障切换和虚拟IP漂移。
  • 69f4d88ece8b656a2b6e6b1ddd9f5b44_20220831-5c02f746-e58c-4435-bbdc-3830482aaa1e.png
  • Full模式相较于 lite 模式,需要在所有实例机器上运行 MogHA 服务,且所有的实例有由 MogHA 来自动管理,当出现主库故障时,会优先选择本机房同步备进行切换,如果本机房同步备也是故障的情况,会选择同城备机房的同步备进行切换。为了达到RPO=0,MogHA 不会选择异步备库进行切换,以防止数据丢失。该模式会在主备切换时,会自动修改数据库的复制连接及同步备列表配置。
  • 1a94f35e07a673ad8770356ee24e814b_20220831-411c79b6-863f-46e4-9256-079f5b56939a.png

2 . 关于MTK(Database Migration Toolkit)

  • 将Oracle/DB2/MySQL/openGauss数据库的数据结构,全量数据高速导入到MogDB的工具。最新版本同时支持对于Oracle数据库中存储过程,函数,触发器等程序段的MogDB兼容性改写和导入。
  • 多数据库类型支持
  • 支持 Oracle,DB2,openGauss,SqlServer,MySQL,Informix 等数据库之间的互相迁移 (互为源和目标)。
  • 支持将数据库内容导出成可执行的 SQL 脚本 (源数据库内容迁移到文本)。
  • 迁移性能调整
  • 支持调整数据迁移过程中的批量查询、批量插入大小等细粒度参数,来调整数据迁移的性能。
  • 支持数据迁移时的多并发,并行和数据分片。
  • 结构和数据分离
  • 支持迁移对象结构和数据;也支持仅迁移结构或者仅迁移数据(在结构已经迁移完之后)。
  • 支持表级和 Schema 级的迁移范围限定,允许指定schema下全部对象或者某些对象进行迁移 。
  • 支持迁移过程中的 Schema 重映射,也就是支持将对象从源Schema迁移到目标端的不同名Schema下 。
  • 程序迁移(支持Oracle/MySQL/DB2为源,openGauss为目标)
  • 支持Oracle/MySQL/DB2->openGauss的存储过程,函数,触发器,包迁移。
    自动根据openGauss的语法规则,对Oracle/MySQL/DB2的程序进行改写,之后再在目标端openGauss数据库中创建。
  • 迁移场景
源数据库 目标数据库
Oracle openGauss
Oracle MySQL
Oracle PostgreSQL
MySQL openGauss
MySQL MySQL
MySQL PostgreSQL
DB2 openGauss
DB2 MySQL
DB2 PostgreSQL
DB2 DB2
SqlServer openGauss
SqlServer MySQL
SqlServer PostgreSQL
openGauss openGauss
openGauss PostgreSQL
PostgreSQL openGauss
Informix openGauss

  • 支持数据库对象
对象名称 是否支持 说明
Schema 支持 方案
Oracle Users
MySQL Database
DB2 Schema
SqlServer Database Schema
Sequence 支持 序列
ObjectType 支持 类型
Domain 不支持
Wrapper 支持 Only DB2
Server 支持 Only DB2
User-mapping 支持 Only DB2
Queue 不支持 队列
Table 支持 不包含OBJECT TYPE TABLE
NickName 支持 Only DB2
Rule 支持 规则
TableData 支持 表数据
Index 支持
Constraint 支持
DBLink 支持 数据库连接. 仅支持查询个数,不提供语法转换
View 支持
MView 支持 物化视图
Function 支持
Procedure 支持
Package 支持
Trigger 支持
Synonym 支持
TableDataCom 支持 表行数对比
AlterSequence 支持 迁移序列最后值
CollStatistics 支持 收集统计信息

  • 存储过程转换
  • 入参和出参类型转换
  • 函数重载
  • FROM dual 移除
  • 语法转换
转换前 转换后
Sequence 支持
connect by cte改写
EXECUTE IMMEDIATE EXECUTE
EXIT WHEN NOT FOUND部分语法
interval语法
mod 语法 counter mod 1000 = 0 mod(counter,4) == 0
null 相关语法 != <> null
PIPE ROW RETURN NEXT
select 1,2 into select 1,2 into STRICT
select unique SELECT DISTINCT
sequence nextval/currval nextval(xxx)
SQLCODE SQLSTATE
truncate table 部分语法

  • 函数转换
转换前 转换后
ADD_YEARS
DBMS_OUTPUT.PUT_LINE RAISE NOTICE
DBMS_LOB.GETLENGTH octet_length
DBMS_LOB.SUBSTR substr
DBMS_STANDARD.RAISE EXCEPTION
decode case when
empty_blob/empty_clob null
from_tz
listagg string_agg
months_between
NUMTODSINTERVAL
NUMTOYMINTERVAL
nvl2 case when
raise_application_error RAISE EXCEPTION
SYS_CONTEXT
SYSTIMESTAMP CURRENT_TIMESTAMP
TO_CHAR ::varchar
to_char(l_curr_time, ‘TZH’) EXTRACT( timezone_hour from l_curr_time)
to_char(l_curr_time, ‘TZM’) EXTRACT( timezone_minute from l_curr_time)
TO_CLOB “”
TO_TIMESTAMP_TZ
trunc date_trunc
UTL_ROW.CAST_TO_RAW encode

3. MDB (MogDB Data Bridge)

  • 异构数据库迁移同步工具,用于 MogDB/openGauss 以及同类基于 openGauss 的数据库与其他异构数据库(Oracle, DB2, MySQL, PostgreSQL等)之间的数据迁移和同步
  • 架构
  • dedf712738ed31bccef4a58c6ec64188_20220831-16c19e8b-f0d9-451e-a1f7-4f9bc9e7320c.png
  • 支持数据库类型
源数据库 目标数据库 是否支持 预计支持版本
Oracle MogDB 支持
MogDB Oracle 支持
MySQL MogDB 未支持 v1.1
MogDB MySQL 未支持 v1.1

  • 支持数据库对象
对象名称 是否支持 说明 预计支持版本
Schema 支持
Table 支持
Constraint 支持 不支持外键
Index 支持
TableData 支持 表数据
User 未支持 v1.2
Sequence 未支持 v1.2
Synonyms 未支持 v1.2

  • 不支持数据库对象
对象名称 是否支持 说明
Trigger 不支持
Procedure 不支持
Function 不支持
Package 不支持
View 不支持

4. MVD (MogDB Verify Data)

  • 异构数据库对比工具,可用于异构数据迁移或同步完成之后,校验源库与目标库之间的差异。
  • 主要功能
  • 对象结构对比: 包括源库与目标库的对象差异,表对象的结构(字段类型和名称),约束,索引的差异等。
  • 数据特征对比: 包括表中各个字段的统计学特征值对比,主要对比相关性与平均值,最大值,最小值,中位值等。
  • 精确差异识别: 对数据特征有差异的表,进行精确差异识别,通过统一的 MD5 摘要算法,找出源库与目标库中数据不一致的行记录。
  • 操作系统与平台支持
  • Linux x86_64
  • Linux arm64 ( 因为 ARM 平台没有 DB2 客户端,所以 ARM 版不支持源库或者目标库为 DB2 )
  • MacOS
  • 数据库支持
  • Oracle >= 11.2
  • MogDB/openGauss >= 1.0 ( MacOS 暂不支持 SHA256 加密认证方式 )
  • MySQL >= 5.5
  • DB2 >= 11.5
相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
目录
相关文章
|
SQL 存储 运维
关于MogDB我所知的一切(二)
关于MogDB我所知的一切
398 0
关于MogDB我所知的一切(二)
|
消息中间件 Oracle Java
MogDB/openGauss 实时同步工具 —— MDB (MogDB Data Bridge)
MogDB/openGauss 实时同步工具 —— MDB (MogDB Data Bridge)
341 0
MogDB/openGauss 实时同步工具 —— MDB (MogDB Data Bridge)
|
消息中间件 SQL JSON
Debezium Adapt openGauss
Debezium Adapt openGauss
243 0
|
SQL JSON 数据可视化
PgSQL 使用技巧总结
PgSQL 使用技巧总结
350 0
|
关系型数据库 网络安全 数据库
|
存储 SQL 缓存
MySQL中间件ProxySQL介绍
ProxySQL 是一个高性能的SQL 代理。ProxySQL有一个高级多核体系结构。支持数十万并发连接,可以多路复用到后端服务器上。 作为守护进程运行。而且有一个进程监视这个守护进程,并在守护进程崩溃时重启守护进程,以减少停机时间。这个守护进程接受来自MySQL客户端的请求,并将其转发到后端的MySQL服务器上。 ProxySQL被设计为可以连续运行而且不需要重启。大多数配置可以在运行时使用类似SQL语句的查询完成。
1369 1
MySQL中间件ProxySQL介绍
|
监控 MySQL 关系型数据库
ProxySQL
proxysql的作用 1.读写分离,server可以进行分读组和写组 2.动态指定某一个SQL进行cache 3.故障切换,依赖于他的配置动态加载,但是不能自动选主,需要依赖keepalived和MHA 4.
3594 0
|
关系型数据库 数据库 运维
PGPool使用限制
PGPool使用限制
1517 0
|
NoSQL Shell 数据库