备份/恢复存储插件API(Beta版)
本主题描述如何使用Greenplum数据库备份/恢复存储插件API开发自定义存储插件。
注意:只有备份/恢复存储插件API是Beta版功能。存储插件是受支持的功能。
备份/恢复存储插件API提供了一个框架,您可以使用该框架开发自定义的备份存储系统,并将其与Greenplum数据库的gpbackup, gpbackup_manager和gprestore工具集成。
备份/恢复存储插件API定义了插件必须支持的一组接口。该API还指定了插件配置文件的格式和内容。
当您使用备份/恢复存储插件API时,您将创建一个插件,Greenplum数据库管理员会将其部署到Greenplum数据库集群。部署后,该插件可用于某些备份和恢复操作。
本主题包括以下子主题:
- 插件配置文件
- 插件API
- 插件命令
- 实施备份/恢复存储插件
- 验证备份/还原存储插件
- 打包和部署备份/恢复存储插件
插件配置文件
指定 gpbackup 和 gprestore 命令的选项 --plugin-config,会指示这些命令使用配置文件中指定的插件进行操作。
插件配置文件提供了有关Greenplum数据库和插件的信息。备份/恢复存储插件API定义了插件配置文件的格式,以及在配置文件中使用的某些关键字。
插件配置文件是一个YAML文件,格式如下:
executablepath: path_to_plugin_executable
options:keyword1: value1keyword2: value2...keywordN: valueN
gpbackup 和 gprestore 使用 executablepath值,来确定插件可执行程序的文件系统位置。
插件配置文件还可以包括特定于插件实例的关键字和值。备份/恢复存储插件可以使用文件中指定的options 块,以从用户那里获取执行其任务所需的信息。例如,该信息可以包括位置、连接或认证信息。 插件应该以keyword:value的语法,指定和使用此信息的内容。
以下是一个Greenplum Database S3备份/恢复存储插件的插件配置文件示例:
executablepath: $GPHOME/bin/gpbackup_s3_plugin
options:region: us-west-2aws_access_key_id: notarealIDaws_secret_access_key: notarealkeybucket: gp_backup_bucketfolder: greenplum_backups
插件API
使用备份/还原存储插件API时实现的插件,是一个可执行程序,它支持gpbackup和gprestore在各自生命周期操作中定义的时间点,调用特定的命令:
- Greenplum数据库备份/恢复存储插件API提供了gpbackup生命周期的钩子,钩在初始化、备份期间以及清理/退出时。
- API提供了到 gprestore 生命周期的钩子,钩在初始化、恢复期间以及清理/退出时。
- API提供了参数,用于指定插件的设置或清理命令的执行范围(master主机,segment主机或segment实例)。范围为以下值之一:
- master -在master 主机上执行一次插件。
- segment_host -在每个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而异。
插件命令
指令名称 | 描述 |
---|---|
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 必须使用 -无压缩 选项,以防止实用程序压缩数据。
您实现的备份/还原存储插件必须:
- 支持“插件命令”中标识的所有插件命令。每个命令必须使用命令参考页上标识的值退出。
有关示例插件实现,请参考gpbackup-s3-plugin github存储库。
验证备份/还原存储插件
备份/还原存储插件API包括一个测试平台,您可以运行该测试平台以确保插件与 gpbackup 和 gprestore。
测试台是一个 重击您在Greenplum数据库安装中运行的脚本。该脚本在Greenplum数据库表中生成一个小的(<1MB)数据集,显式测试每个命令,并运行数据(文件和流)的备份和还原。测试台调用gpbackup 和 gprestore,依次依次调用/测试插件中实现的每个“备份/还原存储插件API”命令。
<span style="color:#00253e"><strong>plugin_test_bench.sh </strong> plugin_executable plugin_config</span>
程序
要针对某个插件运行“备份/还原存储插件API”测试平台,请执行以下操作:
- 登录到Greenplum数据库主控主机并设置您的环境。例如:
<span style="color:#00253e">$ ssh gpadmin @ <gpmaster> gpadmin @ gpmaster $。/usr/local/greenplum-db/greenplum_path.sh</span>
- 从测试台获得测试台的副本 gpbackupgithub存储库。例如:
<span style="color:#00253e">$ git clone git@github.com:greenplum-db / gpbackup.git</span>
- 在控制台中找到测试平台程序 gpbackup / master / plugins 目录。例如:
<span style="color:#00253e">$ ls gpbackup / master / plugins / plugin_test_bench.sh</span>
- 将插件可执行程序和插件配置YAML文件从您的开发系统复制到Greenplum数据库主主机。请注意将文件复制到的文件系统位置。
- 将插件可执行程序从Greenplum数据库主主机复制到每个段主机上的相同文件系统位置。
- 如果需要,请编辑插件配置YAML文件,以指定刚复制到Greenplum段的插件可执行程序的绝对路径。
- 针对插件运行测试平台程序。例如:
<span style="color:#00253e">$ gpbackup / master / plugins / plugin_test_bench.sh / path / to / pluginexec /path/to/plugincfg.yaml</span>
- 检查测试台的输出。如果所有输出消息都指定,则您的插件通过了测试平台正在运行 和 通过。例如:
<span style="color:#00253e">#---------------------------------------------- #启动gpbackup插件测试 #---------------------------------------------- [RUNNING] plugin_api_version [通过] plugin_api_version [RUNNING] setup_plugin_for_backup [RUNNING] backup_file [RUNNING] setup_plugin_for_restore [RUNNING] restore_file [通过] setup_plugin_for_backup [通过] backup_file [通过] setup_plugin_for_restore [通过] restore_file [RUNNING] backup_data [RUNNING] restore_data [通过] backup_data [通过] restore_data [RUNNING] cleanup_plugin_for_backup [通过] cleanup_plugin_for_backup [RUNNING] cleanup_plugin_for_restore [通过] cleanup_plugin_for_restore [RUNNING] gpbackup与测试数据库 [RUNNING]带有测试数据库的gprestore [通过] gpbackup和gprestore #---------------------------------------------- #完成gpbackup插件测试 #----------------------------------------------</span>
打包和部署备份/还原存储插件
您的备份/还原存储插件通过测试和测试台验证后,即可部署到Greenplum数据库安装中。打包备份/还原存储插件时,请考虑以下事项:
- 备份/还原存储插件必须安装在Greenplum数据库集群中每个主机上的相同文件系统位置中。为插件标识提供安装说明。
- 的 gpadmin 用户必须具有遍历备份/还原插件可执行程序的文件系统路径的权限。
- 在插件中包含模板配置文件。
- 记录有效的插件配置关键字,确保包括期望值的语法。
- 所需文件 gpbackup 选项以及它们如何影响插件处理。