在生产环境中我们尝试使用非排他备份的方式在从库进行备份,可以遇到经常备份超时的情况,看看这里的逻辑。
非排他备份在pg15之后是唯一的选项了,pg15中修改了基础备份函数名,将pg_start_bckup和pg_stop_backup改为了pg_backup_start以及pg_backup_stop,并且仅提供非排他备份,在老版本中,我们可以在pg_start_backup函数中指定备份方式:
pg_start_backup(`label` text , `fast` boolean , `exclusive` boolean ) 其中lable为备份标签; fast为是否立即执行checkpoint,这个我们在checkpoint章节有分析过,checkpoint的来源有备份函数pg_start_backup调用 exclusive为是否启用非排他备份,排他备份会将backup_lable写入到data目录下,而非排他备份会将backup_lable写入到备份目录下
而新函数pg_backup_start则只提供两个参数值:
pg_backup_start(`label` text , `fast` boolean default false)
当然这个函数的调用逻辑依然没有改变,步骤还是和老版本趋于一致,具体的pg_backup_start会进行哪些操作参见备份部分,这里不做展开。
回到具体的使用场景,在从库执行非排他备份,默认从库是开启归档的,由于生产环境中,需要一起备份从库的wal日志,所以就将对于pg_backup_start的第二个参数,设置为需要等待wal归档。我们看看这个场景下的pg_backup_s