PostgreSQL服务器中有两种不同的工具:
pg_dump
pg_basebackup
这些工具有什么区别?
哪一个可用于创建数据库备份?
PostgreSQL服务器中有两种不同的工具:
pg_dump
pg_basebackup
这些工具有什么区别?
哪一个可用于创建数据库备份?
pg_dump
创建一个逻辑备份,即一系列的SQL语句,当执行时,会创建一个逻辑上与原始数据库相似的新数据库。
pg_basebackup
创建一个物理备份,即数据库集群构成文件的副本。您必须使用恢复操作使此备份一致。
主要区别如下:
pg_dump
通常需要更长的时间,并创建较小的备份。
使用pg_dump
可以备份一个数据库或数据库的部分内容,而pg_basebackup
总是备份整个集群。
使用pg_dump
创建的备份是完整的,而使用pg_basebackup
创建的备份需要WAL归档文件才能恢复(除非使用了默认选项-X stream
,在这种情况下,备份包含使备份一致所需的WAL段)。
使用逻辑备份只能恢复数据库在备份时的状态,而使用物理备份可以在备份结束后的任意时间点进行恢复,前提是您已经归档了所需的WAL段。
创建备用服务器需要使用pg_basebackup
,而pg_dump
无法实现。
使用pg_dump
进行的备份可以在运行在任意操作系统上的数据库上进行恢复,只要PostgreSQL版本等于或高于pg_dump
的版本。相比之下,pg_basebackup
只能在与原始数据库版本和平台相同的环境中进行恢复。
pg_dump
和pg_basebackup
可以同时运行吗?比如说我在主服务器上设置了每天1点运行的pg_dump
,同时从10点到3点之间从主服务器拉取数据的pg_basebackup
也在从备用服务器上运行。这两个进程会在1点交叉,这样做是否“危险”?谢谢@LaurenzAlbe - padjeepg_dump
和pg_basebackup
都会给服务器带来压力,因此您的正常工作负载的性能可能会受到影响。 - Laurenz Albe