Обсуждение: pg_receivexlog or archive_command
Hi,
I am wondering which one is the best way to archive the xlogs for Backup and Recovery - pg_receivexlog or archive_command.
pg_receivexlog seems best suited because the copied/archived file is streamed as it is being written to in xlog while archive_command only copies when the WAL is fully written to.
Best wishes
Vikas
Am 23.09.19 um 10:25 schrieb Vikas Sharma: > Hi, > > I am wondering which one is the best way to archive the xlogs for > Backup and Recovery - pg_receivexlog or archive_command. > > pg_receivexlog seems best suited because the copied/archived file is > streamed as it is being written to in xlog while archive_command only > copies when the WAL is fully written to. > you can use both of them, and you should consider "Barman". Regards, Andreas -- 2ndQuadrant - The PostgreSQL Support Company. www.2ndQuadrant.com
On Mon, Sep 23, 2019 at 10:55 AM Andreas Kretschmer <andreas@a-kretschmer.de> wrote: > you can use both of them, and you should consider "Barman". If I remember well Barman uses pg_receivexlog when streaming, and archive_command when doing a "normal" backup. Also pgbackrest is another good tool for backup. The idea here should be not reinventing the wheel. Luca
Am 23.09.19 um 13:44 schrieb Luca Ferrari: > On Mon, Sep 23, 2019 at 10:55 AM Andreas Kretschmer > <andreas@a-kretschmer.de> wrote: >> you can use both of them, and you should consider "Barman". > If I remember well Barman uses pg_receivexlog when streaming, and > archive_command when doing a "normal" backup. Barman < version 2 can only archive_command, version 2 and higher can both. > Also pgbackrest is another good tool for backup. > The idea here should be not reinventing the wheel. ack. Regards, Andreas > -- > 2ndQuadrant - The PostgreSQL Support Company. > www.2ndQuadrant.com
On 2019-09-23 10:25, Vikas Sharma wrote: > I am wondering which one is the best way to archive the xlogs for Backup > and Recovery - pg_receivexlog or archive_command. I recommend using pg_receivexlog. It has two important advantages over archive_command: 1) You can have multiple instances of pg_receivexlog running and copying things to different places. This is complicated to do correctly with archive_command. 2) pg_receivexlog will fsync the files it writes. This is also complicated to do correctly with archive_command. -- Peter Eisentraut http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services
Greetings, * Vikas Sharma (shavikas@gmail.com) wrote: > I am wondering which one is the best way to archive the xlogs for Backup > and Recovery - pg_receivexlog or archive_command. > > pg_receivexlog seems best suited because the copied/archived file is > streamed as it is being written to in xlog while archive_command only > copies when the WAL is fully written to. This really ends up depending on what your WAL volume is. As mentioned, you really don't want to write your own utility for archive_command, since you really want to make sure that the WAL has actually been archived and sync'd- so definitely use an existing tool which does that for you. The downside of pg_receivewal when it comes to high WAL volume is that a single-threaded process just simply can't keep up, while something being called from archive_command can be parallelized. Perhaps, down the road, there'll be a tool that could parallelize streaming of WAL also, though it would be pretty tricky to get right, and if you're doing that much WAL, is it really an issue that it's already chunked up nicely for archive_command..? Note that there is also archive_timeout which you can set, to make sure that you don't go too long with writes on the primary that haven't been sent to the archive and stored. If your transations are particularly valuable, then having a synchronous standby setup (likely with two replicas in a quorum-based sync setup) is probably the direction to go in, so you can have a highly available environment. Anything that's async will mean you have a good chance of having some data loss if things go wrong (even with pg_receivewal..). Thanks, Stephen
Вложения
Greetings, * Peter Eisentraut (peter.eisentraut@2ndquadrant.com) wrote: > On 2019-09-23 10:25, Vikas Sharma wrote: > > I am wondering which one is the best way to archive the xlogs for Backup > > and Recovery - pg_receivexlog or archive_command. > > I recommend using pg_receivexlog. It has two important advantages over > archive_command: 1) You can have multiple instances of pg_receivexlog > running and copying things to different places. This is complicated to > do correctly with archive_command. 2) pg_receivexlog will fsync the > files it writes. This is also complicated to do correctly with > archive_command. Yes, it definitely is difficult to write your own archive_command, in general, so, please, just don't. Use one of the existing tools that have been well tested and written specifically to work with PG and to provide the guarantees that an archive command should. Thanks, Stephen