Pivotal Greenplum® 6.9-管理员指南-管理系统-使用gpbackup和gprestore的并行备份-备份/恢复存储插件API(Beta版)

翁良弼
2023-12-01

备份/恢复存储插件API(Beta版)

本主题描述如何使用Greenplum数据库备份/恢复存储插件API开发自定义存储插件。

注意:只有备份/恢复存储插件API是Beta版功能。存储插件是受支持的功能。

备份/恢复存储插件API提供了一个框架,您可以使用该框架开发自定义的备份存储系统,并将其与Greenplum数据库的gpbackup, gpbackup_managergprestore工具集成。

备份/恢复存储插件API定义了插件必须支持的一组接口。该API还指定了插件配置文件的格式和内容。

当您使用备份/恢复存储插件API时,您将创建一个插件,Greenplum数据库管理员会将其部署到Greenplum数据库集群。部署后,该插件可用于某些备份和恢复操作。

本主题包括以下子主题:

插件配置文件

指定 gpbackup 和 gprestore 命令的选项 --plugin-config,会指示这些命令使用配置文件中指定的插件进行操作。

插件配置文件提供了有关Greenplum数据库和插件的信息。备份/恢复存储插件API定义了插件配置文件的格式,以及在配置文件中使用的某些关键字。

插件配置文件是一个YAML文件,格式如下:

executablepath: path_to_plugin_executable
options:
  keyword1: value1
  keyword2: value2
  ...
  keywordN: valueN

gpbackup 和 gprestore 使用 executablepath值,来确定插件可执行程序的文件系统位置。

插件配置文件还可以包括特定于插件实例的关键字和值。备份/恢复存储插件可以使用文件中指定的options 块,以从用户那里获取执行其任务所需的信息。例如,该信息可以包括位置、连接或认证信息。 插件应该以keyword:value的语法,指定和使用此信息的内容

以下是一个Greenplum Database S3备份/恢复存储插件的插件配置文件示例:

executablepath: $GPHOME/bin/gpbackup_s3_plugin
options:
  region: us-west-2
  aws_access_key_id: notarealID
  aws_secret_access_key: notarealkey
  bucket: gp_backup_bucket
  folder: greenplum_backups

插件API

使用备份/还原存储插件API时实现的插件,是一个可执行程序,它支持gpbackup和gprestore在各自生命周期操作中定义的时间点,调用特定的命令:

  • Greenplum数据库备份/恢复存储插件API提供了gpbackup生命周期的钩子,钩在初始化、备份期间以及清理/退出时。
  • API提供了到 gprestore 生命周期的钩子,钩在初始化、恢复期间以及清理/退出时。
  • API提供了参数,用于指定插件的设置或清理命令的执行范围(master主机,segment主机或segment实例)。范围为以下值之一:
    • master  -在master 主机上执行一次插件。
    • segment_host -在每个segment主机上执行一次插件。
    • segment- 对运行segment实例的主机上的每个活动的segment实例执行一次插件。
    当备份开始时,Greenplum数据库主机和segment实例基于Greenplum数据库配置值segment_host和segment是作为segment主机提供的,可以托管多个segment实例。与每个segment实例相比,在segment主机级别可能需要进行一些设置或清理。

插件API还定义了 delete_backup 命令,该命令由 gpbackup_manager调用。( gpbackup_manager源代码是专有的,该工具仅从Pivotal Network的Pivotal Greenplum Backup and Restore 下载中获取。)

备份/恢复存储插件API为备份/恢复存储插件可执行程序定义了以下的调用语法:

plugin_executable command config_file args

其中

  • plugin_executable - 备份/恢复存储插件可执行程序的绝对路径。 此路径由插件的配置文件YAML中配置的executablepath属性值确定。
  • command - 备份/恢复存储插件API命令的名称,用于标识gpbackup或gprestore生命周期操作的特定入口点。
  • config_file - 插件的配置文件YAML的绝对路径。
  • args - 命令参数; 实际参数因指定的command而异。

插件命令

Greenplum数据库备份/恢复存储插件API定义了以下命令:
表1.备份/还原存储插件API命令
指令名称描述
plugin_api_version

返回插件支持的备份/还原存储插件API的版本。当前支持的版本是0.4.0。

setup_plugin_for_backup初始化插件以进行备份操作。
backup_file将备份文件移动到远程存储系统。
backup_data将流数据从stdin移动到远程存储系统上的文件。
delete_backup删除远程系统上给定备份时间戳记指定的目录。
cleanup_plugin_for_backup备份操作后进行清理。
setup_plugin_for_restore初始化插件以进行恢复操作。
restore_file将备份文件从远程存储系统移动到本地主机上的指定位置。
restore_data从远程存储系统移动备份文件,将数据流式传输到 stdout
cleanup_plugin_for_restore恢复操作后进行清理。

备份/恢复存储插件必须支持上面标识的每个命令,即使它是无操作。

实施备份/恢复存储插件

您可以使用任何编程或脚本语言来实现备份/恢复存储插件可执行文件。

备份/恢复存储插件执行的任务将非常特定于远程存储系统。在设计插件实现时,您将需要:

  • 检查与远程存储系统的连接和数据传输接口。
  • 确定远程系统的存储路径详细信息。
  • 确定用户所需的配置信息。
  • 为插件配置文件中所需的信息定义关键字和值语法。
  • 确定该插件是否以及如何修改(压缩等)往返远程存储系统的数据。
  • 定义gpbackup 文件路径和远程存储系统之间的映射。
  • 确定gpbackup选项如何影响插件,以及哪些是必需的和/或不适用的。例如,如果插件执行自己的压缩, gpbackup 必须使用 --no-compression 选项,以防止工具压缩数据。

您实现的备份/恢复存储插件必须:

  • 支持插件命令中标识的所有插件。每个命令必须使用命令参考页上标识的值退出。

有关插件实现的示例,请参考github仓库gpbackup-s3-plugin 。

验证备份/恢复存储插件

备份/恢复存储插件API包括一个测试平台,您可以运行该测试平台以确保插件与 gpbackup 和 gprestore的良好集成。

测试平台是您在Greenplum数据库安装中运行的bash脚本。该脚本在Greenplum数据库表中生成一个小的(<1MB)数据集,显式测试每个命令,并运行数据(文件和流)的备份和恢复。测试平台调用gpbackup 和 gprestore,它们分别依次调用/测试插件中实现的每个“备份/还原存储插件API”命令。

测试平台程序的调用语法为:
plugin_test_bench.sh plugin_executable plugin_config

过程

要针对某个插件运行“备份/还原存储插件API”测试平台,请执行以下操作:

  1. 登录到Greenplum数据库Master主机并设置您的环境。例如:
    $ ssh gpadmin@<gpmaster>
    gpadmin@gpmaster$ . /usr/local/greenplum-db/greenplum_path.sh
  2. 从 github仓库gpbackup获取测试平台的副本。例如:
    $ git clone git@github.com:greenplum-db/gpbackup.git
    clone操作在当前工作目录中创建名为gpbackup/的目录。
  3. 在gpbackup/master/plugins目录中找到测试平台程序。例如:
    $ ls gpbackup/master/plugins/plugin_test_bench.sh
  4. 将插件可执行程序和插件配置YAML文件,从您的开发系统复制到Greenplum数据库Master主机。请记下复制文件的文件系统位置。
  5. 将插件可执行程序从Greenplum数据库Master主机复制到每个Segment主机上的相同文件系统位置。
  6. 如果需要,请编辑插件配置YAML文件,以指定刚刚复制到Greenplum Segment的插件可执行程序的绝对路径。
  7. 针对插件运行测试平台程序。例如:
    $ gpbackup/master/plugins/plugin_test_bench.sh /path/to/pluginexec /path/to/plugincfg.yaml
  8. 检查测试台的输出。如果所有输出消息都显示RUNNING或PASSED,则您的插件会通过测试平台。例如:
    # ----------------------------------------------
    # Starting gpbackup plugin tests
    # ----------------------------------------------
    [RUNNING] plugin_api_version
    [PASSED] plugin_api_version
    [RUNNING] setup_plugin_for_backup
    [RUNNING] backup_file
    [RUNNING] setup_plugin_for_restore
    [RUNNING] restore_file
    [PASSED] setup_plugin_for_backup
    [PASSED] backup_file
    [PASSED] setup_plugin_for_restore
    [PASSED] restore_file
    [RUNNING] backup_data
    [RUNNING] restore_data
    [PASSED] backup_data
    [PASSED] restore_data
    [RUNNING] cleanup_plugin_for_backup
    [PASSED] cleanup_plugin_for_backup
    [RUNNING] cleanup_plugin_for_restore
    [PASSED] cleanup_plugin_for_restore
    [RUNNING] gpbackup with test database
    [RUNNING] gprestore with test database
    [PASSED] gpbackup and gprestore
    # ----------------------------------------------
    # Finished gpbackup plugin tests
    # ----------------------------------------------

打包和部署备份/恢复存储插件

您的备份/恢复存储插件通过测试和测试平台验证后,即可部署到Greenplum数据库安装中。打包备份/恢复存储插件时,请考虑以下事项:

  • 备份/恢复存储插件必须安装在Greenplum数据库集群中每个主机上的相同文件系统位置中。提供插件的安装说明,以识别相同的插件。
  • gpadmin 用户必须具有遍历备份/恢复插件可执行程序的文件系统路径的权限。
  • 在插件中包含模板配置文件。
  • 记录有效的插件配置关键字,确保包括期望值的语法。
  • 记录 gpbackup 所需的选项以及它们如何影响插件处理。
 

 

 类似资料: