2.5. UUID同步服务部署

本章节介绍UUID同步服务部署方法。

2.5.1. UUID同步服务简介

在多发场景下,当通过网关分发请求到源库和目标库服务新增记录时,存在生成的UUID值不一致的情况。这个服务的用途就是将目标库的UUID值更新为源库的UUID值。

../_images/arch_ukagent.png

UUID同步服务特性包括:

  • 支持配置多个目标端数据库

2.5.2. UUID同步服务部署

UUID同步服务的发布物在多发制品的 uk_agent 目录。

部署时需要的步骤包括:

  1. 在部署服务器上解压出发布物包。

  2. 在需要同步UUID的目标数据库中执行 uk_agent/script/init.sql 脚本进行表的创建。

  3. 修改 uk_agent/config/application.properties 配置所有的目标库数据源,具体可以参考发布包中的文件 uk_agent/config/application.properties.sample

  4. 修改 uk_agent/config/application.properties 配置文件中的 agent.tablecols 参数,配置需要同步的表。格式为 表名:同步列名1,同步列名2,...;表名:同步列名1,同步列名2,... ,其中需要保证同步列名1为唯一键列

2.5.3. UUID同步服务启动

完成上述部署步骤后,可执行 ./start.sh 进行启动。

2.5.4. UUID同步服务停止

完成上述部署步骤后,可执行 ./stop.sh 进行停止。

2.5.5. 对外接口

2.5.5.1. UUID数据同步接口

多发服务在源库和目标库产生的UUID值不一致时,通过该接口可以将目标库的UUID值更新为源库的UUID值。

2.5.5.1.1. 接口请求地址

http://ip:port/ukagent/putSyncUuid

2.5.5.1.2. 请求方式

POST

2.5.5.1.3. Content-Type

application/json;charset=UTF-8

2.5.5.1.4. 接口请求参数

参数名

类型

是否必须

说明

取值范围

示例

traceId

String

链路ID

bizSqlSchemaName

String

同步数据模式名

bizSqlTableName

String

同步数据表名

详细见如下TargetDialectInfo对象结构

bizSqlSequence

Integer

SQL顺序号

sourceDialect

String

源数据库

ORACLE、MYSQL

ORACLE

targetDialect

String

目标数据库

参考多发值范围

oceanbase_oracle

multiQueryResultSet

MultiQueryResultSetDTO

同步数据结果集

MultiQueryResultSetDTO对象结构如下:

参数名

类型

是否必须

说明

取值范围

示例

columnNames

List<String>

同步数据列名

dataRows

List<List<String>>

同步数据值结果集

2.5.5.1.5. 接口返回参数

参数名

类型

是否必须

说明

取值范围

示例

code

Integer

状态码,0表示成功,非0表示异常

0

message

String

信息描述

多发数据源初始化成功

2.5.5.1.6. 请求示例

{
        "bizSqlSequence": 3,
        "bizSqlTableName": "tb_ci_relationship",
        "multiQueryResultSet": {
                "columnNames": ["relation_id", "source_instance_id", "dest_instance_id"],
                "dataRows": [
                        ["7a88e01b-5f56-4fd8-8fc3-bff363a07b3c", "#85884f658e0c4b8a98a8e2ecbf3c4855", "4194456a-203d-46c1-826b-314c38d85f3a"]
                ]
        },
        "sourceDialect": "MYSQL",
        "targetDialect": "MYSQL",
        "traceId": "multi-119595d6-a5d0-4ba8-8ea8-13a2cc7e58c2"
}

2.5.5.1.7. 返回示例

{
        "code": 0,
        "message": "success"
}