2020-08-24 14:30发布
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我在调和两个对立面时遇到问题-不停止主数据库上的活动,并创建应加载到不同(跨)平台的备份。 跨平台迁移要求必须转储的数据库必须处于事务静态状态,但是Sybase文档ASE至ASE复制快速入门指南在方案3的"实现和重新同步"一章中说:"假定 数据库转储正在进行时,无法在主数据库上停止活动。"
那么,在这种情况下该怎么办?
你好
以下是一个主意:
示例:
需要将ASE Linux迁移到ASE AIX。
首先设置从ASE Linux到ASE AIX的MSA复制,使用转储标记进行订阅。
在运行转储数据库之前,复制不会开始。
设置第二个ASE Linux,我们将在其中执行XPDL命令。
现在在您的生产ASE Linux上转储数据库,转储标记将提供给RS,并且此转储未捕获的所有更改都将移入入站/出站队列。 由于DSI处于关闭状态,因此无法复制任何内容。
现在,将此转储加载到第二个ASE Linux中,并执行XPDL命令(如手册中所述)。 完成此操作后,转储该数据库并将其加载到ASE AIX中并使其联机。
最后再次恢复您的DSI连接。
缺点是RS中的出站队列需要更多空间来保留所有事务,并且可能需要一些时间才能使系统同步。
您应该使用一个小型数据库对此进行测试,以使您熟悉该过程。
希望这会有所帮助。
最诚挚的问候,
Stefan
我知道问这个问题已经有好几年了,但是我们的情况与原始海报相似。 海报与 我们,是我们可以承担一些停机时间来进行转储吗? 我发现Stefan的回答确实很好,基本上可以为您提供无停机的选择。但是,如果停机是 一个选项? 假设至少有足够长的停机时间,以便在系统停止运行时转储所有DB。
我们是否仍应在跨平台转储中使用转储标记并直接在实际主数据库上加载?
我已经阅读到转储标记可能不适用于跨平台转储和加载,因为数据库必须在执行转储之前处于单用户模式下才能刷新统计信息,而在这样做的同时,我们需要 在主数据库上停止rep代理以将数据库置于单用户模式。 但是到那时,在将数据库置于刷新状态和转储的单用户模式之前,已经定义了带有转储标记的订阅,等待转储标记。 所以我的问题是,这是一个选择吗?
还是更好,因为我们有停机时间,只是创建预订而不实现,保持与复制品的DSI连接暂停,在系统停顿时(单用户和flushstats)执行转储吗?
基本上,在完成所有转储后,系统可以重新联机,并且所有事务都将在复制DSI连接的出站队列中等待。 在这段时间内,我们将数据库加载到复制数据库上,执行XPDL加载后需要做的事情,并在准备好时恢复DSI连接。
那会是更好的选择吗? 两种选择都有可能吗?
谢谢!
嗨Vojislav,
这确实很有趣。 过去,我是在MSA环境中做到这一点的,一切都在Windows上,我们在Linux上添加了具有ASE的节点,并且使用转储标记对数据库进行了同步。 所有版本肯定在ASE 15.0.3的15年初,RS可能是15.0。 我们是在用户工作时做的,但是活动并不繁琐。
在实践中,关于跨平台的转储/加载,我已经看到很多次该过程在不停止数据库的情况下进行了,但是有时却没有。 如果转储正在运行时没有事务活动,则Ant可以确保它正在工作。 我也认为字节顺序在这里起着作用。
我还将在此再次查看手册。
Kimon Moschandreou
使用转储和加载放弃。
逐表设置复制。
这是一个古老的问题,但是由于Luc最近问过这个问题,这是我的帮助:
看看:
help.sap.com ->管理指南第2卷->复制系统恢复->复制数据库重新同步 Adaptive Server->数据库重新同步方案->直接从主数据库重新同步一个或多个复制数据库-> 直接从主数据库直接重新同步 e
帮助页面并没有真正说出来,但是重新同步的整个过程是允许在进行重新同步操作时对主数据库进行更新。
基本上,rep_agent通过复制系统发送重新同步转储标记
在RS 15 SP306中,有一种新的订阅方式,称为直接加载。
无需停机。
因此,为表创建普通的复制定义,并为下面的预订直接加载选项
REPDEF
create 复制定义S_36_dbo_DBA_TIME_rd
,主目录为PHI2_DEV.SPIN_DV3
,所有表均名为dbo。'DBA_TIME' ( " THEID" bigint, " THETIME" bigdatetime )
可搜索列(" THEID")
复制最少的列
go
REPSUB
为S_36_dbo_DBA_TIME_rd
创建订阅T_07_dbo_DBA_TIME_sub
,并在PHI2_DEV_8K上进行复制。 Direct_load
用户sa
密码'XXXXX'
订阅截断表
这将创建一个
有一个选项可以启动多个连接/线程以并行拉入,但是我发现单线程可以避免在目标端锁定竞争。
HTH
Avinash
当您想跨平台迁移MSA环境并执行转储和加载而无需迁移时,我可能有一个解决方案 使用转储标记或重新同步标记,并且在主服务器上没有任何停机时间。
但是要使此解决方案有效,您的环境应该已经有一个复制服务器。并且必须确保此复制服务器上的数据库副本与主数据服务器完全相同。
因此您拥有PDS1 ----> PRS -----> RDS1
您要向此设置添加新的备用PDS2,但是此新服务器是具有不同字节序的其他平台。 该服务器最终将成为新的主服务器。
1。)创建与PDS2的连接。
2。)在要迁移到PDS2的数据库的PDS1上停止Rep Agent
3。)创建从PDS1到PDS2的数据库预订,而没有实现。 订阅应立即生效。
4。)在PRS中暂停PDS1中的分发服务器
5。)在PDS1上重新启动Rep Agent。 此时,由于分发服务器已暂停,所有交易都将堆积在PRS的入站队列中。
6。)挂起与PDS2的连接
***在进行下面提到的转储之前,请确保已清除RDS1的队列。这很重要,因为我们不想错过任何与转储有关的事务。
7。)从RDS1进行转储。 在这里,您需要执行单用户操作和flushstats,因为这将是跨平台的转储和加载,但这不是问题,因为它是备用数据库。 除了该框上的复制外,应该没有其他活动。
8。)转储完成后,您可以从PDS1恢复分发服务器,RDS1将开始接收事务,并且由于连接被挂起,它将进入PDS2的出站队列。
9。)取出转储并将其加载到PDS2上。
10。)加载后,请执行sp_post_xpload或XPDL之后需要执行的操作。
11。)如果要将此服务器复制回PDS1,请配置MSA/repdef/subscription。
12。)恢复与PDS2的连接,并等待队列刷新。 现在,您的数据库在所有3台服务器上都应该相同,并且PDS2将从PDS1复制。
最多设置5个标签!
你好
以下是一个主意:
示例:
需要将ASE Linux迁移到ASE AIX。
首先设置从ASE Linux到ASE AIX的MSA复制,使用转储标记进行订阅。
在运行转储数据库之前,复制不会开始。
设置第二个ASE Linux,我们将在其中执行XPDL命令。
现在在您的生产ASE Linux上转储数据库,转储标记将提供给RS,并且此转储未捕获的所有更改都将移入入站/出站队列。 由于DSI处于关闭状态,因此无法复制任何内容。
现在,将此转储加载到第二个ASE Linux中,并执行XPDL命令(如手册中所述)。 完成此操作后,转储该数据库并将其加载到ASE AIX中并使其联机。
最后再次恢复您的DSI连接。
缺点是RS中的出站队列需要更多空间来保留所有事务,并且可能需要一些时间才能使系统同步。
您应该使用一个小型数据库对此进行测试,以使您熟悉该过程。
希望这会有所帮助。
最诚挚的问候,
Stefan
我知道问这个问题已经有好几年了,但是我们的情况与原始海报相似。
海报与 我们,是我们可以承担一些停机时间来进行转储吗?
我发现Stefan的回答确实很好,基本上可以为您提供无停机的选择。但是,如果停机是 一个选项? 假设至少有足够长的停机时间,以便在系统停止运行时转储所有DB。
我们是否仍应在跨平台转储中使用转储标记并直接在实际主数据库上加载?
我已经阅读到转储标记可能不适用于跨平台转储和加载,因为数据库必须在执行转储之前处于单用户模式下才能刷新统计信息,而在这样做的同时,我们需要 在主数据库上停止rep代理以将数据库置于单用户模式。 但是到那时,在将数据库置于刷新状态和转储的单用户模式之前,已经定义了带有转储标记的订阅,等待转储标记。 所以我的问题是,这是一个选择吗?
还是更好,因为我们有停机时间,只是创建预订而不实现,保持与复制品的DSI连接暂停,在系统停顿时(单用户和flushstats)执行转储吗?
基本上,在完成所有转储后,系统可以重新联机,并且所有事务都将在复制DSI连接的出站队列中等待。 在这段时间内,我们将数据库加载到复制数据库上,执行XPDL加载后需要做的事情,并在准备好时恢复DSI连接。
那会是更好的选择吗? 两种选择都有可能吗?
谢谢!
嗨Vojislav,
这确实很有趣。 过去,我是在MSA环境中做到这一点的,一切都在Windows上,我们在Linux上添加了具有ASE的节点,并且使用转储标记对数据库进行了同步。 所有版本肯定在ASE 15.0.3的15年初,RS可能是15.0。 我们是在用户工作时做的,但是活动并不繁琐。
在实践中,关于跨平台的转储/加载,我已经看到很多次该过程在不停止数据库的情况下进行了,但是有时却没有。 如果转储正在运行时没有事务活动,则Ant可以确保它正在工作。 我也认为字节顺序在这里起着作用。
我还将在此再次查看手册。
最诚挚的问候,
Kimon Moschandreou
使用转储和加载放弃。
逐表设置复制。
这是一个古老的问题,但是由于Luc最近问过这个问题,这是我的帮助:
看看:
help.sap.com ->管理指南第2卷->复制系统恢复->复制数据库重新同步 Adaptive Server->数据库重新同步方案->直接从主数据库重新同步一个或多个复制数据库-> 直接从主数据库直接重新同步 e
帮助页面并没有真正说出来,但是重新同步的整个过程是允许在进行重新同步操作时对主数据库进行更新。
基本上,rep_agent通过复制系统发送重新同步转储标记
在RS 15 SP306中,有一种新的订阅方式,称为直接加载。
无需停机。
因此,为表创建普通的复制定义,并为下面的预订直接加载选项
REPDEF
create 复制定义S_36_dbo_DBA_TIME_rd
,主目录为PHI2_DEV.SPIN_DV3
,所有表均名为dbo。'DBA_TIME' ( " THEID" bigint, " THETIME" bigdatetime )
可搜索列(" THEID")
复制最少的列
go
REPSUB
为S_36_dbo_DBA_TIME_rd
创建订阅T_07_dbo_DBA_TIME_sub
,并在PHI2_DEV_8K上进行复制。 Direct_load
用户sa
密码'XXXXX'
订阅截断表
go
这将创建一个
有一个选项可以启动多个连接/线程以并行拉入,但是我发现单线程可以避免在目标端锁定竞争。
HTH
Avinash
当您想跨平台迁移MSA环境并执行转储和加载而无需迁移时,我可能有一个解决方案 使用转储标记或重新同步标记,并且在主服务器上没有任何停机时间。
但是要使此解决方案有效,您的环境应该已经有一个复制服务器。
并且必须确保此复制服务器上的数据库副本与主数据服务器完全相同。
因此您拥有PDS1 ----> PRS -----> RDS1
您要向此设置添加新的备用PDS2,但是此新服务器是具有不同字节序的其他平台。 该服务器最终将成为新的主服务器。
1。)创建与PDS2的连接。
2。)在要迁移到PDS2的数据库的PDS1上停止Rep Agent
3。)创建从PDS1到PDS2的数据库预订,而没有实现。 订阅应立即生效。
4。)在PRS中暂停PDS1中的分发服务器
5。)在PDS1上重新启动Rep Agent。 此时,由于分发服务器已暂停,所有交易都将堆积在PRS的入站队列中。
6。)挂起与PDS2的连接
***在进行下面提到的转储之前,请确保已清除RDS1的队列。
这很重要,因为我们不想错过任何与转储有关的事务。
7。)从RDS1进行转储。 在这里,您需要执行单用户操作和flushstats,因为这将是跨平台的转储和加载,但这不是问题,因为它是备用数据库。 除了该框上的复制外,应该没有其他活动。
8。)转储完成后,您可以从PDS1恢复分发服务器,RDS1将开始接收事务,并且由于连接被挂起,它将进入PDS2的出站队列。
9。)取出转储并将其加载到PDS2上。
10。)加载后,请执行sp_post_xpload或XPDL之后需要执行的操作。
11。)如果要将此服务器复制回PDS1,请配置MSA/repdef/subscription。
12。)恢复与PDS2的连接,并等待队列刷新。 现在,您的数据库在所有3台服务器上都应该相同,并且PDS2将从PDS1复制。
一周热门 更多>