问题描述
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
)。