[仅限内部部署/混合]{class="badge yellow" title="仅适用于内部部署和混合部署"}
复制环境 duplicating-environments
简介 introduction
概述 overview
使用Adobe Campaign需要安装和配置一个或多个环境:开发、测试、预生产、生产等。
每个环境都包含一个Adobe Campaign实例,每个Adobe Campaign实例都链接到一个或多个数据库。 应用程序服务器可以执行一个或多个进程:几乎所有这些进程都可以直接访问实例数据库。
本节详细介绍复制Adobe Campaign环境(即将源环境恢复到目标环境)时要应用的过程,这些过程会导致两个相同的工作环境。
要执行此操作,请应用以下步骤:
-
在源环境中的所有实例上创建数据库副本,
-
在目标环境的所有实例上恢复这些副本,
-
在目标环境中运行 nms:freezeInstance.js 烧灼脚本,然后再启动它。
此过程不会影响服务器及其配置。
note note NOTE 在Adobe Campaign的上下文中,审核 将一些操作组合在一起,可让您停止与外界交互的所有进程:日志、跟踪、投放、活动工作流等。
此步骤对于避免多次发送消息(一次来自名义环境,一次来自重复环境)是必需的。note important IMPORTANT 一个环境可以包含多个实例。 每个Adobe Campaign实例都受许可合同的约束。 检查您的许可协议,了解可以拥有的环境数量。
通过下面的过程,您可以在不影响已安装的环境和实例数的情况下传输环境。
开始之前 before-you-start
为了使此过程正常工作,源环境和目标环境必须具有相同的实例数、相同的用途(营销实例、投放实例)和类似的配置。 技术配置必须符合软件先决条件。 必须在两个环境中安装相同的组件。
实现 implementation
传输过程 transfer-procedure
本节将帮助您了解通过案例研究将源环境传输到目标环境所需的步骤:我们的目标是将生产环境(prod 实例)恢复到开发环境(dev 实例),以便在尽可能接近“实时”平台的上下文中工作。
必须谨慎地执行以下步骤:在复制源环境数据库时,某些进程可能仍在进行中。 烧灼操作(下面的步骤3)可防止发送两次消息,并保持数据一致性。
- 以下过程在PostgreSQL语言中有效。 如果SQL语言不同(例如Oracle),则必须调整SQL查询。
- 以下命令适用于PostgreSQL下的 prod 实例和 dev 实例的上下文。
步骤1 — 备份源环境(prod)数据 step-1---make-a-backup-of-the-source-environment--prod--data
复制数据库
首先复制所有源环境数据库。 该操作依赖于数据库引擎,是数据库管理员的责任。
在PostgreSQL下,命令为:
pg_dump mydatabase > mydatabase.sql
步骤2 — 导出目标环境配置(dev) step-2---export-the-target-environment-configuration--dev-
每个环境的大多数配置元素各不相同:外部帐户(中间源、路由等)、技术选项(平台名称、数据库ID、电子邮件地址和默认URL等)。
在将源数据库保存到目标数据库之前,需要导出目标环境(dev)配置。 为此,请导出这两个表的内容:xtkoption 和 nmsextaccount。
通过此导出,您可以保留开发配置并仅刷新开发数据(工作流、模板、Web应用程序、收件人等)。
为此,请为以下两个元素执行资源包导出:
- 将 xtk:option 表导出到“options_dev.xml”文件,而不包含具有以下内部名称的记录:“WdbcTimeZone”、“NmsServer_LastPostUpgrade”和“NmsBroadcast_RegexRules”。
- 在“extaccount_dev.xml”文件中,导出ID不为0 (@id <> 0)的所有记录的 nms:extAccount 表。
检查导出的选项/帐户数是否等于每个文件中要导出的行数。
步骤3 — 停止目标环境(开发) step-3---stop-the-target-environment--dev-
您需要停止所有目标环境服务器上的Adobe Campaign进程。 此操作取决于您的操作系统。
您可以停止所有进程,或仅停止写入数据库的进程。
要停止所有进程,请使用以下命令:
-
在Windows中:
code language-none net stop nlserver6
-
在Linux中:
code language-none /etc/init.d/nlserver6 stop
使用以下命令检查所有进程是否已停止:
nlserver pdump
您还可以检查是否没有系统进程仍在运行。
为此,请使用以下流程:
- 在Windows中:打开 任务管理器 并检查是否没有 nlserver.exe 进程。
- 在Linux中:运行 ps aux | grep nlserver 命令并检查是否没有 nlserver 进程。
步骤4 — 恢复目标环境中的数据库(开发) step-4---restore-the-databases-in-the-target-environment--dev-
要在目标环境中恢复源数据库,请使用以下命令:
psql mydatabase < mydatabase.sql
步骤5 — 烧灼目标环境(开发) step-5---cauterize-the-target-environment--dev-
为避免发生故障,在激活目标环境时,不得自动执行链接到投放发送和工作流执行的流程。
为此,请运行以下命令:
nlserver javascript nms:freezeInstance.js -instance:<dev> -arg:run
步骤6 — 检查烧灼化 step-6---check-cauterization
-
检查唯一的deliverypart是否是ID设置为0的部分:
code language-none SELECT * FROM neolane.nmsdeliverypart;
-
检查投放状态更新是否正确:
code language-none SELECT iState, count(*) FROM neolane.nmsdelivery GROUP BY iState;
-
检查工作流状态更新是否正确:
code language-none SELECT iState, count(*) FROM neolane.xtkworkflow GROUP BY iState; SELECT iStatus, count(*) FROM neolane.xtkworkflow GROUP BY iStatus;
步骤7 — 重新启动目标环境Web进程(开发) step-7---restart-the-target-environment-web-process--dev-
在目标环境中,为所有服务器重新启动Adobe Campaign进程。
运行以下命令以启动Web进程:
nlserver start web
使用以下命令检查是否仅启动了Web进程:
nlserver pdump
检查对客户端控制台的访问权限功能。
步骤8 — 将选项和外部帐户导入目标环境(开发) step-8---import-options-and-external-accounts-into-the-target-environment--dev-
首先,在导入之前检查几行文件的值(例如:选项表的“NmsTracking_Pointer”和外部帐户表的投放或中间源帐户)
要从目标环境数据库(dev)导入配置,请执行以下操作:
-
打开数据库的Admin Console并清除ID不是0 (@id <> 0)的外部帐户(表nms:extAccount)。
-
在Adobe Campaign控制台中,导入之前通过导入包功能创建的options_dev.xml包。
检查 Administration > Platform > Options 节点中的选项是否确实已更新。
-
在Adobe Campaign控制台中,导入之前通过导入资源包功能创建的extaccount_dev.xml
检查是否确实已在 Administration > Platform > External accounts 中导入外部数据库。
步骤9 — 重新启动所有进程并更改用户(开发) step-9---restart-all-processes-and-change-users--dev-
要启动Adobe Campaign进程,请使用以下命令:
-
在Windows中:
code language-none net start nlserver6
-
在Linux中:
code language-none /etc/init.d/nlserver6 start
使用以下命令检查进程是否已启动:
nlserver pdump
更改用户以查找开发平台上已存在的用户。