I have replication with PostgreSQL, so I want to set archive_command = 'cp %p /var/lib/postgresql/11/main/archive/%f' but I also want to save WAL files to another safe place: S3.

So is it possible to have multiple archive_commands? And can I put this command on the slave to push wal files to S3 instead of on the master - I want master to have less performance impact.

1 Answer 1


You don't need multiple archive_commands:

archive_command = 'cp %p /.../%f && (command to archive to S3)'

The && is interpreted by the shell. If the cp has a non-zero return code, that will be the result of archive_command. If the result is 0 (success), the second command is executed, and its return code will be the result of archive_command.

You can also defer archiving to S3 to the standby server, but then you have to set archive_mode = always there. The disadvantage is that the configuration on primary and standby will be different, which makes failover more complicated. Does the command to archive a file to S3 really cause a substantial performance impact?

  • I'm not sure that s3 command to transfer file from master to cloud would cause performance issue or not but just in case I don't want to mess with master but thanks for your answer that answered the question. Nov 4, 2019 at 6:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.