2.5. UUID同步服务部署
本章节介绍UUID同步服务部署方法。
2.5.1. UUID同步服务简介
在多发场景下,当通过网关分发请求到源库和目标库服务新增记录时,存在生成的UUID值不一致的情况。这个服务的用途就是将目标库的UUID值更新为源库的UUID值。
UUID同步服务特性包括:
支持配置多个目标端数据库
2.5.2. UUID同步服务部署
UUID同步服务的发布物在多发制品的 uk_agent 目录。
部署时需要的步骤包括:
在部署服务器上解压出发布物包。
在需要同步UUID的目标数据库中执行
uk_agent/script/init.sql脚本进行表的创建。修改
uk_agent/config/application.properties配置所有的目标库数据源,具体可以参考发布包中的文件uk_agent/config/application.properties.sample。修改
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. 接口请求地址
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"
}