Skip to content

数据库镜像常见问题

注意:镜像优先推荐同版本数据库之间做镜像


1、目的数据库日志记录错误信息 E insert into point unable to open database file

数据库master.db变成了只读属性,导致相关测点信息变更失败

2、目的数据库容量受限,导致测点无法建立

查看数据库日志,存在超限记录
W manager CreateObject: number of object reaches limitation

3、目的服务器时区不正确,数据发送失败

源服务器为正常的北京时间,而目的服务器为UTC时间,时区未配置正确。默认数据库不支持超过8小时差距的实时数据,导致数据无法发送。
解决方法:修正服务器时区,确保两侧均为北京时间。
表现:网络通,DAS用户配置正确,大数据包中存在数据发送记录,但是目的库未接收到数据。

4、replicator.xml文件格式错误

查看源端系统日志log/openPlant.log,存在记录:
M sync Replicator 0 loading error -1
检查config/replicator.xml,修正文件后重启;

5、replicator.xml文件配置信息无效

查看源端config/replicator.xml, 镜像配置被注释;
修正文件后重启源数据库;

6、镜像文件中目的数据库IP、PORT、映射对象等信息有误

检查源端config/replicator.xml,检查镜像目的IP、PORT、映射对象等配置信息,确保镜像配置正确。

7、镜像过隔离器未配置TCP/UDP通路

配置隔离器规则,增加数据库间TCP和UDP通路。

8、镜像过隔离器未配置DAS用户

过隔离器做镜像,需要在目的数据库上增加一个DAS用户,IP指向主服务器的虚拟IP。密码为空即可

9、镜像过隔离器两侧数据库版本不一致

过隔离器做镜像,两侧数据库版本不一致

10、过隔离镜像配置正确,DAS配置正确,但是抓包无数据。

源或者目的服务器,网卡设备故障。

11、目的端数据删除后,主从镜像关系被破坏

查看目的端config/trash.db,检查目的测点是否被删除;
删除trash.db,重启源数据库重新建立镜像关系;

12、数据库历史数据未同步

源端历史镜像文件历史记录不全
查看源端config/archive-xx.xx.xx.xx.db文件,archive表中记录测点历史中断信息,请检查不同步时间段是否正确;

13、数据库实时数据同步延迟

网络带宽、速率等限制导致
导入sync检查点表,查看实时/历史数据同步进度。

14、一个数据库是否可以往两个镜像库发数据

可以通过镜像实现,3.0以及4.0版本数据库均可实现;
V3.0数据库在镜像时需要配置两个端口相同的不同ip。ip后加逗号实现;
V4.0修改源端config/replicator.xml,配置多个数据库

15、数据库镜像时,计算点如何镜像

镜像配置文件XF字段决定,XF=0,保持计算点属性不变;XF=1,计算点镜像为DAS点

16、高版本往低版本数据库做镜可能无法同步数据

升级到同版本数据库或者高于4.0.18或者5.0.7版本。因为后续版本更新增加了新的字段,会导致高版本往低版本镜像不通

17、镜像文件配置正确,但镜像不通,且报错加载镜像文件error -1

2022-06-13 21:16:51 M global network service started
2022-06-13 21:17:53 M sync replica 0 sid 949099749, v5.0.9, delta time 7, wall 0
2022-06-13 21:17:53 M sync replica 1 sid 716773025, v5.0.9, delta time 7, wall 0
2022-06-13 21:19:53 M sync Replicator 0 loading error -1
2022-06-13 21:19:53 M sync replica 0 sid 949099749, v5.0.9, delta time 6, wall 0
2022-06-13 21:19:53 M sync Replicator 0 loading error -1
2022-06-13 21:19:53 M sync replica 1 sid 716773025, v5.0.9, delta time 6, wall 0
排查问题后解决方法为:
专线的MTU值问题,大包过不去,发送的数据应该是1480的,加上包头,超过了1500,客户的MTU应该是不到1480,所以三次握手后,有一部分数据丢弃,校验不成功,可以在路由器出接口强制分片,数据包分割成1200的小包,顺利通过

18、数据库服务器源和目的scheme.xml定义的点名长度不同,导致-108,建点失败

因为源数据库修改scheme.xml中测点名称长度,导致目的库无法建立测点,产生脏数据。 需要通过工具打开master.db文件,删除不符合条件的脏数据。

19、数据库服务器未关闭防火墙

服务器需要支持数据库端口如8200的tcp和udp通过防火墙,如果开启防火墙或者端口未支持通过,则无法实现数据镜像传输

20、replicator.xml文件格式错误

查看源端系统日志log/openPlant.log,存在记录:
M sync Replicator 0 loading error -1
检查config/replicator.xml,修正文件后重启;

21、replicator.xml文件配置信息无效

查看源端config/replicator.xml, 镜像配置被注释;
修正文件后重启源数据库;

22、镜像文件中目的数据库IP、PORT、映射对象等信息有误

检查源端config/replicator.xml,检查镜像目的IP、PORT、映射对象等配置信息,确保镜像配置正确。

23、镜像过隔离器未配置TCP/UDP通路

配置隔离器规则,增加数据库间TCP和UDP通路。

24、镜像过隔离器未配置DAS用户

过隔离器做镜像,需要在目的数据库上增加一个DAS用户,IP指向主服务器的虚拟IP。密码为空即可

25、镜像日志显示发送成功,但是目的测未收到数据

可能原因:
1、网络路由丢失,导致数据未发送至目的服务器,使用tarceroute检查到目的侧IP的路由情况,若路由丢失,则需重新配置路由规则。

26、镜像部分成功,部分测点/数据未成功

可以尝试如下方式,重新建立镜像关系:
1、修改源侧节点/测点信息,比如编辑一下描述,然后改回,看动态变化能不能重新镜像;
2、源库删除data目录sync-xxx.db,重启源,可以的话目的侧也可以重启。

27、镜像过隔离器数据不通检测方法

可按照步骤一步步检测:
1、基础数据镜像功能配置生效,可跳过隔离器直连检测。
2、不过隔离器,在镜像端增加DAS用户,IP指向主库。检测数据库模拟隔离环境是否通过。
3、排除所有交换机,通过隔离器工具检测隔离器功能是否能在正确配置下生效。
4、以上条件通过后,将数据库和隔离环境恢复,如果不通,检测隔离器是否限制发包大小。数据库发包大小修改为config.xml中的mirrorSize。
5、部分隔离器,需要双向ping(源ping目的,目的ping源),方可触发规则生效。
6、南瑞新版隔离器V1.8.0+,需要V4.0.24和V5.0.6+以上版本方可支持,且隔离器需调整参数:正确应答最小比例(50)%,单bit超时时间(15)秒。

28、目的端数据删除后,主从镜像关系被破坏

查看目的端config/trash.db,检查目的测点是否被删除;
删除trash.db,重启源数据库重新建立镜像关系;

29、多路镜像数据问题

背景:原镜像数据关系为:A->B,A->C,正常运行;后修改镜像关系:增加B->C镜像,同时中断A和C之间网络连接,A侧配置未变更,期望实现A->B->C。
问题:B数据无法发送到C。
原因:数据库存在重复数据去重机制,原来A同时发送数据到B和C时,两路数据已经被标记好。调整后A->B->C, 因为未去掉A侧配置的B和C镜像关系,所以系统默认C侧已经收到A发出的数据,标记的数据是不可能再从B重复发送至C侧的。

30、数据库历史数据未同步

源端历史镜像文件历史记录不全
查看源端config/archive-xx.xx.xx.xx.db文件,archive表中记录测点历史中断信息,请检查不同步时间段是否正确;

31、数据库实时数据同步延迟

网络带宽、速率等限制导致
可建立sync检查点表,查看实时/历史数据同步进度,检查同步是否完成,计算点配置如下表:
点的来源点的类型点名描述计算类型计算公式
CALCAXAR_SYNC_STEP历史同步步序1return op.ar_sync_step()
CALCAXAR_SYNC_USED历史同步耗时1return op.ar_sync_used()
CALCR8AR_SYNC_TIME历史同步时间1return op.ar_sync_time()
CALCAXAR_SYNC_QUEUE历史同步队列1return op.ar_sync_queue()
CALCAXRT_SYNC_STEP实时同步步序1return op.rt_sync_step()
CALCAXRT_SYNC_USED实时同步耗时1return op.rt_sync_used()
CALCR8RT_SYNC_TIME实时同步时间1return op.rt_sync_time()
CALCAXRT_SYNC_QUEUE实时同步队列1return op.rt_sync_queue()
CALCAXAR_SYNC_DONE_0至第一个目的数据库的镜像同步是否完成1return op.ar_sync_done(0)
CALCAXAR_SYNC_DONE_1至第二个目的数据库的镜像同步是否完成1return op.ar_sync_done(1)

32、一个数据库是否可以往两个镜像库发数据

可以通过镜像实现,3.0以及4.0版本数据库均可实现;
V3.0数据库要求两个数据库端口相同,不同ip通过ip后加逗号实现;
V4.0修改源端config/replicator.xml,配置多个数据库;

33、数据库镜像时,计算点如何镜像

镜像配置文件XF字段决定,XF=0,保持计算点属性不变;XF=1,计算点镜像为DAS点

34、跨新版隔离器,数据库镜像失败,请调整隔离器参数为:

正确应答最小比例:50%
单bit超时时间:15秒

35、目的库接收实时数据超时,单次数据量过大:

2023-10-20 11:55:11 E service admin@10.73.11.30 request 120, 49, 1332
2023-10-20 11:55:16 E service admin@10.73.11.30 request 120, 49, 2495
120:更新,49:实时数据。