代码之家  ›  专栏  ›  技术社区  ›  M.M

Informix 10复制队列未移动

  •  0
  • M.M  · 技术社区  · 4 年前

    我使用的是Informix IDS 10.00。Solaris 10上的UC6,两台计算机具有相同的数据库架构,所有表都使用企业复制在两个方向上复制,因此理论上两个数据库应该具有相同的内容。

    但是,出现了一个问题,即复制的一个方向(主机a到主机B)继续正常工作,而另一个方向(主机B到主机a)不工作。症状是:

    • 对主机B上的表所做的更改不会传播到主机a(通过更改主机B上的行并检查主机a上的表来确定)
    • cdr list serv 显示 Active Connected (两个方向),但在主机B上有一个数百万字节的队列。
    • cdr list repl 显示了几个复制的非零队列。
    • cdr stats recvq 主机A上没有显示最近从主机B收到的任何信息。
    • cdr stats rqm 显示假脱机中的数据 trg_send_stxn 带着旗帜 SEND_Q, SPOOLED, PROGRESS_TABLE, NEED_ACK, SENDQ_MASK, SREP_TABLE .
    • 中没有错误或相关消息 online.log cdr_mon.log ,或任何我能想到的地方。
    • 一些表“不同步”,因为行中有冲突的数据或丢失;这是由于与过去一台主机脱机时出现的错误有关的各种原因造成的。但是,即使对主机B上具有正确数据的表所做的更改也不会传播到主机A。
      • 我做了一个 cdr cleanstart 昨天在主机B上,这个问题在两个方向都发生了,这至少使A->B方向开始工作(与我预期的相反),此时主机B上的队列为0。在该清理启动之后,对表(具有正确数据)的一些更改将传播到主机A,而对B上其他表的一些更改则不会。但今天,没有表从B传播到A。
      • cleanstart 我通过实验发现,有时删除一个单独的复制会减少被卡住队列的大小,但队列仍然被卡住;有时,删除复制会使队列移动一段时间,然后再次被卡住。
    • 还有一个DR主机,a和B都对其进行单向传播,并且在没有队列备份的情况下正确传播。

    我现在无法尝试并诊断为什么复制队列中的数据没有移动。如果出现同步错误(即,由于主机数据不同,复制的更改无法应用),我希望登录消息 在线 的日志 更新被拒绝,信息保存到 $INFORMIXDIR/ats_dr 诸如此类——这是最近发生的事情。似乎队列中一定有什么东西被拒绝了,但没有被清除和记录,从而阻塞了队列。主机A的实时通信量很高,而且(谢天谢地)正在正确地复制到主机B,但反之亦然。

    任何关于更多尝试的想法或诊断问题的方法都是非常受欢迎的。

    编辑-可能与相关,也可能与不相关 Retrieving or deleting a row with a blob in Informix 10 主机B上的后台处理程序发送后台处理程序似乎已损坏。

    0 回复  |  直到 4 年前
        1
  •  2
  •   Srinivasan R Mottupalli    4 年前

    如果您的环境中最近有任何复制定义更改,我将从以下内容中寻找任何线索。正如乔纳森提到的,IDS 10.0。xC6非常古老,在最新的版本中,ER增加了很多功能,这使得它更健壮,更能适应故障

    • 仅在复制中接收宿主B
    • ATS/RIS文件
        2
  •  1
  •   user17577941    4 年前

    cdr错误是什么?一个节目(在每台服务器上运行)?

    (以防万一你没有它……一个指向10版ER手册的链接: http://publibfp.dhe.ibm.com/epubs/pdf/25122792.pdf )

    哦,所有服务器都是“时间同步”(ntp)的吗?

    林俊杰

        3
  •  1
  •   alius    4 年前

    关于ATS/RIS文件,我们是否可以假设所有复制都打开了这些选项,并且在过去已经起到了作用?

    onstat和onstat统计数据是如何变化的?

    “onstat-g nif”在B上表示什么?可能是变速器堵塞了?

    我们是否可以假设,自从问题开始以来,双方都至少重新启动了一次,这样任何内部线程混乱都会得到解决,并且ER在任何一方都至少重新初始化了一次?

    从B到A,是否存在阻碍复制的巨大事务(例如,通过填充A的接收队列)?队列sbspaces(或队列头dbspaces)中是否存在任何空间问题?

    我想B上的cleanstart可以解决这个问题,但当然,必须重新同步所有复制的表(因为您已经在a上执行了cleanstart,这是必需的)。

    安德烈亚斯

    推荐文章