使用命名管道
如果指定了--ddboost选项,则不支持用命名管道备份。
要使用命名管道备份一个Greenplum数据库
用选项-K timestamp和--list-backup-files运行gpcrondump命令。
这会创建两个包含备份文件名称的文本文件,每一个文件名一行。文件名包括用户用-K timestamp选项指定的timestamp并且具有后缀_pipes和_regular_files。例如:
列在_pipes文件中的文件名将被创建为命名管道。列在_regular_files文件中的文件名不会被创建为命名管道。gpcrondump和gpdbrestore在备份和恢复操作期间会使用这些文件中的信息。
使用生成的_pipes文件中的文件名在所有的Greenplum数据库Segment上创建命名管道。
- 将每个命名管道的输出重定向到目标进程或者文件对象。
-
要创建一个Greenplum数据库备份文件的完整集合,列在_regular_files文件中的文件也必须被备份。
要恢复一个备份期间使用了命名管道的数据库
- 将每个备份文件的美容定向到它的命名管道的输入。例如cat filename > pipename,如果该备份文件可以作为一个本地文件对象访问。
上级主题: 备份和恢复数据库
这个例子展示了如何通过玩过使用命名管道和netcat(nc)Linux命令备份一个数据库。Segment把备份文件写到命名管道的输入。命名管道的输出被导向nc命令,后者让那些文件在TCP端口上可用。其他主机上的进程接着可以在指定的端口连接到Segment主机来接收备份文件。这个例子要求在所有Greenplum主机上安装nc包。
输入下面的gpcrondump命令为testdb数据库在/backups目录中生成备份文件的列表。
查看gpcrondump创建在/backup目录中的文件:
-
$ cat /backups/db_dumps/20150519/gp_dump_20150519160000_pipes
mdw:/backups/db_dumps/20150519/gp_dump_-1_1_20150519160000_post_data.gz
在Greenplum数据库的Segment上创建指定的命名管道。还未命名管道设置一个读取器。
为_pipes文件中列出的每个命名管道都完成这些步骤。确保为每个文件选择一个可用的TCP端口。
在目标主机上,用下面这样的命令接收备份文件:
运行gpcrondump开始备份:
要用命名管道恢复一个数据库,通过将备份文件的内容发送到命名管道的输入翻转备份文件的方向并且运行gpdbrestore命令:
gpdbrestore从命名管道的输出读取。