pg_basebackup遇到“waiting for checkpoint”

时间:2023-01-10 15:55:36

现象

在一次备份遇到一个问题,就是远程使用pg_basebackup进行备份的时候一直卡在waiting for checkpoint。


原因

因为pg_basebackup在备份的时候会调用

SELECT pg_backup_start(label => 'label', fast => false);

pg_backup_start默认情况下的fast = > false,意味着需要等待下一次检查点的完成,这可能需要等待很长的时间。如果想要尽快的开始备份,那么fast参数的值应该要设置为true。

文档说明如下:

pg_basebackup遇到“waiting for checkpoint”

在pg_basebackup中,检查点的默认模式是spread,那就意味着使用pg_backup_start(label => 'label', fast => false);的模式进行备份,所以可能需要等待较长的时间。

General options:
-c, --checkpoint=fast|spread
set fast or spread checkpointing

解决

在调用pg_basebackup中使用-c fast

$ pg_basebackup -h vm001 -U postgres -p 2023 -D $PGDATA -Fp -Xs -P -R -c fast