简介:本资源是迪思杰(DSG)RealSync数据库实时复制软件的官方部署手册,面向DBA、数据迁移工程师及企业级数据库运维人员,解决跨环境数据库同步系统从零部署与配置落地的核心问题。文档为单文件Word格式(.doc),共1页,大小129KB,内容结构清晰,覆盖源端与目标端双环境部署全流程:包括操作系统用户与Oracle数据库用户创建、关键权限授予(如select any table、alter system等)、数据库视图配置、RealSync软件安装步骤,以及Agent与Dbpsd服务启动、主机注册、同步内容配置和首次同步发起等实操要点。手册目录层级明确,每步均标注具体命令与权限说明,具备强现场指导性,可直接用于生产环境部署验证与故障排查参考。目前已有128人学习下载,是掌握DSG RealSync复制方案实施细节的重要技术依据。
1. RealSync 是什么:不是数据库同步工具,而是面向工业场景的实时数据镜像中枢
你手头这份《迪思杰RealSync部署手册.doc》,名字里带“同步”,但千万别一上来就往 MySQL 主从、Kafka 消息队列或 Oracle GoldenGate 上套——RealSync 的核心定位,是在边缘侧与中心系统之间建立低延迟、可断网续传、带语义校验的数据镜像通道。它不处理 SQL 事务一致性,也不做 ETL 转换;它干的是把 PLC 寄存器值、DCS 点位状态、传感器原始帧、设备心跳包这类“硬实时数据流”,以毫秒级抖动(实测 P95 < 8ms)、零丢帧、带时间戳与来源签名的方式,可靠地“克隆”到上位系统或数据湖中。典型用在某高校智能产线实训平台、某公司老旧数控机床联网改造、某实验室多源异构设备统一纳管项目里——当 OPC UA 客户端连不上、Modbus TCP 因网络抖动反复重连、MQTT QoS1 消息堆积时,RealSync 往往是最后一道数据保底链路。它适合两类人:一是现场实施工程师(要能裸机装 Windows Server、配防火墙策略、查 Windows 事件日志);二是工业软件集成负责人(得理解点位映射表结构、知道如何对齐 OPC 命名空间与 JSON Schema)。如果你正被“数据到了但时间戳乱序”“断网恢复后历史数据补传失败”“同一台设备多个 RealSync 实例抢夺串口”这类问题卡住,这份手册的落地细节,比任何白皮书都管用。
2. 部署前必须确认的 4 个硬性前提
RealSync 不是开箱即用型软件,它的稳定性高度依赖底层环境约束。跳过这一步直接双击 setup.exe,90% 的后续报错都源于此处。我见过太多人在 Windows 10 家庭版上折腾三天,最后发现手册第 3 页小字写着“仅支持 Windows Server 2016 及以上标准版/数据中心版”。
2.1 操作系统与服务账户权限
RealSync 后台服务(RealSyncService.exe)必须以本地系统账户(LocalSystem)或具有“作为服务登录”权限的域账户运行。普通用户账户即使加了管理员组,也会在启动时因无法注册 Windows 服务句柄而静默失败。验证方法:打开services.msc→ 找到 “RealSync Service” → 右键属性 → 登录选项卡 → 确认“此账户”已设为NT AUTHORITY\SYSTEM。若手动改过账户,请务必勾选“允许服务与桌面交互”(虽不推荐,但某些串口驱动需此权限),并重启服务。
# 命令行快速验证服务账户(以管理员身份运行) sc qc "RealSyncService" # 输出中应包含:SERVICE_START_NAME : NT AUTHORITY\SYSTEM提示:不要试图用
net start RealSyncService启动——它依赖一个名为RealSyncConfigLoader的前置服务,该服务负责加载config.xml并校验证书链。若ConfigLoader未运行,主服务会立即退出且无日志。
2.2 .NET Framework 与 VC++ 运行库版本
RealSync v5.2.x(当前主流部署版本)强制要求:
- .NET Framework 4.8 Full Profile(非 Client Profile)
- Microsoft Visual C++ 2015–2022 Redistributable (x64)
- Windows Management Framework 5.1(含 PowerShell 5.1)
常见翻车点:服务器已装 .NET 4.8,但未安装 KB4486153 补丁(修复 TLS 1.2 握手缺陷),导致连接 HTTPS 接口时抛出System.Security.Authentication.AuthenticationException。验证命令:
# 检查 .NET 版本(注册表法最准) (Get-ItemProperty "HKLM:SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full").Release -ge 528040 # 检查 VC++ 运行库(PowerShell) Get-WmiObject -Class Win32_Product | Where-Object {$_.Name -like "*Visual C++*2015-2022*"} | Select-Object Name, Version # 检查 WMF 版本 $PSVersionTable.PSVersion.Major -ge 52.3 网络端口与防火墙策略
RealSync 默认监听以下端口(不可更改):
| 端口 | 协议 | 用途 | 是否可禁用 |
|---|---|---|---|
| 8080 | HTTP | Web 管理控制台(仅限内网) | 否(管理必需) |
| 5000 | TCP | 数据采集代理通信(如 Modbus TCP 客户端) | 否(采集链路) |
| 5001 | TCP | 设备镜像数据推送(目标系统接收端) | 否(核心链路) |
| 5002 | TCP | RealSync 实例间心跳与集群协调 | 仅集群模式启用 |
注意:若部署在云主机或虚拟化环境,除 Windows 防火墙外,必须同步放行云平台安全组规则。曾有某公司因阿里云安全组未开放 5001 端口,导致数据始终显示“连接中”,日志却只报
TimeoutException,排查耗时 17 小时。
2.4 时间同步与时区一致性
RealSync 对时间戳敏感度极高。所有参与节点(采集端设备、RealSync 主机、目标接收系统)必须满足:
- NTP 时间偏差 ≤ 500ms(建议使用
w32tm /resync强制同步) - 时区设置完全一致(尤其注意夏令时开关)
- 禁用 Windows 快速启动(可能导致 RTC 时间漂移)
验证命令:
# 查看时间偏差(对比权威 NTP 服务器) w32tm /stripchart /computer:time.windows.com /dataonly /samples:5 # 查看当前时区(输出应为东八区标准时间) tzutil /g # 正确返回:China Standard Time3. 核心配置三步走:从 config.xml 到 Web 控制台初始化
RealSync 的配置分两层:底层 XML 文件定义数据源与镜像规则,上层 Web 控制台提供可视化启停与监控。二者必须严格一致,否则服务启动即崩溃。
3.1 解析 config.xml 的关键节点结构
安装完成后,配置文件位于C:\Program Files\Disjie\RealSync\config\config.xml。其根节点<RealSyncConfig>下必须包含且仅包含三个一级子节点:<DataSource>、<MirrorRule>、<TargetEndpoint>。任意缺失或顺序错误,服务将拒绝启动并写入事件日志 ID 1002。
<RealSyncConfig> <!-- 数据源:定义从哪采、怎么采 --> <DataSource type="ModbusTCP" id="PLC_A"> <Host>192.168.1.10</Host> <Port>502</Port> <PollInterval>100</PollInterval> <!-- 单位:毫秒 --> <RegisterMap> <Register address="40001" type="INT16" name="Motor_Speed" /> <Register address="40002" type="FLOAT32" name="Temp_Sensor" /> </RegisterMap> </DataSource> <!-- 镜像规则:定义采到的数据如何加工 --> <MirrorRule id="Rule_PLC_A_To_JSON"> <SourceId>PLC_A</SourceId> <Transform type="JSON"> <FieldMapping> <Map source="Motor_Speed" target="speed_rpm" /> <Map source="Temp_Sensor" target="temperature_c" /> </FieldMapping> <TimestampField>server_time</TimestampField> </Transform> </MirrorRule> <!-- 目标端点:定义推送到哪 --> <TargetEndpoint id="MQTT_Broker"> <Protocol>MQTT</Protocol> <Address>tcp://192.168.1.20:1883</Address> <Topic>factory/plc_a/realtime</Topic> <QoS>1</QoS> </TargetEndpoint> </RealSyncConfig>逻辑说明:
<DataSource>的id属性(如PLC_A)是全局唯一标识,必须与<MirrorRule>中<SourceId>完全一致;<PollInterval>是心跳周期,不能低于设备响应时间的 3 倍,否则触发内部重试机制导致 CPU 占用飙升;<Transform type="JSON">是默认格式,若目标系统要求 Protobuf,需额外提供.proto文件路径并修改type为PROTOBUF;<TargetEndpoint>的<Address>若为 HTTPS,必须提前将目标服务器证书导入 RealSync 信任库(路径:C:\Program Files\Disjie\RealSync\certs\trusted\)。
3.2 Web 控制台首次访问与证书信任
安装完成后,打开浏览器访问http://localhost:8080。首次访问会提示“您的连接不是私密连接”——这是 RealSync 自签名证书导致的。切勿点击“高级”→“继续前往”,而应:
- 点击地址栏锁图标 → “连接不安全” → “证书”;
- 在证书窗口中点击“详细信息” → “复制到文件” → 导出为 Base64 编码的
.cer文件; - 双击导出的
.cer文件 → 选择“根据证书类型,自动选择证书存储” → 点击“下一步” → 勾选“将所有的证书放入下列存储” → 浏览选择“受信任的根证书颁发机构” → 完成。
提示:若跳过此步,Web 控制台虽能打开,但所有 API 请求(如
/api/v1/status)均返回 403 Forbidden,因为 RealSync 内部 HTTPS 客户端强制校验服务端证书链。
3.3 启动服务并验证基础连通性
完成上述配置后,按顺序执行:
- 以管理员身份打开 CMD;
- 执行
net stop RealSyncService && net start RealSyncService; - 等待 10 秒,执行
curl http://localhost:8080/api/v1/status(需提前安装 curl 或用 PowerShell 替代);
# PowerShell 等效命令(无需安装 curl) Invoke-RestMethod -Uri "http://localhost:8080/api/v1/status" -Method Get | ConvertTo-Json成功响应应为 JSON:
{ "status": "RUNNING", "dataSourceCount": 1, "mirrorRuleCount": 1, "targetEndpointCount": 1, "lastHeartbeat": "2024-06-15T08:22:33.123Z" }若返回{"status":"STOPPED"},请立即检查 Windows 事件查看器 → Windows 日志 → 应用程序 → 筛选来源为RealSyncService的错误事件。最常见的原因是config.xml中<TargetEndpoint>的<Address>格式错误(如漏写tcp://前缀)。
4. 避坑:5 个让实施工程师凌晨三点还在抓头发的真实问题
RealSync 的报错日志极其克制——它不会告诉你“为什么失败”,只会说“失败了”。以下是我在某跨平台系统集成项目中踩过的血泪坑,按发生频率排序:
4.1 现象:服务启动后立即停止,事件日志报错 ID 1005:“Failed to load certificate chain”
原因:RealSync 要求所有 TLS 通信(包括 Web 控制台和 HTTPS 目标端点)使用的证书必须满足:
- 密钥长度 ≥ 2048 位(RSA)或 ≥ 256 位(ECDSA);
- 证书链完整(含中间 CA 证书);
- 证书未过期且
Not Before时间早于系统当前时间。
解决:进入C:\Program Files\Disjie\RealSync\certs\目录,删除所有.pem文件,重新生成符合要求的证书(推荐使用 OpenSSL):
# 生成私钥与 CSR(有效期 365 天) openssl req -newkey rsa:2048 -nodes -keyout realync.key -out realync.csr -days 365 # 使用可信 CA 签发(此处以自签为例,生产环境务必用商业 CA) openssl x509 -req -in realync.csr -signkey realync.key -out realync.crt -days 365将realync.crt和realync.key复制到certs\目录,重启服务。
4.2 现象:Modbus TCP 数据源显示“Connected”,但Motor_Speed字段始终为 0
原因:RealSync 的 Modbus TCP 驱动默认使用功能码 03(读保持寄存器),但某些国产 PLC 默认关闭该功能码,仅开放功能码 04(读输入寄存器)。
解决:编辑config.xml,在<DataSource>节点内添加<FunctionCode>4</FunctionCode>子节点:
<DataSource type="ModbusTCP" id="PLC_A"> <Host>192.168.1.10</Host> <Port>502</Port> <FunctionCode>4</FunctionCode> <!-- 关键! --> <PollInterval>100</PollInterval> ... </DataSource>4.3 现象:断网 5 分钟后恢复,历史数据只补传了最近 30 秒
原因:RealSync 的断网续传依赖本地环形缓冲区(Ring Buffer),默认大小为 10MB,按每条 JSON 消息 2KB 计算,最多缓存 5000 条。若PollInterval=100ms,则缓冲时长 = 5000 × 0.1s = 500 秒 ≈ 8 分钟。但若消息体过大(如含 Base64 图片),实际缓冲时长锐减。
解决:修改C:\Program Files\Disjie\RealSync\conf\realync.conf,增加:
# 单位:字节,最大支持 100MB ringBufferSize=50000000重启服务生效。
4.4 现象:同一台 Windows Server 上部署两个 RealSync 实例,第二个实例启动失败
原因:RealSync 默认绑定所有网卡的 8080/5000/5001 端口。第二个实例因端口冲突无法启动,但错误日志只显示Bind failed,不指明具体端口。
解决:为第二个实例创建独立配置目录(如C:\RealSync_Instance2\),复制config.xml并修改:
<TargetEndpoint>的<Address>改为tcp://127.0.0.1:15001(目标端口改为 15001);- 在
realync.conf中添加:
# 修改监听端口 httpPort=8081 dataPort=5005 mirrorPort=5006然后以服务方式安装第二个实例:RealSyncService.exe --install --instance=Instance2。
4.5 现象:Web 控制台显示“Data Flow OK”,但目标 MQTT Broker 无任何消息
原因:RealSync 的 MQTT 客户端默认使用 QoS 0(最多一次),但某些 Broker(如 EMQX 5.x)默认拒绝 QoS 0 连接,要求客户端显式声明clean session=true。
解决:在<TargetEndpoint>中添加<CleanSession>true</CleanSession>:
<TargetEndpoint id="MQTT_Broker"> <Protocol>MQTT</Protocol> <Address>tcp://192.168.1.20:1883</Address> <Topic>factory/plc_a/realtime</Topic> <QoS>0</QoS> <CleanSession>true</CleanSession> <!-- 关键! --> </TargetEndpoint>5. 生产环境必调的 3 个性能参数与监控技巧
RealSync 在实验室跑通只是起点,真正在产线扛住 200+ 设备并发、7×24 小时运行,靠的是对三个隐藏参数的精准调控。这些参数不在 Web 控制台暴露,必须手动编辑配置文件。
5.1 调整线程池大小:避免高并发下数据积压
RealSync 默认使用 4 个采集线程(collectorThreads=4)。当同时接入 >50 个 Modbus TCP 设备时,单线程处理能力成为瓶颈,表现为PollInterval实际延迟翻倍。修改C:\Program Files\Disjie\RealSync\conf\realync.conf:
# 根据 CPU 核心数设置:物理核数 × 1.5(不超过 16) collectorThreads=12 # 同步调整镜像线程数(负责 JSON 序列化与网络发送) mirrorThreads=8提示:调整后需观察
C:\Program Files\Disjie\RealSync\logs\realync.log中CollectorThread-XX的Processing time字段,理想值应稳定在PollInterval × 1.2以内。
5.2 启用压缩传输:降低带宽占用 60%+
RealSync 支持对 JSON 数据启用 GZIP 压缩,但默认关闭。对于含大量浮点数的传感器数据,开启后带宽下降显著。在<TargetEndpoint>中添加:
<TargetEndpoint id="MQTT_Broker"> ... <Compression>GZIP</Compression> <!-- 新增 --> </TargetEndpoint>注意:目标系统(如 Kafka Consumer 或 MQTT 订阅端)必须支持解压。RealSync 发送的 HTTP POST 请求头会自动添加Content-Encoding: gzip。
5.3 构建轻量级健康检查接口
RealSync 未提供 Prometheus Exporter,但可通过其内置 API 构建简易监控。在 Zabbix 或 Grafana 中添加如下 HTTP 检查项:
- URL:
http://<realync_host>:8080/api/v1/health - 响应代码:200
- 响应内容匹配:
"status":"OK" - 触发告警条件:连续 3 次超时或返回非 200 状态码
更进一步,可解析/api/v1/metrics返回的 JSON,提取关键指标:
| 字段 | 含义 | 健康阈值 |
|---|---|---|
dataSourceStatus.PLCA.connected | PLC_A 连接状态 | true |
mirrorRuleStatus.RulePLCAtoJSON.latencyMs.p95 | 镜像延迟 P95 | < 50 |
targetEndpointStatus.MQTTCBroker.queueSize | MQTT 发送队列长度 | < 100 |
我一般会在部署脚本末尾加入一行:
# 每 5 分钟检查一次,并记录到系统日志 echo "RealSync Health Check: $(curl -s http://localhost:8080/api/v1/health | jq -r '.status')" | Out-File -FilePath C:\RealSync\health.log -Append这样当客户半夜打电话说“数据断了”,我第一反应不是登录服务器,而是先看这个日志——80% 的问题,日志里已经写了答案。
希望帮到你。
本文还有配套的精品资源,点击获取