华为云用户手册

  • 自定义来源接口配置 认证凭据配置(必需)。 详情接口说明参考认证凭据(必需)。 服务目录配置(必需)。 详情接口说明参考服务目录(必需)。 请求地址:用户自定义请求地址,接口类型默认为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例创建配置。 详情接口说明参考服务实例创建。 请求地址:用户自定义请求地址,接口类型需为PUT,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例绑定配置。 详情接口说明参考服务绑定。 请求地址:用户自定义请求地址,接口类型需为PUT,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例信息配置。 详情接口说明参考服务实例信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务绑定信息配置。 详情接口说明参考服务绑定信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务实例最新操作信息。 详情接口说明参考服务实例最新操作信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 服务绑定最新操作信息 详情接口说明参考服务绑定最新操作信息。 请求地址:用户自定义请求地址,接口类型需为GET,必填。 X-Broker-API-Version:当前API的版本号,必填。 父主题: 配置流程
  • 请求消息体 字段名称 类型 必填 说明 instance_id string 是 服务实例ID,全局唯一,当前使用商品实例ID或者用户输入的固定值。 binding_id string 是 绑定ID,同一服务实例下绑定ID不允许重复。 service_id string 否 服务目录中的服务ID,Exchange商品关联的服务。 plan_id string 否 服务目录中的服务计划ID,Exchange商品关联的服务计划。 operation string 否 操作。
  • 响应消息体 字段名称 类型 必填 说明 state string 是 有效值包括:in progress,succeeded,failed,分别对应进行中、操作成功、操作失败,对于进行中的可以继续轮询,其他情况则停止轮询。 description string 否 操作状态的详细信息。 instance_usable boolean 否 服务实例是否可用,主要适用于升级和注销操作的场景。 update_repeatable boolean 否 是否可重复升级,主要适用于升级失败的场景。
  • 请求消息体 字段名称 类型 必填 说明 instance_id string 是 服务实例ID,全局唯一,当前使用商品实例ID或者用户输入的固定值。 binding_id string 是 绑定ID,同一服务实例下绑定ID不允许重复。 service_id string 是 服务目录中的服务ID,Exchange商品关联的服务。 plan_id string 是 服务目录中的服务计划ID,Exchange商品关联的服务计划。
  • 响应消息体 字段名称 类型 必填 说明 metadata ServiceBindingMetadata 否 与Exchange页面交互信息。 credentials JSONObject 否 帐号信息。 服务绑定元数据ServiceBindingMetadata 字段名称 类型 必填 说明 expires_at string 否 绑定到期时间,使用ISO 8601格式,形如yyyy-mm-ddThh:mm:ss.ssZ
  • 响应消息体 字段名称 类型 必填 说明 dashboard_url string 否 服务实例对应仪表板地址。 operation string 否 对于异步操作,返回对应异步操作在第三方系统中的唯一标识,该标识可以作为参数在服务实例最新操作信息接口使用。 parameters JSONObject 否 交互界面用户填写的信息。 metadata ServiceInstanceMetadata 否 与Exchange页面交互信息。 ServiceInstanceMetadata 字段名称 类型 必填 说明 display Display[] 否 服务创建后页面展示内容。 接入点信息Display 字段名称 类型 必填 说明 description string 是 展示描述。 value string 是 展示信息。 tyue string 是 展示类型(string/number/password)。
  • 请求消息体 字段名称 类型 必填 说明 instance_id string 是 服务实例ID,全局唯一,当前使用商品实例ID或者用户输入的固定值。 binding_id string 是 绑定ID,同一服务实例下绑定ID不允许重复。 service_id string 是 服务目录中的服务ID,Exchange商品关联的服务。 plan_id string 是 服务目录中的服务计划ID,Exchange商品关联的服务计划。 parameters JSONObject 否 界面输入信息。
  • 响应消息体 字段名称 类型 必填 说明 dashboard_url string 否 服务实例对应仪表板地址。 operation string 否 对于异步操作,返回对应异步操作在第三方系统中的唯一标识,该标识可以作为参数在服务实例最新操作信息接口使用。 metadata ServiceInstanceMetadata 否 服务实例后与Exchange页面交互信息。 ServiceInstanceMetadata 字段名称 类型 必填 说明 display Display[] 否 服务创建后页面展示内容。 接入点信息Display 字段名称 类型 必填 说明 description string 是 展示描述。 value string 是 展示信息。 tyue string 是 展示类型(string/number/password)。
  • Service Broker介绍 Exchange默认提供一个支持资产通过Service Broker方式接入的适配层,接入方按照既定的接口规范完成接口开发,填写对应的接口信息就可以完成接入,而不需要开发单独的适配器包,每一个新的Service Broker接入对应到一个Service Broker适配器来源。 ROMA Exchange接入Service Broker整体设计如下: 接入Service Broker,主要包括三部分: 1. 系统鉴权,获取与对端系统建立连接时所携带的认证凭据信息。 2. 资产发布时,对端系统需为ROMA Exchange提供服务目录(Catalog)、服务(Service)和服务套餐(Plan)的描述信息,以及服务实例创建更新和服务绑定交互等信息。 3. 订阅实例时,ROMA Exchange通知对端系统去创建服务实例(Service Instance )以及建立服务实例与应用的绑定(Service Binding)。 父主题: 概述
  • 响应消息体 参数说明 数据类型 必选/可选 描述 sources Source[] M 适配器 count Number M 来源总数 Source结构体 参数说明 数据类型 必选/可选 描述 id String M 来源ID name String M 来源名称 description String O 来源描述 adapterParams String M 适配器的页面参数 configParams String M 适配器来源的配置参数 lastModifiedDate DateTime O 最后修改时间 authorized Number M 授权状态 1-授权 0-未授权 2、取消授权 POST /service/CP_DS__DigitalStoreService/1.0.1/asset-sources/cancel-auth 接口用于查询适配器来源是否已经被发布使用或存在订阅实例,如果被发布使用,不能取消授权。 取消授权操作是将CP_DS__AssetSourceAttribute表中subjectType为“User”的attributes值清空。
  • 请求消息体 表2 请求消息体参数说明 参数说明 数据类型 必选/可选 描述 id String M - 3、判断用户关联的适配器来源是否授权 POST /service/CP_DS__DigitalStoreService/1.0.1/asset-sources/auth-judge/{id} 查询用户关联的适配器来源,在CP_DS__AssetSourceAttribute表中subjectType为“User”的attributes值是否为空,不为空标识已经授权(true),反之,未授权(false)。 响应消息体 参数说明 数据类型 必选/可选 描述 isAuth Boolean M 是否授权
  • 数据接口 接口详情请参考第五章节《接口和样式参考.docx》 1、createSourceAttribute 接口用于存储资产来源属性:资产上架页,订购页都可能用,比如Astro轻应用资产上架页用于存储用户鉴权信息。 2、querySourceAttribute 接口用于用户查询来源属性值,资产上架页,订阅页都可能用。 3、filterSourceAttribute 资产上架过滤已被使用的来源属性:以Astro轻应用资产为例,因为不允许同一个资产对象多次被上架,此接口用于过滤已被上架过的资产对象,资产上架页调用。 4、querySubscriptionSourceAttribute 接口用于业务用户根据订阅实例号查询商品和用户属性,订阅页调用,查询订阅自定义属性。同时对订阅实例号与当前用户信息进行校验 5、notifySubscriptionStatus 接口用于适配器通知订阅实例状态,订阅页调用。 变更:为适配多来源底座,在通知订阅状态时,新增sourceId参数作为某一来源下的订阅实例状态,用于区分多来源部署状态划分。 6、recordLog 记录接口日志及操作日志。 7、uploadOBSObject 存入OBS对象,适用于ServiceStage类来源部署时,存入私仓中。 8、downloadOBSObject 获取OBS对象,适用于ServiceStage类来源发布时,从私仓中下载。 9、createOBSBucket 创建OBS桶,适用于serviceStage类安装时使用,创建的OBS桶信息存储进用户级来源属性信息内,每次进行安装时,校验当前用户当前来源下的‘User’级属性信息内是否存在桶信息,存在则直接使用,不存在则创建OBS桶,将桶信息存储进当前来源User级来源属性信息内。 10、fileDownload 附件下载接口,屏蔽基线接口校验,直接从租户公仓下载资源。 11、交互脚本(用于资产管理各个阶段调用适配器逻辑) 命名规范:适配器名称__Interaction 注意:交互脚本命名取适配器命名,否则在安装适配器时无法自动获取脚本脚本,需手动添加适配器交互脚本数据。 格式定义参考: ①提交资产上架申请 exportfunction submitAsset(sourceAttributes:object, sourceId:string):void{ // 实现资产上架时校验或其他操作 } ② 撤销/驳回资产上架申请 exportfunction cancelAsset(sourceAttributes:object, sourceId:string): void{ // 实现资产上架驳回时校验或其他操作 } ③ 资产下架成功 exportfunction unshelfAsset(sourceAttributes:object, sourceId:string): void{ // 实现资产下架成功时校验或其他操作 } ④ 资产上架申请成功 exportfunction submitAssetSuccess(sourceAttributes:object, sourceId:string, subjectId:string): object{ //实现资产上架申请成功是需要触发的操作,新增入参subjectId为来源用户,因审批人发生变更,无法获取发布者信息,故添加入参。 } ⑤资产提交订阅申请 exportfunction subscribeAsset(sourceAttributes:object, sourceId:string): void{ // 资产提交订阅申请时校验或其他操作 } ⑥ 撤销/驳回资产订阅申请 exportfunction cancelSubscribeAsset(sourceAttributes:object, sourceId:string): void{ //撤销/驳回资产订阅申请时校验或其他操作 } ⑦删除资产申请 exportfunction deleteAsset(sourceAttributes:object, sourceId:string):void{ // 实现资产删除时删除相关附件或其他操作 } 交互脚本方法存在返回值时,根据业务需要在基线触发交互处,接收返回数据,并进行处理操作。 7,基线触发脚本:CP_DS__offeringPublishApplication 交互方式: //调用适配器交互方法 const reservedField2 = dataParse['offering']['reservedField2']; const sourceAttributes = dataParse['sourceAttributes']; if(reservedField2 && sourceAttributes){ const sources =newQueryAssetSourcesList().run({ id: reservedField2 }).sources; if(sources.length ==0){ throw new I18nError('CP_DS__NotFoundSource'); } const interactionScript = sources[0].interactionScript; if(interactionScript &&Object.keys(require(interactionScript)).indexOf('submitAssetSuccess')!=-1){ const sourceAttributesTmpl =require(interactionScript).submitAssetSuccess(sourceAttributes, reservedField2, owner); if(sourceAttributesTmpl){ dataParse['sourceAttributes']= sourceAttributesTmpl; } } } 此交互方式触发的适配器方法为submitAssetSuccess,并使用了该方法的返回值,回写进dataParse['sourceAttributes']。其余方法的触发调用与此类似,只需要变更需要触发的方法名称即可。 父主题: 后台
  • 页面交互事件 适配器与Roma Exchange框架有多次交互,主要通过PostMessage和AddEventListener接口实现数据通信。对于适配器页面来说,有多次发送消息事件和接收消息事件,其中每次发送数据之后,ROMA Exchange都会根据监听到的事件名触发对应的动作。 以Astro轻应用适配器的资产对象选择页为例,五次发送消息事件和一次接收消息事件分别介绍如下: 触发数据传输事件 发布者在资产发布页单击资产对象时,适配器资产对象选择页需要获取ROMA Exchange框架传来的“资产来源标识(sourceId)”、“资产来源参数(sourceAttributes)”。 其中,“资产来源标识”用来调接口获取资产对象数据;“资产来源参数”包含了从草稿中获取的数据,用于数据回显;“地址信息”包含了适配器鉴权页的跳转地址,用于未授权情况下的页面跳转。 因此,适配器需执行触发动作给ROMA Exchange,ROMA Exchange监听到该事件时,就会触发数据传递动作。 代码示例: created () { let eventObj = { eventName: 'PARENT_EVENT' params: { message: 'loading' } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 传递页面高度数据 资产对象选择页渲染前,会传递一个页面高度和宽度的数据给ROMA Exchange框架,用以调整弹窗的高度和宽度。 代码示例: mounted () { let div = document.getElementById("***AdaptorConfigWidget"); let eventObj = { eventName: 'PAGELOAD_EVENT', params: { height: div.offsetHeight, width: div.offsetWidth } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 确定事件后传递数据 选择资产对象之后单击确认按钮,适配器会给ROMA Exchange框架传递选择的资产对象数据 代码示例: confirmFun () { let eventObj = { eventName: 'CONFIRM_EVENT', params: { sourceAttributes:{ items: this.items, sourceId: this.sourceId, assetData***: this.assetData*** } } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 取消事件后传递信息 单击取消按钮后,适配器会给ROMA Exchange上架框架传递信息,以提示框架进行弹窗关闭操作。 代码示例: cancelFun () { let eventObj = { eventName: 'CONCEL_EVENT', params: { message: 'Cancel!' } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 传递提示信息 当有警示信息或者异常情况时,适配器会传递提示信息给外层框架,以在外层展示提示信息。 代码示例; messageFun () { let eventObj = { eventName: 'MESSAGE_EVENT', params: { message: 'Warning!' } }; parent.postMessage(JSON.stringify(eventObj),'*'); }, 接收数据 在触发事件传输事件之后,ROMA Exchange会传递资产来源的相关数据给适配器。 代码示例; created() { const DICT = { DATA_EVENT: dataFun, } function dataFun (e) { this.sourceId = e.sourceId } window.addEventListener("message", function (e) { var event = JSON.parse(e.data) DICT[event.eventName](event.params) }) }, 因此,适配器中资产对象选择页需要约定以下几个事件: 页面事件类型 事件名称 事件解释 Item消息发送事件 PARENT_EVENT 触发数据传输 PAGELOAD_EVENT 发送高度 CONFIRM_EVENT 确定 CANCEL_EVENT 取消 MESSAGE_EVENT 提示消息 Item消息接收事件 DATA_EVENT 接收数据 其他页面可以根据需求选择事件,但是事件名称应与上表中的一致。 父主题: 前台
  • 开通定义文件组成 在管理上,不同应用的差异性主要体现在:来源参数配置中、对已订阅资产进行管理操作时,这些接入点要在适配器中开发。 因此,适配器里一般包含参数配置页、资产对象选择页和部署页三个页面,采用iframe的方式嵌入到Roma Exchange框架的相关页面中,并通过PostMessage\AddEventListener接口实现适配器与Roma Exchange框架页面的数据通信。 适配器为Astro轻应用中创建的APP,创建步骤: 1、在Astro轻应用开发环境首页的“项目”页签下单击“行业应用”,再单击“创建空白行业应用”。 2、在提示框中填写应用标签和名称。 3、创建高级页面 首先在APP中新建两个目录用来存放高级页面和脚本,建议分别命名为“pages”和“service”。 在pages中新建:参数配置页(config)、资产对象选择页(item)和管理页(deploy)三个高级页面。 4、适配器Widget创建 分别创建四个widget组件,为了避免组件名称冲突,建议命名规范为:适配器_页面名_Widget(如:ROMAConnect_Config_Widget),然后在左侧菜单栏的“资产”中单击“组件”,提交新组件(具体开发参考平台相关规范)。 管理页(deploy) 父主题: 前台
  • 开发和编译 前提:开发租户需要订购基线资产 创建空白应用 输入标签和名称后单击创建即可,APP命名规范为****Adapter。名称需要保证唯一性。 2、进入APP开发页面和接口 参考第4章节 配置接口业务权限 接口开发完后,需要给每个接口配置业务权限 1)先导入“Customer”业务权限凭证 2)给每个公共接口加上 “Customer”业务权限凭证 3、编译设置选择资产包 选择左下角“设置” 选择资产包、APP类型 4、先单击编译后单击发布: 5、在我的仓库下载资产包 父主题: 开发流程说明
  • 交互流程 前提:适配器内部与业务平台的交互配置已完成 1.1 应用发布 1、 用户选择交付方式为在线开通,上传定义文件。 说明:上传的适配器包名称需要有站点信息。格式如:{application}_{siteId}.zip application:适配器名称,建议有版本号。【例如:imc__ExchangeAsService-0.1.5】 siteId:适配器在Astro轻应用平台的站点id,获取方式如上图: a步骤:解压适配器包进入website目录 b步骤:解压包website包,找到package.json文件 c步骤:打开package.json文件 d步骤:package.json文件中找到appId对应的值为站点Id。 {application}_{siteId}.zip:适配器名称和站点用短横线连接,后缀为.zip。 2、用户上架发布后,管理员审批: 开通定义文件有附件链接给管理员下载检查,通过后管理员将开通定义文件检查为通过,填写审批意见、资产目录、资产标签。提交审批后后台会生成适配器数据,来源数据,商品级来源属性数据,安装适配器软件包应用。 生成适配器详情:适配器类型为本地应用分类 生成的来源详情:来源配置为空,适配器通过内部配置与业务平台实现交互,来源做配置后台默认为出空配置。 管理员审批通过完成后台生成商品来源属性数据。 assetDisplay:给页面组件展示资产显示元素 fileName:上传适配器软件包名称 items:显示在基本信息页面的资产对象 mappins:高级搜索时对该商品标记交付方式为在线开通 zipFileId:上传适配器软件包生成的附件唯一标识 1.2 订阅管理 1、 用户选择已订阅资产,单击“管理”,弹出适配器部署页面 2、 适配器页面操作(用于查看开通类密钥或安装部署资产包) 通过来源ID查询来源信息接口获取适配器页面参数进行适配器内部页面跳转(需要适配器内部页面跳转的才加,如deploy) { adaptTypes: [] //适配类型 adapterId: "" //适配器ID adapterName: "" //适配器名称 adapterParams: "" //适配器的页面参数 adapterType: "" //适配器类型 configParams: "" //配置参数 createdate: "" //来源创建时间 description: "" //来源描述 id: "" //来源ID isSupportCrossSource: false //是否支跨来源 name: "" //来源名称 } 3、完成后下次进入管理界面,直接显示执行结果 (下图为案例适配器内部deploy页面,管理操作后相应业务完成后可展示deploy页面信息) 父主题: 架构介绍
  • 架构介绍 ROMA Exchange开通文件架构如下: 开通定义文件架构中,主要包括两部分: 1.页面部分;通过页面部分与ROMA Exchange框架流程进行交互,这部分页面需要遵循开发文件定义规范,以保证与ROMA Exchange框架流程的正确的交互。当前主要包括如下2个页面: 管理/开通信息页;在订购者成功订购资产后,通过该页面对资产进行管理,如SaaS账号创建,环境信息回显,应用下载链接显示等; 配置页;考虑到应用开通配置信息有变更的场景,则需要在开通文件中定义配置页面,用于后续环境配置修改; 2. 服务部分;这部分提供页面所需要的能力; 交互流程
  • 应用开通定义文件介绍 应用是指实现了某种业务管理的可运行应用程序。 应用提供商将对应的业务管理能力作为商品发布到ROMA Exchange,在用户购买了对应的应用之后,ROMA Exchange需要负责打通应用提供商和购买者之间的交付流程,比如,创建应用账号、告知应用接入环境信息、提供应用包的下载链接等。 考虑到应用交付流程的差异性,ROMA Exchange产品提供了应用开通定义文件能力,一种特殊的适配器,应用提供商在发布应用类商品时,按照规范完成开通定义文件规范,并将定义文件上传到ROMA Exchange,实现不同应用在ROMA Exchange运营平台上的快速接入。 父主题: 概述
  • 约束限制 当需要使用HStore表时,需要同步修改以下几个参数的默认值,否则会导致HStore表性能严重劣化。 推荐的参数修改配置是:autovacuum_max_workers_hstore=3,autovacuum_max_workers=6,autovacuum=true。 8.2.1及以上版本支持列存索引脏数据清理,频繁更新入库的场景下能有效控制索引空间,提高入库与查询性能。 当使用HStore异步排序功能时,有两点需要注意。 异步排序期间可能会阻塞部分数据的DML操作,最大的阻塞粒度为异步排序的行数阈值,因此在反复DML的场景下不建议使用此功能。 自动异步排序与列存vacuum互斥,当autovacuum流程中满足列存vacuum的条件,则直接跳过流程中的异步排序,等待下次触发(极端场景下因为反复大批量DML操作的执行,列存vacuum会不停被触发,因此异步排序总是无法被触发)。
  • 数据同步示例 GaussDB (DWS)侧: 新建binlog表时,enable_hstore_binlog_table参数需要设置为true,可以通过show enable_hstore_binlog_table来查询。 -- 源表(产生binlog) 1 CREATE TABLE test_binlog_source(a int, b int, c int, primary key(a)) with(orientation=column, enable_hstore_opt=on, enable_binlog=true); -- 目标表 1 CREATE TABLE test_binlog_sink(a int, b int, c int, primary key(a)) with(orientation=column, enable_hstore_opt=on); Flink侧: 执行如下命令进行完整数据同步: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 -- 建立源表的映射表 CREATE TABLE test_binlog_source ( a int, b int, c int, primary key(a) NOT ENFORCED ) with ( 'connector' = 'dws', 'url' = 'jdbc:gaussdb://ip:port/gaussdb', 'binlog' = 'true', 'tableName' = 'test_binlog_source', 'binlogSlotName' = 'slot', 'username'='xxx', 'password'='xxx'); ​-- 建立目标表的映射表 CREATE TABLE test_binlog_sink ( a int, b int, c int, primary key(a) NOT ENFORCED ) with ( 'connector' = 'dws', 'url' = 'jdbc:gaussdb://ip:port/gaussdb', 'tableName' = 'test_binlog_sink', 'ignoreUpdateBefore'='false', 'connectionSize' = '1', 'username'='xxx', 'password'='xxx'); ​ INSERT INTO test_binlog_sink select * from test_binlog_source;
  • Binlog相关参数说明 下表仅涉及消费Binlog时的参数。 表1 消费Binlog时的参数 参数 说明 数据类型 默认值 binlog 是否读取Binlog信息 Boolean false binlogSlotName 槽位信息,可以理解一个标识。由于可能存在多个Flink任务同时消费同一张表的Binlog信息,所以该场景需要保证每个任务的binlogSlotName不同。 String Flink映射表的表名 binlogBatchReadSize 批量读取binlog的数据行数 Integer 5000 fullSyncBinlogBatchReadSize 全量读取binlog的数据行数 Integer 50000 binlogReadTimeout 增量消费Binlog数据时超时时间,单位毫秒 Integer 600000 fullSyncBinlogReadTimeout 全量消费Binlog数据时超时时间,单位毫秒 Long 1800000 binlogSleepTime 实时消费不到Binlog数据时休眠时间,单位毫秒。如果连续读取不到Binlog数据,则休眠时间为:binlogSleepTime * 次数,最大为binlogMaxSleepTime。读取到数据后,则重置。 Long 500 binlogMaxSleepTime 实时消费不到Binlog数据时最大休眠时间,单位毫秒。 Long 10000 binlogMaxRetryTimes 消费Binlog数据出错后的重试次数。 Integer 1 binlogRetryInterval 消费binlog数据出错后的重试时间间隔。重试时sleep时间:binlogRetryInterval * (1~binlogMaxRetryTimes) +Random(100)。单位毫秒。 Long 100 binlogParallelNum 消费Binlog数据时线程数,只有任务并发度小于DWS集群DN数时,该参数才有效,即此时一个并发度会消费多个DN上的数据,所以可以考虑设置该参数。 Integer 3 connectionPoolSize JDBC连接池连接大小。 Integer 5 needRedistribution 表示是否兼容扩充重分布(需要升级到对应内核版本,如果是低版本则设置为false);如果设置成true的话,flink的restart-strategy不能设置为none。 Boolean true newSystemValue 表示读取binlog数据时是否使用新的系统字段(需要升级到对应内核版本,如果是低版本则设置为false)。 Boolean true checkNodeChangeInterval 检测节点变化的间隔,只有needRedistribution=true才生效。 Long 10000 connectionSocketTimeout 连接处理超时时间(可以看成客户端执行SQL超时时间),单位毫秒;默认值为0,即不设置超时时间。 Integer 0 binlogIgnoreUpdateBefore 是否过滤Binlog记录中的before_update记录,以及delete记录是否只返回主键信息。该参数仅9.1.0.200及以上版本支持。 Boolean false binlogStartTime 设置从某个时间点开始消费Binlog(只能增量消费),格式为yyyy-MM-dd hh:mm:ss且表需要开启enable_binlog_timestamp。 该参数仅9.1.0.200及以上版本支持。 String 无 binlogSyncPointSize 增量读取binlog同步点区间的大小(增量读取binlog时,如果数据量过大可能涉及下盘,可通过调整该参数控制)。 该参数仅9.1.0.200及以上版本支持。 Integer 5000
  • 注意事项 当前仅8.3.0.100及以上的版本支持HStore和HStore-opt记录Binlog功能,且V3处于试商用阶段,使用前需要进行评估。 目前GaussDB(DWS)只有Hstore表和HStore-opt支持Binlog功能,表需要包含主键且设置enable_binlog=on或者enable_binlog_timestamp=on。 消费的Binlog表名不要带有特殊字符,如.、""等。 如果多个任务消费同一张表的Binlog数据,需要保证每个任务的binlogSlotName唯一。 为了达到最高的消费速度,建议将任务的并发度和DWS集群DN数设置一致。 使用dws-connector-flink的Sink能力来写入Binlog数据的话,需要注意以下几点: 如果需要保证DN内的数据写入顺序则需要设置connectionSize设置为1。 如果源端有更新主键操作或者需要flink进行聚合计算的话,将ignoreUpdateBefore设置为false,否则不建议将 ignoreUpdateBefore设置为false(默认true)。
  • pgxc_get_cstore_dirty_ratio(rel_name text, partition_name) 描述:该函数用于获取各个DN上目标表的cu、delta以及cudesc的脏页率以及大小,仅支持HStore_opt表。 其中partition_name为可选参数,如果传入分区名则只返回该分区对应的信息;如果没传入分区名且是主表时分区表返回所有分区对应的信息。该函数仅9.1.0.100及以上集群版本支持。 返回值类型:record 返回值: node_name:DN节点名 database_name:表所在数据库名称 rel_name:主表名 part_name:分区名 cu_dirty_ratio:cu文件的脏页率 cu_size:cu文件大小 delta_dirty_ratio:delta表脏页率 delta_size:delta表大小 cudesc_dirty_ratio:cudesc表脏页率 cudesc_size:cudesc表大小 示例: 1 2 3 4 5 6 7 8 SELECT * FROM pgxc_get_cstore_dirty_ratio('hs_opt_part'); node_name | database_name | rel_name | partition_name | cu_dirty_ratio | cu_size | delta_dirty_ratio | delta_size | cudesc_dirty_ratio | cudesc_size -----------+---------------+--------------------+----------------+----------------+---------+-------------------+------------+--------------------+------------- dn_1 | postgres | public.hs_opt_part | p1 | 0 | 0 | 0 | 16384 | 0 | 24576 dn_1 | postgres | public.hs_opt_part | p2 | 0 | 0 | 0 | 16384 | 0 | 24576 dn_1 | postgres | public.hs_opt_part | p3 | 0 | 0 | 0 | 16384 | 0 | 24576 dn_1 | postgres | public.hs_opt_part | p4 | 0 | 0 | 0 | 16384 | 0 | 24576 dn_1 | postgres | public.hs_opt_part | other | 0 | 1105920 | 0 | 524288 | 0 | 40960
  • pgxc_consumed_binlog_records(rel_name text, node_id int) 描述:该函数用于获取目标表在指定DN上的消费状态,只能对开启binlog或binlog时间戳的表使用。该函数仅9.1.0.200及以上集群版本支持。 返回值类型:int 返回值:返回0表示目标表的binlog仍没有被消费完毕(包含所有槽位以及checkpoint同步点),返回1表示目标表的binlog被全部消费完毕。 示例: 1 2 3 4 5 SELECT * FROM pgxc_consumed_binlog_records('hstore_binlog_source',0); pgxc_consumed_binlog_records ------------------------------ 1 (1 row)
  • pgxc_get_binlog_cursor_by_syncpoint(rel_name text, csn int8, node_id int) 描述:该函数用于获取目标表上指定同步点后的第一个binlog记录的信息,只能对开启binlog时间戳的表使用。 该函数仅9.1.0.200及以上集群版本支持。 返回值类型:record 返回值: node_name:节点名 node_id:节点id atest_sync_point:当前最新同步点 binlog_sync_point:同步点后的第一个binlog记录的同步点 binlog_timestamp_us:同步点后的第一个binlog记录的时间戳 binlog_xmin:同步点后的第一个binlog记录的xmin 示例: 1 2 3 4 5 6 SELECT * FROM pgxc_get_binlog_cursor_by_syncpoint('hstore_binlog_source',10516,0); node_name | node_id | latest_sync_point | binlog_sync_point | binlog_timestamp_us | binlog_xmin -----------+-------------+-------------------+-------------------+---------------------+------------- dn_1 | -1300059100 | 11187 | 10518 | 1731570520909055 | 10510 dn_2 | -1051926843 | 11187 | 10516 | 1731570520900211 | 10510 (2 rows)
  • pgxc_register_binlog_sync_point(rel_name text, slot_name text, node_id int, end_csn bigInt, checkpoint bool, xmin bigint) 描述:该函数用于登记同步点,只能对开启binlog或binlog时间戳的表使用。该函数仅9.1.0.200及以上集群版本支持。 返回值类型:int 返回值: 登记成功的节点数量 示例: 1 2 3 4 5 SELECT pgxc_register_binlog_sync_point('hstore_binlog_source', 'slot1', 0, 9999999999, false, 100); pgxc_register_binlog_sync_point --------------------------------- 2 (1 row)
  • pgxc_get_binlog_cursor_by_timestamp(rel_name text, timestamp timestampTz, node_id int) 描述:该函数用于获取目标表上指定时间点后的第一个binlog记录的信息,只能对开启binlog时间戳的表使用。 该函数仅9.1.0.200及以上集群版本支持。 返回值类型:record 返回值: node_name:节点名 node_id:节点id atest_sync_point:当前最新同步点 binlog_sync_point:时间点后的第一个binlog记录的同步点 binlog_timestamp_us:时间点后的第一个binlog记录的时间戳 binlog_xmin:时间点后的第一个binlog记录的xmin 示例: 1 2 3 4 5 6 SELECT * FROM pgxc_get_binlog_cursor_by_timestamp('hstore_binlog_source','2024-11-14 15:48:40.900211+08', 0); node_name | node_id | latest_sync_point | binlog_sync_point | binlog_timestamp_us | binlog_xmin -----------+-------------+-------------------+-------------------+---------------------+------------- dn_2 | -1051926843 | 10532 | 10516 | 1731570520900211 | 10510 dn_1 | -1300059100 | 10532 | 10518 | 1731570520909055 | 10510 (2 rows)
  • pgxc_get_binlog_sync_point(rel_name text, slot_name text, checkpoint bool, node_id int) 描述:该函数用于用于从pg_binlog_slots系统表上获取槽位对应的同步点信息,只能对开启binlog或binlog时间戳的表使用。该函数仅9.1.0.200及以上集群版本支持。 返回值类型:record 返回值: node_name:节点名 node_id:节点id last_sync_point:上次同步点 latest_sync_point:当前最新同步点 xmin:同步点对应xmin 示例: 1 2 3 4 5 6 SELECT * FROM pg_catalog.pgxc_get_binlog_sync_point('hstore_binlog_source', 'slot1', false, 0); node_name | node_id | last_sync_point | latest_sync_point | xmin -----------+-------------+-----------------+-------------------+------- dn_2 | -1051926843 | 0 | 10512 | 10507 dn_1 | -1300059100 | 0 | 10512 | 10508 (2 rows)
  • pgxc_get_binlog_changes(rel_name text, node_id int, start_csn bigint, end_csn bigInt) 描述:该函数用于获取目标表在指定DN上指定同步点区间的增量数据(node_id给0表示指定所有DN),只能对开启binlog或binlog时间戳的表使用。该函数仅9.1.0.200及以上集群版本支持。 返回值类型:record 返回值: gs_binlog_sync_point :同步点 gs_binlog_event_sequence:用于表示同一事务内的先后顺序 gs_binlog_event_type:binlog类型 gs_binlog_timestamp_us:binlog记录的时间戳,对于enable_binlog_timestamp为false的binlog表,该列返回空 value columns:目标表上各个用户字段的数据 示例: 1 2 3 4 5 6 7 8 SELECT * FROM pgxc_get_binlog_changes('hstore_binlog_source', 0, 0 , 9999999999); gs_binlog_sync_point | gs_binlog_event_sequence | gs_binlog_event_type | gs_binlog_timestamp_us | c1 | c2 | c3 ----------------------+--------------------------+----------------------+------------------------+-----+----+---- 10516 | 2 | I | 1731570520900211 | 100 | 1 | 1 10517 | 3 | d | 1731570520904425 | 100 | 1 | 1 10518 | 2 | I | 1731570520909055 | 200 | 1 | 1 10519 | 3 | B | 1731570520914102 | 200 | 1 | 1 10519 | 4 | U | 1731570520914154 | 200 | 2 | 1
  • hstore_full_merge(rel_name text,partitionName text) 描述:该函数用于手动对HStore表进行全量清理操作,其中第二个入参为可选参数,用于指定单分区进行操作。 返回值类型:int 执行该操作会强制将DELTA表上的所有可见操作Merge到主表,然后建一张新的空Delta表, 期间持有该表的八级锁。 该操作的耗时长度与DELTA表上的数据量有关,务必打开HStore的清理线程,确保HStore表的及时清理。 仅在8.3.0.100及以上集群版本支持第二个可选参数partitionName,因此8.3.0.100及以上集群版本不支持使用call调用此函数(call不支持重载) 示例: 1 SELECT hstore_full_merge('reason_select','part1');
共100000条