pg_basebackup命令解析

Posted 非我在

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pg_basebackup命令解析相关的知识,希望对你有一定的参考价值。

pg_basebackup命令首先解析输入的参数,再调用BaseBackup()函数进行备份处理。
在BaseBackup()函数内部,会首先传送WAL日志(如果指定了-x选项的话)。随后依次遍历所有的tablespace复制备份整个数据库的文件。根据pg_basebackup命令的-F选项的指定情况(p表示输出普通文件,t表示输出tar格式,其中p选项是默认选项)选择不同的函数进行处理,incident发生的场合调用的是ReceiveAndUnpackTarFile()函数。对于每一个tablespace,该函数调用PQgetCopyData()函数接收数据库命令COPY TO STDOUT输出的tar格式流,在解析tar格式流后将流中的数据写入到目标目录中对应的文件中,从而完成数据库文件的复制。

对于tar流:以512字节为一个块(block),不足部分以0补齐,因此tar流的大小是512的倍数。在解析时,也以512个字节为一个单位进行解析并写入到对应的文件中。传送的tar流式以文件为顺序进行发送,当传送完一个文件之后再开始传送下一个文件的数据。目前tar流只支持文件、目录和符号链接的数据的传送。

以上是关于pg_basebackup命令解析的主要内容,如果未能解决你的问题,请参考以下文章

Python笔记:命令行参数解析

跟踪域名解析过程的几条命令

Dos命令解析

27.Go 解析命令行参数

C++无法解析的外部命令和外部符号

Linux 命令解析器