数据同步


➡️ 配置 iTop 与外部数据源的同步

数据同步功能允许将 iTop 对象与外部数据源对齐。管理员可在"配置 / 同步数据源"菜单中配置。

如果不熟悉此功能,请先阅读数据同步概述

数据源定义

数据源通过菜单 管理工具 / 同步数据源 进行定义。

每个数据源定义:

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

描述

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

属性必填?含义示例值
名称必填引用此数据源的名称来自 SCCS 的服务器同步
描述可选附加描述,仅供参考
状态必填implementation、production 或 obsolete:用于过滤/分类数据源production
目标类必填要同步的对象类Server
用户必填允许执行此同步的用户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 对象的行为
属性含义
协调策略使用属性(use_attributes):创建新副本时,系统将根据设置了"协调"标志为"是"的同步属性列表在 iTop 中搜索匹配对象。使用主键(use_primary_key):副本的 primary_key 列预期包含 iTop 中对象的标识符。
零个匹配时的操作协调在 iTop 中未找到任何对象时的操作。创建(Create)指示系统创建目标类的新对象。错误(Error)将导致系统将此情况报告为错误(即此同步数据源应仅更新现有对象)。
一个匹配时的操作协调在 iTop 中找到一个匹配对象时的操作。更新(Update)指示系统更新此对象。错误(Error)将导致系统将此情况报告为错误(即此同步数据源应创建对象且从不更新现有对象)。
多个匹配时的操作协调在 iTop 中找到多个匹配对象时的操作。创建(Create)指示系统创建另一个对象。错误(Error)将导致系统将此情况报告为错误。取第一个(Take the first one)指示系统选择列表中的第一个对象并更新它。

删除规则

此部分定义同步对象的删除处理方式:

  • 由 iTop 中的最终用户删除
  • 由同步系统本身删除
属性含义
允许删除的用户哪些最终用户可以在 iTop 中删除同步对象。无人(Nobody):对象同步后,无人可以在 iTop 中删除它,只有同步系统可以删除它。仅管理员(Administrators only):只有管理员可以删除同步对象。允许删除此类对象的所有人(Everybody allowed to delete such objects):正常的访问规则适用于此类同步对象。
全量加载间隔两次被认为是已加载(触及)所有副本的同步执行之间的持续时间。当副本在超过此值的时间内未被触及时,它被视为过时。
删除策略副本变为过时时执行的操作。忽略(Ignore):不执行任何操作,关联对象保持原样。删除(Delete):在 iTop 中删除关联对象(以及数据表中的副本)。更新(Update):按照下面的更新规则更新关联对象。更新后删除(Update then Delete):按照下面的更新规则更新关联对象,然后在保留持续时间后删除对象(及副本)。
更新规则以分号分隔的值列表,格式为 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 对象时更新属性的行为。可能的值包括:

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

协调键列

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

状态

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

This synchro was never run. No log yet.

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

同步历史

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

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

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

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

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

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

副本

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

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

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

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

使用 MySQL 语句填充 synchro_data_xxxx 表

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

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

然后触发 iTop 对象与临时表副本之间的数据同步执行,通过执行页面 synchro/synchro_exec.php,可以在命令行模式下执行,或通过调用网页(例如使用 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