MySQL数据库同步数据集成

最后更新:2021-12-07

概述

connector支持直接拉取数据库表数据,同步数据到idaas。

1. 同步来源设置

新建同步来源,点击【来源管理】–》【新建同步来源】。

  • 来源名称: 随意填写。

  • 适用环境: 环境选择请与同步目标设置一样,如果不一致,同步将会失败。

  • 来源主类型: 数据库类型

  • 来源子类型: MySql(MYSQL)

  • 数据库名称: 填写需要同步的数据库名,如:idaas

  • 数据库地址: 填写对应的数据库地址,如:127.0.0.1

  • 数据库端口: 填写对应的数据库端口,如:3306

  • 账户: 填写数据库登录的账户名,如:root

  • 密码: 填写数据库登录的密码,如:123456

  • 账户信息表名或SQL语句: 用于存储账户信息的数据库表名称,如:T_UDACCOUNT

  • 机构信息表名或SQL语句: 用于存储机构信息的数据库表名称,如:T_ORGANIZATIONUNIT

  • 机构的上级节点字段名: 组织机构父级节点的标识字段,如:PREENTID

  • 增量查询的字段名: 表里面用于增量查询字段,如:createTime

image.png

2. 同步目标设置

  1. 先登录IDaaS,创建一个应用,并开启应用的API。


  1. 在【目标管理】里面,点击【新建同步目标】。

  • 来源名称:随意填写,注意唯一性即可

  • 来源主类型:SCIM

  • 来源子类型:IDP4_SCIM

  • Basic URL:IDP4的域名或者IP,如果有负载要填写负载的地址,如 http://{IDaaS_server}

  • Client ID : IDP4中创建的应用的 API Key

  • Client Secret:IDP4中创建的应用的 API Secret

  • 版本号:固定为 v1.2 (该字段是预留的,以应对后续IDP的API做了版本升级时,进行兼容处理,当前固定值 v1.2)

  • 是否启用:启用

  • 是否离职:禁用

  • 是否返聘:禁用

  1. 点击“测试连接”,确保连接的参数配置正确,如果测试通过,点击“提交”.

image.png

3. 同步任务设置

3.1 同步来源

  • 同步源:选择在1中配置好的同步来源。

  • 来源根节点标识:默认填写0。(因为是通过接口调用实现数据同步,不存在来源根节点)

  • 来源OU路径:不用填写

  • 同步范围:选择需要同步的范围(组织机构,组,账户)

image.png

3.2 同步目标

  • 同步目标:选择在2中配置好的同步目标。

  • 目标根节点标识:填写IDaaS中,组织机构的外部ID,即externalID。

  • IDaaS的组织机构外部ID查看方法:点击【机构和组】–> 点击需要同步到的组织机构 –> 点击组织机构名称旁边的查看详情按钮 – > 查看外部id。如下图:

image.png

  • 目标OU路径:不用填写

  • 默认密码:默认密码,如果填写,则同步到目标的时候如果映射的密码字段值为空,则使用该默认密码进行填值。

  • 增改模式:根据需求打开或禁用

  • 孤儿账户检测:禁用

image.png

3.3 属性映射配置

根据需求,配置相应的字段映射。
image.png

image.png

其中需注意:enabled字段 为机构和用户 是否可用的标记,必须配置······

如果出现数据库字段和idaas所需要的映射字段无法一一对应的情况,如数据库用户状态字段status,值为0(未启用),1(启用),2(删除),而idaas 所对应的账户状态字段enabled 只接受true/false,那么需要将字段进行动态映射,动态映射采用groovy语法,下面是动态映射的配置示例:

image.png

package com.idsmanager.idp.sync.plugin.mysql

import com.idsmanager.idp.sync.core.infrastructure.mapping.FieldAttributeMapper
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

Logger LOG = LoggerFactory.getLogger(FieldAttributeMapper.class);
Object result =  attributeGetter.getAttribute(source, "status");

LOG.info(result + " " + result.getClass());
if (null != result) {
    attributeSetter.setAttribute(target, mapping.getTargetFiledName(), !"0".equalsIgnoreCase(result));
}

说明:status字段即来源表的字段,此处的mapping.getTargetFiledName() 为目标idp的enabled字段;

来源status为0,则 !“0”.equalsIgnoreCase(result) 返回 false,那么IDP的enabled将被设置为false,此时机构\用户是无效状态,和原来的状态对应。

来源archived 为1,则 !“0”.equalsIgnoreCase(result) 返回 true,那么IDP的enabled将被设置为true,此时机构\用户是有效状态,和原来的状态对应。

ps:机构必须是有效状态,如果是无效状态,则在idaas界面无法显示机构;

各数据源的package名称
package com.idsmanager.idp.sync.plugin.oracle
package com.idsmanager.idp.sync.plugin.mysql
package com.idsmanager.idp.sync.plugin.db2

3.4 同步计划配置

image.png

3.5 注意事项

配置完同步任务之后就可以开始同步数据了,但需要注意的是:

  1. 如果组织机构在idaas里面不存在,那么同步账户时,将报错,找不到对应的组织机构,请先同步组织机构数据,再同步账户数据。

  2. 组织机构状态和账户状态一定需要同步。以保证用户能在idaas正确登录和操作。