主服务器上的更改不会复制到 SAP ASE 中的备用服务器 - ASE 复制

问题描述

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

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 到一个相关的问题。

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

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

注意:我一时想不起来,如果备用连接的状态在收到 Active/ a) {1}}(并关闭 DSI)或 b) 在恢复备用 DSI 连接时。

您的 dump marker 向我们表明 DSI 仍在等待 admin logical_status

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

如果这是一个开发/测试环境和/或您不关心活动和备用数据库不同步的可能性,您应该能够:

  • 将 DSI 挂起到备用数据库中
  • 将 DSI 恢复到备用数据库中
  • verify dump marker 现在显示备用数据库的状态为 admin logical_status,如果是这样......并假设没有其他问题......
  • 活动数据库中新执行的事务应开始复制

注意:您之前对活动数据库执行的 Active/ 现在可能已被丢弃,因此您可能希望首先手动运行相同的 DELETE备用以使表同步(假设这是两个表中唯一的区别,例如,自开启复制以来,您没有在活动数据库中运行任何 DELETE)。