在MSA双向复制环境中迁移ASE服务器。

2020-08-24 17:07发布

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

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


好的,距离我玩复制已经很久了,那时的环境不一样。

因此,我们目前在MSA双向复制环境中拥有ASE服务器。
复制大约8个DB,包括主数据库。


基本上,PDB1-> PRS------> RRS-> RDS1

复制也可以采用另一种方式,当然一次只能使用一个主副本。
RDS1-> RRS------> PRS-> PDB1

因此,现在我们希望将PDB1和RDS1从旧计算机迁移到新计算机。 (假设是PDS2和RDS2)
我们当然希望停机时间最少,而对主服务器的影响则没有,也没有影响。
这意味着我们需要利用复制环境来做到这一点。

是否有任何方法可以使用复制在当前环境中将PDS2和RDS2添加到混合中?

以便PDS2和RDS2可以成为用于双向复制的新MSA对,并且在迁移过程中同时启动并运行我们当前的旧主数据库?

谢谢!

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

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


好的,距离我玩复制已经很久了,那时的环境不一样。

因此,我们目前在MSA双向复制环境中拥有ASE服务器。
复制大约8个DB,包括主数据库。


基本上,PDB1-> PRS------> RRS-> RDS1

复制也可以采用另一种方式,当然一次只能使用一个主副本。
RDS1-> RRS------> PRS-> PDB1

因此,现在我们希望将PDB1和RDS1从旧计算机迁移到新计算机。 (假设是PDS2和RDS2)
我们当然希望停机时间最少,而对主服务器的影响则没有,也没有影响。
这意味着我们需要利用复制环境来做到这一点。

是否有任何方法可以使用复制在当前环境中将PDS2和RDS2添加到混合中?

以便PDS2和RDS2可以成为用于双向复制的新MSA对,并且在迁移过程中同时启动并运行我们当前的旧主数据库?

谢谢!

付费偷看设置
发送
9条回答
zhangjiyang1323
1楼 · 2020-08-24 17:10.采纳回答

执行此操作有几种方法,具体取决于a)您执行动作的速度如何,b)是否始终需要后备解决方案,c)是否需要保持相同的精确度 ASE数据服务器名称,d)如果要引入新的repserver实例(或使用当前的repserver),e)如果要升级到新的RS版本,f)如果要升级到新的ASE版本,以及 g)DBA执行操作的能力。

假定没有新的ASE/RS升级和数据服务器名称的更改是可接受的,假设新的数据服务器名称为PDB2和RDS2,并且假定PDB1为 当前的活动/主数据服务器,一个的想法是:

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

从PDB1到RDS2的设置复制:

1a-为每个数据库创建第二个MSA/订阅 从PDB1到RDS2

1b-对从PDB1到RDS2的每个数据库执行正常的dump-n-load/resync操作

1c-(重新)配置 重新将RDS2数据库中的repagents(例如,指向正确的RS实例以用于将来复制到PDB2)

1d-此时,您应该将PDB1主动复制到RDS2(验证 rs_tickets ,数据从PDB1到RDS2)

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

从PDB1到PDB2的设置复制:

2a-为从PDB1到PDB2的每个数据库创建第三个MSA/订阅

2b-为从PDB1到PDB2的每个数据库执行正常的dump-n-load/resync操作

2c-(重新)配置PDB2数据库中的repagents(例如,指向正确的RS实例以供将来复制到RDS2)

2d-此时,您应该正在从PDB1主动复制到 PDB2(验证 rs_tickets 并且数据正在从PDB1流到PDB2)

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

指出您当前的活动/主数据库(PDB1)正在复制到3x组辅助数据库(RDS1,RDS2,PDB2)。

注意:如果使用相同的RS实例,则需要确保它们 C

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

配置/测试从PDB2到RDS2的复制:

3a-为每个数据库(从PDB2到RDS2)创建一个新的MSA/repdef/订阅

3b-验证复制是否正常,例如,从每个主数据库发送一个 rs_ticket (PDB2。),并确保它显示在相应的复制数据库(RDS2。

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

< p>配置/测试从RDS2到PDB2的复制:

4a-为每个数据库(从RDS2到PDB2)创建一个新的MSA/repdef/订阅

4b-验证复制是否正常 例如,从每个主数据库(RDS2。)发送 rs_ticket 并确保其显示在相应的复制数据库(PDB2。

中- ------------

这时,应该在新的ASE实例(PDB2,RDS2)之间启动MSA复制并使其处于活动状态。

注意: 假设所有repagents(旧的和新的)都已配置为忽略(默认设置)维护 服务交易; 最终结果是,应该在PDB2和RDS2之间复制的唯一内容是 rs_ticket (从PDB2或RDS2发送)

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

一旦确认所有新的复制设置均正常运行,并且您准备关闭旧的ASE实例...

5a-从以下位置执行切换 PDB1(当前的活动/主数据服务器)到RDS2(或PDB2,具体取决于您的交换机处理方式)

5b-此时,您已脱离PDB1,应该在新ASE上启动并运行 实例

注意:由于此特定计划未设置从新ASE数据库复制回旧ASE数据库的复制,因此您将无法回退到旧ASE数据库(而不会丢失新生成的用户数据) )。 这种功能(可以将旧ASE数据库的后备功能合并到混合功能中,但需要进行更多设置-即从RDS2到PDB1以及从PDB2到RDS1设置MSA/repdef/subscription)

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

这时,旧的ASE实例(PDB1和RDS1)仍是复制的一部分,但它们没有被复制到soooo中,旧的ASE实例 可以在此时从复制中删除。

此计划有很多变体,具体取决于您的时间表,需求和舒适度(例如,一次关闭一个旧的ASE实例;维护/重复使用ASE实例名称;同时执行ASE和/或RS升级;等等)。

太Q了
2楼-- · 2020-08-24 17:21

实际上是从SAP的知识库中获取的部分

您可以在不同的平台(Linux和HP-UX)上运行两个相同版本的SAP ASE服务器,但是此选项有局限性。 您不能在活动数据库上使用转储和启用标记,然后再使用跨平台转储和装入来重建备用数据库。 SAP Replication Agent必须将转储标记发送到要重建的备用数据库。 在跨平台转储和加载期间,从活动数据库获取转储时,活动数据库必须处于单用户模式。

但是我的印象是,您可以单用户刷新统计信息,以正常模式将数据库放回去,然后执行转储。
当然,该应用程序已关闭,当时没有人可以访问数据库

路亽曱_Ryan
3楼-- · 2020-08-24 17:22

谢谢马克,

这真的是一个很好的信息,我们沿着这些思路思考。
基本上,repserver保持不变。

我们不会创建新的repserver,我们会在原地使用它们。 >
这里的问题是我们将旧的HP-UX跨平台迁移到新的Linux主机。
我们考虑使用转储工具为PDS2创建副本,但是此解决方案的唯一缺点是 XPDL,我们需要将数据库放在主PDS1上供单个用户使用,执行刷新统计信息和其他操作,然后从PDB1中转储数据库。
这将需要停机。

我看到了另一篇与我们想要的类似的文章,基本上,我们将使用转储标记创建到PDS2的副本,但是我们将进行实时备份 使用主PDS1上的转储标记,将备份加载到具有与PDS1相同的OS和ASE版本的临时ASE服务器。

运行flush stats以及我们需要做的其他事情。 从临时ASE执行转储,然后将该转储加载到新的复制的PDS2。

现在,当我们将dsi恢复到PDS2时,它应该拾取转储标记并与PDS1保持同步。

似乎合法吗?

谢谢

lukcy2020
4楼-- · 2020-08-24 17:35

《系统管理指南》(第2卷)中有一节介绍了跨平台转储和加载数据库。 (显然)对手册本节的回顾可以帮助您理解执行XPDL的细节(和陷阱)。

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

特别感兴趣的是 sp_post_xpload 存储的proc。 设计此proc的前提是,所考虑的数据库相当小,最终结果是,对于较大的数据库(> 10 GB?),您可能会发现此proc需要较长时间才能完成(主要问题是

。如果您查看 sp_post_xpload 的源代码,您将看到它正在执行的所有步骤。 我倾向于退出这些步骤,并通过自己的脚本运行它们。 这使我能够a)管理各种操作(例如,停止/故障排除/重新启动),更重要的是b)并行运行多个操作(假设ASE实例和主机具有支持并行操作的资源)。 最终结果是,对于较大的数据库,我通常可以减少执行 sp_post_xpload 通常要执行的操作所需的时间。

梦想连接
5楼-- · 2020-08-24 17:35

是的,PDB2的dsi是 创建带有转储标记的订阅后,整个过程都将关闭。 基本上直到PDB2联机并一切正常为止。

对于管理员,我们会像您提到的那样与bcp重新同步。

旧服务器上的ASE版本为15.7 sp100,新服务器上的ASE版本为15.7 sp138。

到目前为止,我对master唯一注意到的是sysusers表是sp138上的额外列。

在加载到PDB2之后,是否会与所有需要/推荐的XPDL操作建立链接。
可以在Sybase手册中进行猜测。
只是不想错过任何内容。

谢谢

SKY徐
6楼-- · 2020-08-24 17:33

基本上,我们要采用的方法是使PDB2与PDB1中的转储标记同步,但是我们正在做XPDL。

首先,我们用转储标记定义订阅,然后进行转储。

因此,在PDB1上,我们停止rep agent将DB置于单用户中,运行flush stats,执行转储,删除单用户并启动rep agent。

这时,转储标记应该到达rep服务器,并且订阅才有效,并且对PDS2的DSI会因转储标记而挂起。

现在我们有了转储,应用程序将重新联机,所有新事务将在与PDS2的DSI连接的出站队列中等待

我们复制转储,加载,执行reidex等操作,并使数据库联机。

第2部分将设置MSA/repdef/sub,以便它可以复制到PDS1和RDS1。
当我们恢复连接时,出站队列将清除,PDS2将与PDS1同步。 现在,如果需要,我们可以使用旧PDS1的后备选项。

最后一部分将是切换到新系统,因此PDS2成为新的主要系统。 PDS1和RDS1成为复制品。然后,我们将RDS2与PDS2中的转储标记同步,并将MSA/repdef/sub设置为PDS2。 因此,RDS2将仅复制到PDS2,但此时仍将保留复制。

稍等片刻,当我们看到新的主PDS2很好时,我们可以删除旧PDS1和RDS1的订阅,并获得包含PDS2和RDS2的最终MSA。


我们唯一关心的是XPDL的转储标记,因为显然不建议这样做。

但是这样的票价在早期测试中似乎很有效。

这看起来正确吗?

歪着头看世界
7楼-- · 2020-08-24 17:25

感谢所有输入的Mark,真的很感激!

一周热门 更多>