复制数据库还能充当主数据库吗?

2020-08-26 09:41发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

目标:将服务器A上的Murex数据库A复制到服务器B上的DB B,然后再从服务器B上的DB B复制到服务器C上的DBC。

在我成功定义了DB A(主数据库)与DB B(复制数据库)之间的连接之后,当我这次尝试建立另一个连接时,将DB B定义为主数据库,将DB C定义为复制数据库,它失败,说"

警告:"数据库'SYBDEV99.tradedb'中具有预订。不能删除连接。"

首先将DB A到DB B的复制设置为MSA。 DB B和DB C相同。然后为DB A中的特定表创建repdef,并为DB B创建该repdef的相应预订。我怀疑这是repserver在抱怨吗?

如何解决这个问题?

谢谢。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


嗨,

目标:将服务器A上的Murex数据库A复制到服务器B上的DB B,然后再从服务器B上的DB B复制到服务器C上的DBC。

在我成功定义了DB A(主数据库)与DB B(复制数据库)之间的连接之后,当我这次尝试建立另一个连接时,将DB B定义为主数据库,将DB C定义为复制数据库,它失败,说"

警告:"数据库'SYBDEV99.tradedb'中具有预订。不能删除连接。"

首先将DB A到DB B的复制设置为MSA。 DB B和DB C相同。然后为DB A中的特定表创建repdef,并为DB B创建该repdef的相应预订。我怀疑这是repserver在抱怨吗?

如何解决这个问题?

谢谢。

付费偷看设置
发送
3条回答
DafaDDDa
1楼-- · 2020-08-26 10:01

嗨,

感谢您的回复。 这里有一些进一步的说明:

我首先使用rs_init(交互地)设置repserver,然后使用rs_init将服务器A上的数据库DB A作为主要数据库添加,并将服务器B(SYDDEV99)上的数据库B B(tradedb)添加为复制数据库。 运行正常。 然后,我再次调用rs_init并选择" 2向复制系统添加数据库",这次将服务器B上的DB B指定为主要数据库,目的是将更改进一步复制到另一个数据库DBC。 问题是说DB B已经有订阅并且不能删除连接(我不希望它被删除。我只想从DB B到SRS的另一个连接,然后到DB C的最终复制。)。

这些都是ASE 16服务器,我正在使用Repserver 15.7。 顺便说一句,当我第一次设置复制系统时,我在服务器A上的数据库A和服务器B上的数据库B之间定义了MSA。然后,我在数据库A中的一个特定表上创建了一个表repdef,并为repdef订阅了 可以复制到数据库B。这很好。

您在答复中提到的rs_init声明数据库既是主数据库又是复制数据库时,将自动添加"启用日志传输"。 我没有看到在rs_init中进行说明的选项。 我从菜单中看到的唯一选项是:"是否将复制数据库?" 在我们为要添加的数据库输入信息的部分下。 如果找不到该部分,可以手动发出命令,如果可以,请详细说明如何创建"单个连接"吗?

此外,请允许我提供一些背景信息,说明我们为何尝试以这种方式进行操作。 我们有一个Murex交易数据库,该数据库目前已全面生产,并满足澳大利亚和新西兰客户(其中包括其他国家)的需求。 我们被告知,一项新法规即将出台,OZ和NZ将不得不分拆公司,并且每个公司都必须在自己的服务器上运行自己的系统。 不仅如此,在"分离"之后,不允许NZ查看任何非NZ的客户数据。 我们正在考虑的一种选择是将NZ DB创建为当前系统的相同副本(位于OZ中),并通过SRS使这两个数据库保持同步,直到" D-Day"断开连接为止。 但是,由于我们要将所有数据复制到NZ,因此我们需要一种从复制中过滤掉非NZ客户数据的方法。 我们正在考虑使用触发器来掩盖非NZ数据所在的某些表中的某些列。 但是,Murex对这种方法不满意,因为它可能会对性能产生影响。 为了解决他们的反对意见,我们认为我们将直接从原始Murex数据库复制到中间副本,在那儿应用我们的触发器,然后将生成的"被屏蔽"数据复制到NZ。

如果您可以提出比这更好的方法,我们将非常高兴听到它。

Haoba3210
2楼-- · 2020-08-26 10:04

可以使用更多详细信息/说明...

" SYBEDEV99.tradedb"是否与" DB B"相同,还是" DB C"?

您提到* 创建 *连接,但错误消息听起来像 您试图* 删除 *连接...您正在运行的确切命令是什么生成消息?

您的数据库是什么RDBMS? ASE? 甲骨文?

如果您的RDBMS是ASE,是使用 rs_init (操作系统二进制)还是使用' create connection '命令创建连接?

----------------

假定您要将事务复制到" DB B",然后使用一个repagent(针对 " DB B")提取这些事务并将其发送到" DB C"...。

-一般来说,您要配置与" DB B"的*单个* SRS连接并定义" DB" B'作为主数据库和复制数据库

-默认情况下,所有连接都将创建为复制数据库(即SRS在数据库中创建DSI)

- 使用" with log transfer on"子句(" create connection"命令的一部分),则关联的数据库也将成为主数据库(即SRS将设置其他队列/线程来处理入站事务)[注意: rs_init 将自动为您执行此操作]

me_for_i
3楼-- · 2020-08-26 10:01

对不起,没有 可以在一段时间内建立SRS连接,并且不在手册中,但是可以," 是否可以复制数据库?"是您选择的将数据库指定为主数据库的选项。 最初为DB B设置复制时,还应该将其指定为主数据库(即'是否要复制数据库?'=是/是)。

为了将DB B的当前连接转换为双重用途的连接(即,从复制数据库转到主数据库/复制数据库),请查看" 更改连接"命令和" 将日志传输设置为on '子句。 [显然(?)在测试环境中测试转换。]

---------------------

对于有关选择性复制数据(从OZ到NZ)的问题,您是在谈论屏蔽/过滤整个行或屏蔽某些行中的特定列吗?

  • 如果是前者,我想知道表级订阅(带有'where'子句)是否可以工作?
  • 如果是后者,并且逻辑不太复杂,您也许可以 使用自定义函数字符串来屏蔽数据/列(尽管可以肯定的是,如果a)您不熟悉函数字符串和/或b)应用屏蔽的逻辑并非完全"简单")

对于其他想法...如果不更详细地说明数据结构,过滤/屏蔽数据的规则,受影响的数据量以及数据量,很难说。

从"易于设置/管理"的角度来看,我认为您可以从当前的MSA设置复制到NZ数据库(即, 有2个目标/复制数据库); 那么您可以在NZ数据库中设置触发器。 是的,触发器仍然会遇到一些性能问题,但可能不像跨洋复制的性能问题那么糟糕。 当然,您会遇到有关在新西兰设置SRS实例(即OZ和NZ之间的SRS路由)以帮助减少国家之间的数据流量的问题; 再说一次,如果跨海洋复制太慢(并且永远无法赶上),您将回到OZ中进行某种数据过滤操作(作为减少跨海洋数据量的必要步骤)。

一周热门 更多>