15-数据库同步配置举例-增量
本章节下载: 15-数据库同步配置举例-增量 (1.10 MB)
目 录
数据库同步模块为系统内及系统间的信息交互和共享提供了一个集成化数据交互和共享空间,可同时满足客户各类平台、数据库及应用之间的数据交换需求。
本文档不严格与具体软、硬件版本对应,如果使用过程中与产品实际情况有差异,请以设备实际情况为准。
本文档中的配置均是在实验室环境下进行的配置和验证,配置前设备的所有参数均采用出厂时的缺省配置。如果您已经对设备进行了配置,为了保证配置效果,请确认现有配置和以下举例中的配置不冲突。
本文档假设您已了解H3C SecPath G9000-X-G系列多级安全互联交换平台(以下简称为平台)特性和数据库同步模块功能。
PC、多级安全互联交换平台、SW(交换机)、DB2。
如图1所示,HOST1和HOST2上面分别装有DB2数据库。现有以下组网需求:
将用户对前置侧数据库表的操作同步到后置侧数据库,实现内、外网之间,自动安全信息交换。
注:此文档以DB2为例进行配置指导,新建用户及数据库表进行同步,在实际部署中可使用已有用户及数据库表进行操作。
表1 业务梳理:
内网 DB2数据库地址 |
前置机地址 (连接内网侧的接口地址) |
后置机地址 (连接外网侧的接口地址) |
外网 DB2数据库地址 |
192.168.90.41 |
192.168.90.166 |
192.168.91.18 |
192.168.91.20 |
该配置指导是平台的ESS 6702P01版本,且需要License开启数据库同步功能。
mysql5.0.2/mysql5.5.60/mysql8.0.26/mysql8.0.39;
Oracle10g/11g/12c(CDB)/19c;
Sqlserver 2022/ Sqlserver2008R2;
DB2 v10.5.0.5/DB2 v11.1.2020.1393;
Kingbase v8r6;
Gbase 8.3.85.12;
PostgreSQL 10.13/PostgreSQL 10.23/PostgreSQL 16;
DM8;
神通数据库7.0.8;
Highgo数据库V4.5.8;
sybase数据库15.7
本次同步方向以“前到后”、增量同步举例。
配置HOST1、HOST2、管理PC、SW互联口。
admin用户通过管理PC登录平台的系统管理端,分别配置前、后置GE0/0的IP地址。
图2 添加前置IP地址
图3 添加后置GE0/0地址
以配置DB2为例,在前、后置数据库服务器进行相同配置。
在HOST1和HOST2上安装DB2,linux或windows版本均可。
在前后置使用sysdba用户登录DB2数据库,新建同步用户,例如db2inst1,并且赋予以下权限:
CREATE USER db2inst1 IDENTIFIED BY db2inst1;
GRANT CONNECT,RESOURCE,DBA TO db2inst1;
SET AUTOCOMMIT ON;
图4 新建同步用户
在前后置使用新建的db2inst1用户登录,创建数据库表。步骤如下:
CREATE TABLE "DB2INST1"."DBTAB'
"NAME" VARCHAR(50 OCTETS)NOT NULL,
"AGE" INTEGER"
IN "USERSPACE1"
ORGANIZE BY ROW
ALTER TABLE "DB2INST1"."DBTAB"
ADD CONSTRAINT "DBTAB PK" PRIMARY KEY
("NAME");
GRANT CONTROL ON TABLE "DB2INST1"."DBTAB" TO USER "DB2INST1";
图5 创建同步表
(1) 添加前置同步数据库
登录secrecy用户,依次点击:数据库同步>同步数据库配置>添加,添加数据库配置如下。
图6 添加前置同步数据库
表2 数据库同步参数说明
参数 |
说明 |
节点ID |
用于前、后置机系统判断是否为同一条任务的认证ID |
描述 |
填写该配置描述信息 |
数据库类型 |
选择配置数据库类型 可选择:Mysql类型,Oracle类型,Db2类型,Sqlserver类型、KingBase类型、DM类型、GBase类型、PostgreSQL类型、神通类型、Sybase类型、HighGo类型 |
数据库地址 |
使用的数据库地址 |
数据库实例名 |
Sqlserver选填项,如不填写默认实例名 |
数据库端口 |
使用的数据库端口,默认即可。如果数据库端口有修改,需要做对应修改 |
数据库名称 |
使用的database,此例中使用的是DB2 |
数据库用户名 |
使用的数据库用户(具有dba和远程连接权限) |
数据库密码 |
使用的用户密码 |
Jdbc参数 |
Mysql的jdbc参数可选择配置,默认即可 |
大字段病毒检测 |
用于对数据库大字段类型的病毒过滤 |
(2) 前置同步数据库配置完成后,测试连接。
点击测试连接,提示测试成功。
图7 测试连接
测试成功后,点击保存。
图8 查看同步数据库配置-前置机
(3) 添加后置同步数据库
登录secrecy用户,依次点击:数据库同步>同步数据库配置>添加,添加数据库配置如下。
图9 添加后置同步数据库
(4) 后置同步数据库配置完成后,测试连接。
点击测试连接,提示测试成功。
图10 测试连接
测试成功后,点击保存。
图11 查看同步数据库配置-后置机
(1) 前置关联数据库
依次点击:数据库同步>关联数据库,添加保存关联数据库。
图12 前置关联数据库配置-选择增量同步
查看前置关联的数据库
图13 前置关联的数据库
表3 关联数据库参数说明
参数 |
说明 |
关联名称 |
自定义的关联数据库的名称 |
同步方式 |
增量同步:同步更新数据 |
历史同步:同步旧数据和新数据;以同步方向目的表为准:两端表存在不一致的数据时,目的表数据不被覆盖;以同步方向源表为标准:两端表存在不一致的数据时,目的表数据被覆盖 |
|
同步开始时间 |
自定义数据同步开始的时间,增量同步下生效 |
同步结束时间 |
自定义数据同步结束的时间,增量同步下生效 |
开启定时同步 |
数据同步完成后,间隔多长时间进行下一次扫描同步,历史同步下生效 |
是否记录日志 |
历史同步支持配置是否记录日志 |
扫描间隔(s) |
添加扫描间隔时间配置 |
本端节点ID |
用于和对端节点ID匹配 |
对端节点ID |
用于和本端节点ID匹配 |
(2) 后置关联数据库
依次点击:数据库同步>关联数据库,添加保存关联数据库。
图14 后置关联数据库配置-选择增量同步
查看后置关联的数据库
图15 后置关联的数据库
明确同步方向,按照以下原则在对应的前后置机上进行配置;
若数据库表同步方向为前到后,需要在前置进行配置;
若数据库表同步方向为后到前,需要在后置进行配置;
若数据库表同步方向为双向,则需要在前后置分别配置。
以前置机同步表配置为例,依次点击:数据库同步>同步表配置,右上角选择已关联的数据库,点击”+”,添加同步表。
图16 添加前置同步表
添加同步表配置:使用源schema和目的schema过滤,点击查询源表和查询目的表,查询成功后下拉选择需要同步的源表和目的表,同步配置勾选插入、修改、删除,保存配置。
图17 同步表配置
表4 同步表管理参数说明
参数 |
说明 |
前置表 |
自动查询前置表,并选择要同步的数据表 |
前置schema |
根据数据库类型选择对应的schema约束限定为指定的数据库;Oracle/DB2/Sqlserver/DM/kingbase/postgresSQL/神通/highgo/sybase配置同步时,需要使用正确的shcema |
后置schema |
根据数据库类型选择对应的schema约束限定为指定的数据库;Oracle/DB2/Sqlserver/DM/kingbase/postgresSQL/神通/highgo/sybase配置同步时,需要使用正确的shcema |
后置表 |
数据库关联后,自行查询后置表,并选择要同步的数据表 |
自定义列同步 |
自定义哪个列需要同步 |
自定义列同步-自定义过滤策略 |
指定哪个自定义列列使用过滤条件,满足过滤条件的不进行同步 |
自定义条件同步 |
指定列在满足条件下才进行同步,不满足条件的列不进行同步 |
同步条件 |
给指定列选择一个条件,只有满足这个条件,数据操作都会同步 |
表冲突决策 |
主键检查决策:表示仅使用主键来检测冲突。如果存在具有相同主键的行,则在更新或删除期间不会检测到冲突。更新和删除行仅使用主键列进行解析。如果在插入期间已经存在行,则检测到冲突。 被改变的数据(已更改数据检测):表示将使用主键加上源系统上已更改的任何数据来检测冲突。如果目标系统上存在与源系统上已更改列的旧值相同的行,则在更新或删除期间不会检测到冲突。如果在插入期间已经存在行,则检测到冲突。(如数据库中包含主键,则会将定义的主键和已更改数据同时作为检测判断依据)。 旧值(旧数据值检测):表示所有旧数据值都用于检测冲突。旧数据是更改之前源系统上的行的数据值。如果目标系统上存在与源系统上相同的旧值的行,则在更新或删除期间不会检测到冲突。如果在插入期间已经存在行,则检测到冲突。(如数据库中包含主键,则会将定义的主键和旧数据值同时作为检测判断依据)。 时间截(时间戳列检测):指示主键加上时间戳列“date”将指示是否发生冲突。如果目标时间戳列不等于旧的源时间戳列,则检测到冲突。如果在插入期间已经存在行,则检测到冲突。 您必须要指定时间戳的列的名称,如“date”。(如数据库中包含主键,则会将定义的主键和时间戳列同时作为检测判断依据,时间类型:date、datetime)。 版本(版本列检测):表示主键加上版本列“version”将指示是否发生冲突。如果目标版本列不等于旧的源版本列,则检测到冲突。如果在插入期间已经存在行,则检测到冲突。 您必须要指版本号的列的名称,如“version”。(如数据库中包含主键,则会将定义的主键和版本列同时作为检测判断依据,版本类型:int、number)。 |
冲突列设置 |
前置时间列:选择时间的列名(date、datetime) 后置时间列:选择时间的列名(date、datetime) 前置版本列:选择version的列名(int、number) 后置版本列:选择version的列名(int、number) |
表冲突决策机制 |
手动解决:当检测到冲突时,批处理将保持错误,直到发生手动干预。插入想要插入的值,或者选择忽略。 软件自主判断:表示当检测到冲突时,系统应自动应用更改。如果源操作是插入,则将尝试更新。如果源操作是更新并且该行不存在,则将尝试插入。如果源操作是删除并且该行不存在,则删除将被忽略。 忽略:表示当检测到冲突时,系统应自动忽略传入的更改。 比较:表示当检测冲突时,系统会以最新的为准。 |
图18 同步表添加成功
自定义列同步,两个数据表选择的列长度和列类型需要保持一致;
同步表仅配置前置,方向为前到后同步;
同步表仅配置后置,方向为后到前同步;
同步表配置两端,方向为双向同步;
注意数据库同步配置请按照:配置同步数据库-关联数据库-配置同步表的步骤进行配置。
数据库中已经配置过同步的表,请勿直接删除。删除前请先清除平台数据同步中的相关配置。删除请严格按照“同步表配置”、“关联数据库”、“同步数据库配置”顺序依次执行删除操作。
数据库同步配置完成后,请勿对数据库中同步的表做变更修改。不能修改的范围包括表中的字段、表名、表结构、表空间等。随意修改这些内容会导致同步异常。
平台数据库同步功能会在两边数据库中创建多张“SYM_”开头的缓存表。这些表单用于缓存导出和导入的数据,请勿删除或修改,否则会导致同步异常。
当同步表之间存在主外键依赖关系时,这些表的配置顺序有一定要求。当配置添加同步表为引用表或包含外键时,遵循引用表后增,后改,先删;被引用表先增,先改,后删的原则进行添加修改删除。假设A表中存在外键,该外键时B表的主键,即A表引用B表。
本典配以同步冲突检查机制在主键检测的情况下,进行软件自主判断以及手动解决、忽略的解决机制进行配置及验证。
HOST1同步表的主键用NAME进行判断。
图19 配置HOST1主键
HOST2同步表的主键用name进行判断。
图20 配置HOST2主键
在前置机secrecy用户下,依次点击:“数据库同步管理”>“停止关联数据”,先确保数据库关联停止,再点击“同步表配置”>“修改同步表配置”>“选择同步表”,勾选需要修改的同步表配置,点击修改:
图21 停止关联成功
同步冲突检查检查机制选择主键检查决策,表冲突解决机制选择软件自主判断。
图22 修改同步表
图23 修改成功
同步冲突检查机制在主键检测的情况下,进行软件自主判断的情况验证见“验证配置”章节的“主键检查软件自主判断”小节
在前置机secrecy用户下,依次点击:“数据库同步管理”>“停止关联数据”,先确保数据库关联停止,再点击“同步表配置”>“修改同步表配置”>“选择同步表”,勾选需要修改的同步表配置,点击修改:
图24 停止关联成功
同步冲突检查机制选择主键检查决策,表冲突解决机制选择手动解决。
图25 修改同步表
同步冲突检查机制选择主键检查决策,表冲突解决机制选择手动解决。
图26 修改成功
同步冲突检查机制在主键检查决策的情况下,进行手动解决的情况验证见“验证配置”章节的“主键检查决策手动解决”小节
在前置机secrecy用户下,依次点击:“数据库同步管理”>“停止关联数据”,先确保数据库关联停止,再点击“同步表配置”>“修改同步表配置”>“选择同步表”,勾选需要修改的同步表配置,点击修改:
图27 停止关联成功
同步冲突检查机制选择主键检查决策,表冲突解决机制选择忽略。
图28 修改同步表
同步冲突检查机制选择主键检查决策,表冲突解决机制选择忽略。
图29 修改成功
同步冲突检查机制在主键检测的情况下,进行忽略的情况验证见“验证配置”章节的“主键检查决策忽略”小节
测试之前确保数据库服务器和平台前、后置机之间的网络是互通的,数据库同步配置没有问题。
向前置HOST1中插入多条数据后,点击运行:
图30 向前置数据库添加数据
图31 查看后置数据库数据
等待约30s后,查看后置数据库数据是否同步。与前置数据库表一致,则说明同步成功。
图32 查看后置数据库表
由上图可知,同步成功。
确认HOST1和HOST2库中的DBTAB表内容一致下进行验证。
图33 HOST1下的DBTAB表。
图34 HOST2下的DBTAB表
在HOST1下的DBTAB表中的“b”这条数据中的“11”改成“22”后,点击运行。
图35 更改数据
此时,HOST2下的DBTAB表已经存在了11这条数据,产生了冲突,由于配置中,我们对冲突解决机制选择了软件自主判断,则会根据目的端的主键为判断依据,将数据内容进行替换。
图36 同步成功
登录平台,进行日志查看。
图37 数据库同步日志
确认HOST1和HOST2库中的DBTAB表内容一致下进行验证。
在HOST1下DBTAB表中新增一条数据,name为c的数据
图38 表新增成功
在HOST2下的DBTAB表中新增一条c为444的数据,点击运行。
图39 表新增成功
如下图40,登录secrecy账户查看冲突数据解决,新增一条冲突数据。如图41点击手动输入,手动解决冲突。
图40 查看冲突数据解决
图41 冲突数据解决
图42 点击手动输入,保存。
结果验证
在HOST2下DBTAB表中数据name为c的数据,被同步修改
确认HOST1和HOST2库中的DBTAB表内容一致下进行验证。
图43 HOST1下的DBTAB表
图44 HOST2下的DBTAB表
在HOST1下的DBTAB表中新增一条冲突数据“d”这条数据后,点击运行。
图45 新增数据
如下图45,登录系统查看冲突数据解决,新增一条冲突数据。点击忽略冲突。
图46 冲突数据解决
图47 忽略冲突
此时,HOST2下的DBTAB表已经存在了d这条数据,产生了冲突,由于配置中,我们对冲突解决机制选择了忽略,则自动忽略传入的更改。
图48 忽略成功
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!