本主题描述如何使用Greenplum数据库备份/恢复存储插件API开发自定义存储插件。
注意:只有备份/恢复存储插件API是Beta版功能。存储插件是受支持的功能。
备份/恢复存储插件API提供了一个框架,您可以使用该框架开发自定义的备份存储系统,并将其与Greenplum数据库的gpbackup, gpbackup_manager和gprestore工具集成。
备份/恢复存储插件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时实现的插件,是一个可执行程序,它支持gpbackup和gprestore在各自生命周期操作中定义的时间点,调用特定的命令:
插件API还定义了 delete_backup 命令,该命令由 gpbackup_manager调用。( gpbackup_manager源代码是专有的,该工具仅从Pivotal Network的Pivotal Greenplum Backup and Restore 下载中获取。)
备份/恢复存储插件API为备份/恢复存储插件可执行程序定义了以下的调用语法:
plugin_executable command config_file args
其中:
指令名称 | 描述 |
---|---|
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 | 恢复操作后进行清理。 |
备份/恢复存储插件必须支持上面标识的每个命令,即使它是无操作。
您可以使用任何编程或脚本语言来实现备份/恢复存储插件可执行文件。
备份/恢复存储插件执行的任务将非常特定于远程存储系统。在设计插件实现时,您将需要:
您实现的备份/恢复存储插件必须:
有关插件实现的示例,请参考github仓库gpbackup-s3-plugin 。
备份/恢复存储插件API包括一个测试平台,您可以运行该测试平台以确保插件与 gpbackup 和 gprestore的良好集成。
测试平台是您在Greenplum数据库安装中运行的bash脚本。该脚本在Greenplum数据库表中生成一个小的(<1MB)数据集,显式测试每个命令,并运行数据(文件和流)的备份和恢复。测试平台调用gpbackup 和 gprestore,它们分别依次调用/测试插件中实现的每个“备份/还原存储插件API”命令。
plugin_test_bench.sh plugin_executable plugin_config
要针对某个插件运行“备份/还原存储插件API”测试平台,请执行以下操作:
$ ssh gpadmin@<gpmaster>
gpadmin@gpmaster$ . /usr/local/greenplum-db/greenplum_path.sh
$ git clone git@github.com:greenplum-db/gpbackup.git
clone操作在当前工作目录中创建名为gpbackup/的目录。$ ls gpbackup/master/plugins/plugin_test_bench.sh
$ gpbackup/master/plugins/plugin_test_bench.sh /path/to/pluginexec /path/to/plugincfg.yaml
# ----------------------------------------------
# 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数据库安装中。打包备份/恢复存储插件时,请考虑以下事项: