【Salesforce】生产环境元数据版本备份 、还原完整方案 Production Metadata backup & recover solution

Salesforce 生产环境元数据版本备份、还原完整方案

前言

在Salesforce的开发版本release到生产环境并且部署之后,数据备份与还原就是一个需要关心的话题了。作为Paas平台,Salesforce的所有数据都在云上,因此它的数据备份要在Salesforce的规则和特点下考虑。今天我要介绍的生产环境版本控制只包含生产环境的 metadata 即元数据。不包含实际业务产生的记录数据的备份。

什么是Metadata?

metadata这个词的本意为元数据,即描述其他数据的数据。在Salesforce中,metadata是Salesfoce基础架构的核心。它包括字段、构造、代码、逻辑、页面布局,所有这些筑成了数据架构以及Salesforce环境的前台样貌。

Metadata有各种各样的类型,每一种类型都描述了独M特的、可供定制化业务方法。下述为几大类Metadata。

Metadata类型

  • 数据:数据结构的核心组件
    • 自定义对象
    • 自定义字段
    • 值对
    • 自定义App
  • 编程类:在平台提供的可定制接口上开发的代码
    • Apex类
    • Apex页
    • Apex触发器
    • Apex Job
  • 可视类:定义用户如何在平台上互动的组件
    • 自定义组件、标准组件
    • VisualForce页面
    • Lightning页面
  • 权限类:定义用户拥有的特定权限,业务如何进行等
    • 简档
    • 工作流
    • 审批流
    • 自动流程
    • 组织结构
    • 角色

完整的Metadata类型可参照官方文档

因此,在进行一个Salesforce生产环境版本控制的时候,不仅仅包括开发人员开发的各种代码,业务组所进行的各种简档、页面布局、工作流、审批流、自定义对象等等等都应该包含在版本控制的范围中。更精确地说,生产环境地所有Metadata理论上都需要进行完整的保存!

如何备份Metadata

既然我们已经知道生产环境的备份需要备份所有的Metadata,那有什么方法能够有效地完成这一目的?接下来我将介绍两种方法。

官方推荐方法

Salesforce似乎也知道企业有备份Metadata的需求,所以它给出了官方推荐的方案。

利用的工具/功能

  • Sandbox

Sandbox中文名为沙盒,顾名思义,它用于各种实验性、演示性目的,例如开发人员进行项目开发、管理员进行业务演示等等时候,可以用到沙盒环境,它不会影响生产环境的数据。而沙盒的另一个用处就是用来保存生产环境的所有Metadata。

实施方案

  1. 从“设置”中,在快速查找方框中输入 Sandboxes,然后选择 Sandboxes

  2. 单击新建 Sandbox

  3. 输入 Sandbox 的名称(10 个字符或更少字符)和描述。

  4. 选择所需的 Sandbox 类型。

  5. 选择要包含在Sandbox中的数据,我们需要将生产环境中所有元数据都包含在内。

  6. 单击创建

整个创建过程根据组织的大小,会有差异。

在创建完成之后,一个和生产环境的元数据完全一致的Sandbox产生了。我们所有的元数据都保存在这个Sandbox中。当然,这个是当前生产环境的版本,如果之后生产环境又产生了一些变化,我们如何保证Sandbox和生产环境元数据保持一致呢?很简单,每一个Sandbox都有 更新 功能,会将当前生产环境与Sandbox保持一致。

需要注意的是,不同类型的Sandbox更新周期有所不同,具体差异请查阅官方文档。

利用 Cli 将元数据备份在本地/Git/云中

官方推荐的方法利用Sandbox的创建与更新,将元数据保存在沙盒中,当然,我们仍可以选择将所有的元数据统统保存在本地,在拉取到本地之后,我们还可以更进一步用Git、云、S3等等方式进行更加细致、溯源的版本控制。注意,用官方的沙盒控制是只能保留一个世代的版本,每次更新之后上上个版本的备份将荡然无存,因此将元数据用Git等方式控制起来更加具有安全感不是吗?

利用的工具/功能

  • VSCode
  • Salesforce Cli Integration
  • Salesforce Extension Pack
  • Sandbox

实施方案

在实施之前,本文已默认读者知悉VSCode上开发Salesforce的方法。并且读者的环境已经具备官方提供的脚手架以及VSCode插件等。

  1. (可选)将生产环境按照官方方法步骤复制到一个新的Sandbox中。

    此步单纯地为了安全性考虑,不直接从生产环境拉取所有Metadata,如果实在有难处,可以跳过此步骤,注意,因此产生的安全事故本文不负责!!

  2. 打开VSCode,使用命令 SFDX: Create Project With Manifest

  3. 接着,使用命令 SFDX: Authorize an Org 并且验证第1步创建的Sandbox。

  4. 接下来,最关键的一步,生成一个包含所有Metadata组件类型的 package.xml 文件。这里作者推荐一个第三方插件,Salesforce Package.xml Generator Extension for VS Code ,该插件可以人性化生成一个完备的package描述文件,具体使用方法请参阅

  5. 生成好 package.xml 文件后,运行 SFDX: Retrieve Source in Manifest from Org 命令,耐心等待。

  6. 最终,生产环境所有的元数据就被拉取到本地了。接下来如何利用Git等工具进行版本控制就是你的选择了。

  7. 和官方方法一样,用更新的方式保持Sandbox和生产环境元数据的一致,并且在每一次更新之后重新拉取所有元数据,注意,package.xml生成是一劳永逸的,之后的每次拉取都可以使用相同的描述文件。

整体流程图

在这里插入图片描述

如何恢复Metadata

有备份,就会有恢复的需求。其实 恢复部署 的核心概念是一致的。因此,这里我将简单介绍下如何恢复备份好的Metadata。

首先我们要明确的一点,生产环境需要恢复的情况中,绝大部分情况是只需要恢复一小部分元数据,例如恢复某一个页面的页面布局;某一个对象的字段;某一个按钮的逻辑等等,我们备份的元数据体量很大,但是它的单位是组件,即我们可以选择到非常小的组件进行恢复,而不需要将整体还原。

因此,和部署一样,我们将会用到 更改集

更改集

更改级又分为出站更改集和入站更改集,出站更改集包含此次要还原的组件内容,入站更改集为生产环境接收到的更改集,利用入站更改集,生产环境会将其中包含的组件 release 到环境中。

因此,核心步骤将会分为以下几步:

核心步骤

  1. 在Sandbox中,创建新的出站更改集。
  2. 在新的出站更改集中添加需要还原的组件。
  3. 上载出站更改集。
  4. 在生产环境中,选择上载成功的入站更改集。
  5. 将入站更改集部署到生产环境。

其中的具体操作方法,请参阅官方文档

免责声明

本文为Salesforce生产环境元数据的备份、还原参考,根据实际项目撰写,仅供参考,在项目实施过程中发生的任何生产事故本文恕不负责,望读者知悉!

猜你喜欢

转载自blog.csdn.net/qq_35714301/article/details/114108358
今日推荐