在 SAP ASE 中,主数据库上的更改未复制到备用数据库 - ASE 复制

changes on primary are not getting replicated to standby in SAP ASE - ASE replication

2 SAP ASE 服务器配置为使用 SAP RS 在具有逻辑连接的 testdb 上进行复制作为热备用。就我而言,所有线程和代表代理都 运行 正常,但 PDS.testdb 上的数据更改未复制到 RDS.testdb。 在复制服务器上:

1> admin logical_status
2> go
 Logical Connection Name
         Active Connection Name
         Active Conn State
         Standby Connection Name
         Standby Conn State
         Controller RS
         Operation in Progress
         State of Operation in Progress
         Spid
 ---------------------------------------------------------------------------
 [102] manvith6605t1.testdb
         [103] MANVITH6605T1.testdb
         Active/
         [104] APMW2K8R2641.testdb
         Active/Waiting for Enable Marker
         [16777317] SAMPLE_RS
         None
         None

1> admin who_is_down
2> go
 Spid Name            State             Info
 ---- --------------- ----------   ----------

在主节点上:删除了一些数据行。

1> select count(*) from mytable
2> go

 -----------
          24

(1 row affected)

待命:

1> select count(*) from mytable
2> go

 -----------
          64

(1 row affected)

如有任何疑问,请随时提出。

这是新的热备用设置吗?

您过去是否能够使用此热备份设置成功复制到备用数据库?

你最近有没有 运行 switch active 命令?

假设这是一个新的设置,并且 switch active 还没有 运行,我将假设这可能是将备用连接添加到设置的方式的问题.. .


如果数据库连接已成功添加并且 SRS 认为它应该正在复制,那么 admin logical_status 应该显示状态为 Active 的两个连接,但事实并非如此......备用连接显示 Active/Waiting for Enable Marker.

我猜您在添加备用连接时选择了通过 dump-n-load 操作来初始化备用数据库。如果您通过资源文件创建备用连接,您可能在资源文件中有类似 rs.rs_init_by_dump: yes 的内容;如果你从命令行 运行 rs_init 会有一个相关的问题,你可能会说 yes to.

当您告诉 rs_init 备用数据库将通过 dump-n-load 操作初始化时,标准场景如下所示:

  • 已创建备用连接
  • 备用 DSI 配置为丢弃所有传入的 t运行 操作,直到它看到 dump marker
  • admin logical_status 应显示状态为 Active/Waiting for Enable Marker
  • 的备用连接
  • 操作员在活动数据库中执行 dump database(或者 dump transaction 如果这是一个较大的数据库并且数据库转储已经转储并加载到备用数据库中)
  • dump {database|transaction} 命令在活动数据库的 t运行saction 日志
  • 中放置一个 dump marker
  • repagent 将此 dump marker 转发给 SRS
  • SRS 将 dump marker 转发给 DSI
  • DSI 在收到 dump marker 后将暂停与备用数据库的连接并开始保存传入的 t运行sactions
  • 操作员将数据库(或t运行saction log)转储文件加载到备用数据库中
  • 操作员对备用数据库发出online database命令
  • 操作员恢复到备用数据库的 DSI 连接
  • admin logical_status 应显示状态为 Active/
  • 的备用连接
  • DSI 开始对备用数据库应用 t运行 操作

注意:我不记得,如果备用连接的状态更改为 Active/ a) 在接收到 dump marker(并关闭 DSI)或 b) 在恢复备用 DSI 连接时。

您的 admin logical_status 告诉我们 DSI 仍在等待 dump marker

如果这是一个生产数据库,您可能需要执行新的数据库转储...此时备用 DSI 应该关闭...然后您需要将数据库转储加载到备用数据库中database,online表示数据库,然后恢复DSI连接到standby数据库。这是确保您的备用数据库在线时不会丢失 t运行sactions 的唯一方法(即,当前设置正在丢弃 t运行sactions)。

如果这是一个development/test环境and/or你不关心主备数据库不同步的可能性,你应该可以:

  • 将DSI挂起到备用数据库
  • 将 DSI 恢复到备用数据库
  • 验证 admin logical_status 现在显示备用数据库的 Active/ 状态,如果是这样...假设没有其他问题...
  • 活动数据库中新执行的 t运行 操作应该开始复制

注意:您之前对活动数据库执行的 DELETE 现在可能已被丢弃,因此您可能需要手动开始 运行为了让 table 同步(假设这是两个 table 的唯一区别,例如,你没有 运行自打开复制以来活动数据库中的任何 UPDATEs