数据库openGauss的逻辑复制怎么样?

openGauss作为一款企业级开源关系型数据库,具有高性能,高可用,高安全,易运维等特点。CM的加入,使openGauss集群在易运维,可靠性等方面进一步提升。
CM(Cluster Manager)是一款集群资源管理软件。支持自定义资源监控,提供了数据库主备的状态监控、网络通信故障监控、文件系统故障监控、故障自动主备切换等能力。
CM提供了丰富的集群管理能力,如集群、节点、实例级的启停,集群状态查询、选主、主备切换、日志管理等。
CM架构图如上所示,组件包括4个可执行文件:

cm_server:cm的服务端,负责收集cma上报的状态,并作为仲裁中心和全局配置中心,集群能否稳定运行以及在发生单点故障后,备实例能否正常切换为主来保证集群的可用性,都与CMS是否稳定相关。
cm_agent:通常集群中的每台机器都安装一个,负责管理本节点所有实例的状态检测和上报以及cms下发命令的执行。
om_monitor:通常集群中的每台机器都安装一个,负责保障本节点cm_agent进程的健康。
cm_ctl:cm的客户端工具,提供集群管理操作。


cm接管集群后,会周期性的对集群中的所有进程(包括cma,cms,openGauss等进程)进行探测监控,负责集群进程的保活及僵死恢复。
cma会周期性的采集openGauss数据库的运行状态,采集指标包括主备状态,日志位置及回放速率,日志发送接收进度等信息,并汇总在cms,这些信息将被用于选主仲裁及工具展示。
cma提供了日志管理能力,通过日志文件总大小,日志文件数量,日志时间等维度对日志目录进行监控,自动归档,清理日志。
当数据库主机发生不可恢复的故障而无法继续提供服务时,集群管理会感知并基于qurom协议,进行选主仲裁。CM的仲裁都是使用的状态机模式,依据当前数据库状态进行仲裁逻辑的推进。
以上是CMS选主仲裁的时序图,总体流程包含上报和仲裁两大部分(仲裁命令实际实时都是通过信息上报获取的,图中返回结果只是为了方便理解)。

每个数据库实例的状态都会被cma定时采集并上报cms。
cms周期性的检测数据库的主备状态,如果发现主机不能够正常提供服务,则会触发选主仲裁。

操作:给所有备机发送命令,使其进入LOCK1状态。

说明: 如果备机此时连接主机,则lock1不会成功。Lock1状态成功主要有两个条件:1)备机与主机复制链路永久断开且不再主动重连。2)备机日志全部回放结束,不再增加。

操作:选合适的主,发送failover

说明:根据qurom的特点,当(n+1)/2个备机进入LOCK1状态后,这几个备机中一定有至少1个同步备,cms从这几个备机中找到日志最多的节点(一定是同步备),发送升主命令。如果有多个满足条件的备机,则按照以下策略:

a)原主能起来,则选原主

b)选择与原主同AZ的

3. 状态:新主升主成功。

操作:给主备机发送unlock/lock2消息,恢复成正常状态

说明:如果主机处于lock1状态,则给主机发送unlock消息使其退出lock1状态,如果备机处于lock1状态,则给备机发送lock2消息,指定新主ip,使其连接新主。
通过以上逻辑,CM保证了集群永远只有一个可写主机,且RPO=0。
在安装带CM的openGauss之前,需要创建clusterconfig.xml配置文件。XML文件包含部署openGauss+CM的服务器信息、安装路径、IP地址以及端口号等。用于告知openGauss、CM如何部署。用户需根据不同场配置对应的XML文件,带CM的安装,除安装配置文件需要添加CM外,其余步骤与openGauss安装完全相同。
下面以一主二备的部署方案为例,说明如何创建带CM的openGauss集群XML配置文件。以下value取值信息仅为示例,可自行替换。每行信息均有注释进行说明。
注:此处xml中的ip、nodeNames、path等变量均只作为演示,需要按实际情况填写。


安装过程与openGauss安装一致,如需请查看官网。

node:节点号和节点名称。 instance:表示instanceId(此id为集群内的概念,每个集群中的实例都会拥有一个独一无二的instanceId,用来标识此实例)。 state:cm的角色信息,primary表示主,standby表示备,unknown表示无法获取到cm的角色信息(一般故障场景才会出现unknown)。 cluster_state:集群状态,一共有三种状态:Normal,表示数据库正常;Degraded,表示数据库可用,但有某个数据节点存在异常;Unavailable,表示数据库不可用。 node:数据库实例所在节点的节点号和节点名称。 instance:表示instanceId(此id为集群内的概念,每个集群中的实例都会拥有一个独一无二的instanceId,用来标识此实例)。 state:数据库实例的状态信息,由三个具体的信息注册:第一个字段P/S表示初始的角色信息,P为主,S为备;第二个字段为角色信息;第三个字段为数据库具体的状态。


至此,一个由CM管理的一主两备openGauss集群就部署好了,后续就可以用过CM提供的工具对集群做一些基本的运维操作。
cm_ctl客户端工具提供了丰富的集群操作和管理接口,使集群管理变得更加便捷和可靠。
任意机器,普通用户下执行命令:

任意机器上执行停止命令:

#停止节点1上的数据库实例,-n后面指定节点号,-D后面指定数据库实例的数据目录。
 

任意机器上执行启动命令:

#启动节点1上的数据库实例,-n后面跟节点号,-D后面跟数据库实例的数据目录。
 

openGauss数据库主备切换
指定数据库切换为主




#-n参数后面跟的是需要升主的数据节点的节点id,-D后面跟的是数据目录(可参考前面步骤获得数据目录)
 










恢复成初始主备关系
任意节点执行命令:



结果:

任意机器上查询状态:



代码片段:可切换语言,无法单独设置文字格式



查询结果:

CM集群部分高可用能力


CM支持数据库进程保活,备机故障后自动主备切换,备机日志损坏后的自动重建等高可用能力。
自动恢复数据库实例演示
在节点1(node1)上,故障注入

#查看数据库进程id,并kill掉数据库进程
 




查看进程信息,发现数据库进程已经被拉起






其他高可用场景能力大家可以实际安装体验。
CM集群管理的加入,使openGauss的高可用能力得到了巨大的提升,其强大的故障检测和自动恢复能力使数据库在应对各种故障场景的运维变得更加简单可靠。




    文件实时同步 内容精选 换一换

  • 步骤二:查询同步进度 实时同步进度展示了全量同步过程中,实时同步任务的表同步进度,可以帮助您了解全量同步完成的情况。 前提条 已登录数据复制服务控制台。 操作步骤 在“实时同步管理”界面,选中指定同步任务,单击任务名称,进入“基本信息”页面。 单击“同步进度”页签,查看表同步进度。

  • PostgreSQL实时同步,通过在源库创建触发器和函数获取源库的DDL信息,然后在DRS增量实时同步阶段实现DDL操作的同步。 前提条 当前支持的DDL操作包含CREATE SC

  • 文件实时同步 相关内容

  • 查看同步映射 实时同步映射关系包括对象选择时的库映射、schema映射、表映射和数据加工时的列映射。当同步映射关系配置成功后,启动实时同步任务即可查看同步映射详情。 前提条 已登录数据复制服务控制台。 操作步骤 在“实时同步管理”界面,选择指定的同步任务,单击任务名称。 页面跳

  • 在“设定同步”页面,选择编辑同步对象,单击“下一步”。 在“预检查”页面,进行同步任务预校验,校验是否可进行实时同步。 在“任务确认”页面,设置同步任务的启动时间,并确认同步任务信息无误后,勾选协议,单击“启动任务”,提交同步任务。 同步任务提交后,您可在“实时同步管理”页面,查看并管理自己的任务。

  • 文件实时同步 更多内容

  • 库创建表结构。 不支持Public下对象的同步。 一个同步任务只能对一个数据库进行数据同步,如果一个PostgreSQL实例下有多个数据库需要同步,则需要为每个数据库创建实时同步任务。 表级同步时仅支持指定表名、序列名进行同步,如果同步表结构时出现依赖的对象(如type、sequ

  • 图1 监控同步任务 表1 监控同步任务 参数 说明 接收同步请求对象数(本月) 统计本月截止目前接收到的来自源端发送的同步请求对象数量。 同步对象数(本月) 成功 统计本月截止目前同步成功的对象,可通过对象列表在目的桶中查看同步成功对象列表。 失败 统计本月截止目前同步失败的对象

  • MySQL到ElasticSearch同步实例 本小节以RDS for MySQL->ElasticSearch的出云同步为示例,介绍如何使用数据复制服务配置实时同步任务。 前提条 已登录数据复制服务控制台。 账户余额大于等于0元。 参见实时同步。 参见使用须知。 操作步骤 在“实时同步管理”页面,单击“创建同步任务”。

  • 删除同步任务 对于已结束或者配置失败的实时同步任务,您可选择删除同步任务。被删除后的任务将不会再出现在任务列表中,请谨慎操作。 前提条 已登录数据复制服务控制台。 方法一 在“实时同步管理”页面的任务列表中,选择要删除的任务,单击“删除”。 单击“确定”,提交删除任务。 方法二

  • 删除同步任务 对于已结束或者配置失败的实时同步任务,您可选择删除同步任务。被删除后的任务将不会再出现在任务列表中,请谨慎操作。 前提条 已登录数据复制服务控制台。 删除任务 在“实时同步管理”页面的任务列表中,选择要删除的任务,单击“删除”。 单击“确定”,提交删除任务。 批量删除

  • 修改同步信息 数据同步过程中,您可能修改了源数据库或者目标数据库的密码信息,导致数据同步任务失败,此时您需要通过数据复制服务控制台修改为正确的信息,然后重试同步任务。 对于如下的同步信息,您可以进行修改。 源库密码 目标库密码 以上信息修改后,将实时生效,不会清空目标数据库的数据。

  • 续传同步任务 实时同步中可能因外部因素导致同步暂时故障,用户根据同步日志信息解决问题后,可以通过续传功能继续同步,常见场景如存储空间不足。 对于以下状态的任务,可以通过续传功能继续同步任务。 全量同步失败 暂停中 如果因为非网络原因导致全量同步失败,系统默认进行三次自动续传,若三

  • 在“设定同步”页面,选择编辑同步对象,单击“下一步”。 在“预检查”页面,进行同步任务预校验,校验是否可进行实时同步。 在“任务确认”页面,设置同步任务的启动时间,并确认同步任务信息无误后,勾选协议,单击“启动任务”,提交同步任务。 同步任务提交后,您可在“实时同步管理”页面,查看并管理自己的任务。

  • 已登录数据复制服务控制台。 账户余额大于等于0元。 参见实时同步。 参见使用须知。 操作步骤 在“实时同步管理”页面,单击“创建同步任务”。

  • 务。 对于以下同步状态的任务,可以重置同步任务。 同步暂停状态。 增量同步失败状态。 对于一般的多对一同步任务,仅父任务具有重置功能,子任务没有重置功能。 对于MySQL的多对一同步任务,仅子任务有重置功能。 DRS重置功能不会清空目标库,客户需要根据自己的需求选择是否清空目标库

  • event 可能原因 针对该情况分析,可能存在如下原因。 任务中断时间太长,DRS历史数据文件已经清理,无法接续。 解决方案 请联系用户重建任务。 父主题: MySQL->MySQL实时迁移和同步

  • openGauss)实例下有多个数据库需要同步,则需要为每个数据库创建实时同步任务。 实时同步过程中,如果修改了源库的用户名、密码,连接断开后会导致同步任务失败,需要在数据复制服务控制台将上述信息重新修改正确,然后重试任务可继续进行实时同步。一般情况下不建议在同步过程中修改上述信息。 实时同步过程中,如果修

  • 增量同步过程中,若需要对源库需要同步的表结构进行修改, 则用户必须在目标库同步修改表结构。 增量同步场景下,不支持源数据库进行恢复操作。 同步过程中不支持DDL操作。 创建任务后,不支持增加逻辑库或修改旧逻辑库关联新的RDS,否则会导致同步任务失败。 环境要求 实时同步对环境有

  • 针对一些无法预知或人为因素及环境突变导致同步失败的情况,数据复制服务提供以下常见的操作限制,供您在同步过程中参考。 表1 操作要求 类型名称 操作限制(需要人为配合) 注意事项 表2中的环境要求均不允许在同步过程中修改,直至同步结束。 源数据库中存在主键重复的数据时, 直接同步将导致目标库数据比源库少

  • 修改同步信息 数据同步过程中,您可能修改了源数据库或者目标数据库的密码信息,导致数据同步任务失败,此时您需要通过数据复制服务控制台更新为正确的信息,然后重试同步任务。 对于如下的同步信息,您可以进行修改。 源库密码 目标库密码 以上信息修改后,将实时生效,不会清空目标数据库的数据。

  • 在“实时同步管理”页面的同步列表中,选择要暂停的任务,单击“操作 > 暂停”。

  • 存在大量小文件、linux文件迁移同步阶段差异比较等。 解决方案 检查源端及目的端带宽,迁移过程中尽可能提高带宽。在不影响业务的情况下,尽可能提供充裕的带宽给迁移进程。 检查源端是否存在大量小文件,请尽可能清理一些可删除文件。 Linux文件级迁移同步过程中,如果同步进度长时间在

  • 活认证方式接入,可灵活分配权限,支持文件一键交接随时随地移动办公:支持各类终端操作,多终端文件实时同步,手机照片随拍随传超大附一键分享:一键生成外链轻松分享大附,支持按部门分享文档,设置分享权限海量文件集中存储:海量弹性存储空间,支持大文件闪传与断点续传,多数据中心容灾备份金

  • 重置同步任务 在实时同步过程中,对于以下同步状态的任务,可通过重置功能,重新开始同步而不用再次配置任务。 同步暂停状态。 同步失败状态。 DRS目前支持以下链路的重置: 入云

  • 在线协作,畅享高效 轻松协作,一键分享,告别反复传输文件;多人同时编辑,协作动态实时可见 轻松协作,一键分享,告别反复传输文件;多人同时编辑,协作动态实时可见 免费试用开放中,点击这里申请 多端访问,便捷办公 文字、表格、演示、流程图、PDF等丰富办公组;全平台客户端应用支持,随时随地便捷办公

  • 重启失效,请在源库的启动配置文件(f等)中添加或修改配置参数binlog_format并保存。 binlog_format=ROW 方法二: 为了避免源库binlog_format格式因为数据库重启失效,请在源库的启动配置文件(f等

  • 跳跃续传同步任务 实时同步中可能因外部因素需要暂时停止同步,用户在解决问题后,可以通过跳跃续传功能跳过暂停时间段的数据继续同步。目前仅DDM->Oracle的增量同步阶段,支持跳跃续传功能。 前提条 已登录数据复制服务控制台。 任务状态为暂停。 操作步骤 在“实时同步管理”页面

  • sql is: %s 可能原因 针对该情况分析,可能存在如下原因。 目标库表文件损坏。 解决方案 请联系客户目标库运维工程师,检查对应的表是否存在且状态正常。 父主题: MySQL->MySQL实时迁移和同步

  • 库的端口号。 同步过程中,不允许对源库需要同步的表结构进行修改。 增量同步场景下,不支持源数据库进行恢复操作。 选择表级对象同步时,增量同步过程中不建议对表进行重命名操作。 在任务启动、任务全量同步阶段,不建议对源数据库做删除类型的DDL操作,这样可能会引起任务同步失败。 建议将

  • PostgreSQL实时同步,通过在源库创建触发器和函数获取源库的DDL信息,然后在DRS增量实时同步阶段实现DDL操作的同步。 前提条 当前支持的DDL操作包含如下:

提交成功!非常感谢您的反馈,我们会继续努力做到更好 反馈提交失败!请稍后重试!

我要回帖

更多关于 数据库逻辑模型图 的文章

 

随机推荐