同步数据源

将 iTop 对象与外部数据源对齐。

如果您不熟悉此概念,请先阅读概述。

  • 想查看示例
  • 想深入了解以排除常见问题

数据源定义

数据源使用菜单"管理工具 / 同步数据源"定义。

每个数据源定义:

  • 要同步的对象的目标类
  • 要同步的对象的属性/字段列表
  • 如何搜索/协调对象与 iTop 中已存在的对象
  • 同步/更新以及可能删除 iTop 中对象的规则
  • 同步对象对 iTop 最终用户的行为方式(哪些字段是只读的,用户是否允许删除对象…)
  • 一个可选的超链接和图标,用于将 iTop 用户指向外部应用中的相应对象

描述

“属性"部分的此部分定义此同步数据源的一些通用参数。

属性必填?含义示例值
名称必填引用此数据源的名称来自 SCCS 的服务器同步
描述可选附加描述,仅供参考
状态必填实现、生产或废弃:用于过滤/分类数据源生产
目标类必填要同步的对象类服务器
用户必填允许执行此同步的用户admin
通知联系人可选当同步执行并包含至少一个错误时,通过邮件通知的联系人
图标超链接可选代表此数据源的图像的超链接(URL)。此图标显示在 iTop 中同步对象标题旁边"锁定"符号的工具提示中,代替默认图标
应用超链接可选同步数据来源的远程应用的超链接(URL)。超链接可以包含占位符,如 $this->attcode$(将被当前对象的属性值替换)或 $replica->column_name$(将被副本中命名列的值替换)https://myapp.acme.com/display/server/$replica->primary_key$
数据表可选存储副本信息的 MySQL 表名称。如果省略,系统将为您生成一个唯一名称synchro_data_servers_from_sccs

搜索与协调

属性的此部分定义:

  • 副本表中的信息如何与 iTop 数据库的内容匹配
  • 此同步数据源关于创建新 iTop 对象的行为。
属性含义
协调策略使用属性:创建新副本时,系统将基于标记为"是"的同步属性列表中设置了协调标志的属性,在 iTop 中搜索匹配对象。使用主键:副本的 primary_key 列应包含 iTop 中对象的标识符。
零匹配操作当协调在 iTop 中未找到任何对象时做什么。创建:指示系统创建目标类的新对象。错误:将导致系统将此情况报告为错误(即此同步数据源应仅更新现有对象)。
单匹配操作当协调在 iTop 中恰好找到一个匹配对象时做什么。更新:指示系统更新此对象。错误:将导致系统将此情况报告为错误(即此同步数据源应创建对象且从不更新现有对象)。
多匹配操作当协调在 iTop 中找到多个匹配对象时做什么。创建:指示系统创建另一个对象。错误:将导致系统将此情况报告为错误。取第一个:指示系统选择列表中的第一个对象并更新它。

删除规则

此部分定义如何处理同步对象的删除:

  • 由 iTop 中的最终用户删除
  • 由同步系统本身删除
属性含义
用户允许哪些最终用户被允许在 iTop 中删除同步对象。无人:当对象被同步时,没有人被允许在 iTop 中删除它,只有同步系统可以删除它。仅管理员:仅管理员被允许删除同步对象。允许删除此类对象的每个人:正常的访问规则适用于此类同步对象。
完整加载间隔两次被认为是已加载(触及)所有副本的同步执行之间的持续时间。当副本超过此持续时间未被触及时,它被视为过时。
删除策略当副本变为过时时的操作。忽略:什么都不做,关联对象保持原样。删除:在 iTop 中删除关联对象(以及数据表中的副本)。更新:按照更新规则更新关联对象。更新后删除:按照更新规则更新关联对象,然后在保留持续时间后删除对象(和副本)。
更新规则以分号分隔的值列表,形式为 attribute_code:value,以指定关联对象的哪个属性设置为哪个值。例如:status:obsolete;description:no longer synchronized。
保留持续时间仅当删除策略设置为"更新后删除"时使用。在这种情况下,从源中删除的对象会立即更新,并仅在保留持续时间后从 iTop 中删除。

如果您设置完整加载间隔为 7 天,保留持续时间为 14 天,则不再由源提供的对象将在 3 周后被删除。

属性

“属性"选项卡定义:

  • 如何确定是否必须在 iTop 中创建新对象,或者是否必须将现有对象与副本关联(如果属性中的协调规则为"使用属性”)
  • 关联对象的哪些属性必须更新,以及如何更新。
属性选项卡目的
属性自动列出数据同步"目标类"的每个属性,及其标签和代码
协调指定此列中的值是否应用于检索现有 iTop 对象。仅用于新副本
更新指定该 iTop 对象属性是否应由数据同步更新
更新策略指定该属性是否可以在 iTop 中编辑
协调键仅对外部键属性需要。指定用于检索远程对象的一个属性。可以是 id 或作为远程类的唯一标识符的字段

协调列

当新记录出现在 synchro_data_xxx 表中时,同步机制将尝试将此记录与现有 iTop 对象关联。如果一个或多个属性在"协调?“列中标记为"是”,则这些列/属性将用于搜索匹配所有这些值的 iTop 对象。如果找到一个对象,它将成为与此记录关联。如果未找到对象,则将创建新的 iTop 对象。

更新列

更新列定义是否必须更新属性。

  • 选中 = 是:属性将被设置/更新
  • 未选中 = 否:此属性的外部源信息将被忽略,iTop 对象上的现有值将保持原样
  • Null => 保持现有 iTop 字段值不变
  • 空字符串 => 重置 iTop 对象字段

您必须使用自己的填充机制将 Null 值加载到 synchro_data_xxx 表中,因为 synchro_import.php 无法做到这一点。

更新策略列

更新策略列定义编辑 iTop 对象时更新属性的行为。可能的值:

  • 锁定:属性将完全由数据同步驱动,在 iTop 用户界面中显示为只读(旁边有一个小锁图标)
  • 解锁:属性将由同步更新(每当源数据更改时),但最终用户仍可以在 iTop 中并行修改该属性
  • 为空时初始化:同步仅当 iTop 中该属性的值为空时才设置值。该属性在 iTop 中保持可修改。

协调键列

最后,协调键列定义如何处理引用另一个 iTop 对象的属性(即外键)。提供的数据可以包含外键的实际值(id)或另一个属性,例如对象的名称;该属性必须唯一标识对象。

状态

“状态"选项卡显示有关同步执行的信息。如果同步从未运行,该选项卡显示以下消息:

This synchro was never run. No log yet.

否则,该选项卡显示类似于下图的架构:

同步历史

在屏幕左侧,每次同步执行都显示在历史列表中,显示整体状态、执行的开始日期和时间。

点击此列表中的元素以在右侧两列中显示相应的状态详情。

左列显示 synchro_data_xxxx 表中记录的状态:

  • 记录是自上次执行同步以来添加到表中的记录
  • 现有记录是在上次同步之前存在并且自上次同步以来已再次加载的记录
  • 消失记录是自超过 full_load_interval 持续时间以来未被加载的记录
  • 忽略记录对应于 iTop 中不再存在的对象

右列显示同步的后果,即对 iTop 中关联对象的修改:

  • 对于每个记录,后果可以是:在 iTop 中创建新对象(已创建)、更新 iTop 中已存在的对象(已更新)、与 iTop 中已是最新的对象简单关联(未更改),或尝试在 iTop 中创建或更新对象时出错(最可能是因为数据不一致)。
  • 对于每个现有记录,后果可以是:更新关联对象(已更新)、完全没有更改(未更改),或尝试更新关联对象时出错(错误)。
  • 对于每个消失记录,后果(取决于"删除规则”)可以是:iTop 中的关联对象已删除(已删除)、iTop 中的关联对象已更新(已更新)、iTop 中的关联对象保持不变(无操作),或尝试在 iTop 中更新或删除关联对象时出错(错误)。

副本

在 iTop 中,副本用于存储状态信息以及 synchro_data_xxx 表中加载的原始数据与关联 iTop 对象之间的关系。

可以通过点击状态选项卡顶部的链接来显示给定数据同步源的副本。副本显示如下:

副本的内容对于理解数据同步机制的行为(以及获取有关错误的更多信息)很有用,但其数据由同步维护,不应手动修改。

副本字段目的
同步数据源此副本所属的同步数据源
目标对象(ID)与此副本对应的 iTop 对象 id。当副本是新的并且由于错误而无法同步时,可以为空
目标类型同步数据源的目标类,也是目标对象的类
状态副本的状态:已修改、新建、过时、孤立、已同步
最后看到该副本在源数据中上次看到的时间(相同的 primary_key)
对象已创建?数据同步是否创建了 iTop 对象?
最后错误错误
警告发生某些非阻塞错误时的警告消息
创建日期同步数据创建 iTop 对象的时间
最后修改日期源上次修改该副本的时间
副本状态含义
新建新收到的副本。syncho_exec.php 发生之前的临时状态,用于创建 iTop 对象
已修改修改的副本。syncho_exec.php 发生之前的临时状态,用于更新 iTop 对象
已同步副本和 iTop 对象已对齐
过时数据不再在源中,iTop 对象未被删除,否则副本也会被删除
孤立这不应发生。在这种情况下,同步的 iTop 对象已消失,但未同时删除副本。此类副本可以安全地手动删除

使用 MySQL 语句填充 synchro_data_xxxx 表

如果您使用 SQL 命令(通过 ETL 或自制脚本)填充 synchro_data_xxx 表,您必须注意永远不要创建重复记录。请记住,synchro_data_xxx 表中的每条记录恰好对应 iTop 中的一个对象。

为了避免此类重复,您必须首先查询现有记录,然后再将新记录插入表中。为了加速此查询,您可以构造一个唯一标识"源"对象的值,并将此值存储在表的 “primary_key” 列中(该列具有唯一索引),或者使用记录列的任何组合并更改 synchro_data_xxxx 表的定义以添加您自己的索引。

然后通过执行页面 “synchro/synchro_exec.php” 来触发 iTop 对象与临时表副本之间的数据同步执行,可以在命令行模式下,或通过调用网页(例如使用 wget)。

使用 synchro_import 填充 synchro_data_xxxx 表

请参阅:synchro_import.php

如何指定相关对象列表(链接集)

某些类具有称为链接集的属性。例如:UserLocal.profile_list

您可以通过在相应列中写入所有信息来同步这些列表:

以下示例指定登录将具有一个配置文件:‘Portal User’

INSERT login, profile_list INTO data_synchro_userlocal_1 VALUES ('johndoe', 'profileid->name:Portal User;reason:Customer')...;

您还可以指定多个链接(多个配置文件)。

有关更多信息,请参阅导入链接集。

故障排除

数据同步故障排除


原文:https://www.itophub.io/wiki/page?id=3_2_0:advancedtopics:data_synchronization

版本:3_2_0/advancedtopics/data_synchronization.txt · Last modified: 2024/10/28 12:21 by 127.0.0.1