Vladimir,

* Vladimir Borodin (r...@simply.name) wrote:
> > 20 янв. 2017 г., в 16:40, Stephen Frost <sfr...@snowman.net> написал(а):
> >> Increments in pgbackrest are done on file level which is not really 
> >> efficient. We have done parallelism, compression and page-level increments 
> >> (9.3+) in barman fork [1], but unfortunately guys from 2ndquadrant-it 
> >> don’t hurry to work on it.
> > 
> > We're looking at page-level incremental backup in pgbackrest also.  For
> > larger systems, we've not heard too much complaining about it being
> > file-based though, which is why it hasn't been a priority.  Of course,
> > the OP is on 9.1 too, so.
> 
> Well, we have forked barman and made everything from the above just because 
> we needed ~ 2 PB of disk space for storing backups for our ~ 300 TB of data. 
> (Our recovery window is 7 days) And on 5 TB database it took a lot of time to 
> make/restore a backup.

Right, without incremental or compressed backups, you'd have to have
room for 7 full copies of your database.  Have you looked at what your
incrementals would be like with file-level incrementals and compression?

Single-process backup/restore is definitely going to be slow.  We've
seen pgbackrest doing as much as 3TB/hr with 32 cores handling
compression.  Of course, your i/o, network, et al, need to be able to
handle it.

> > As for your fork, well, I can't say I really blame the barman folks for
> > being cautious- that's usually a good thing in your backup software. :)
> 
> The reason seems to be not the caution but the lack of time for working on 
> it. But yep, it took us half a year to deploy our fork everywhere. And it 
> would take much more time if we didn’t have system for checking backups 
> consistency.

How are you testing your backups..?  Do you have page-level checksums
enabled on your database?  pgbackrest recently added the ability to
check PG page-level checksums during a backup and report issues.  We've
also been looking at how to use pgbackrest to do backup/restore+replay
page-level difference analysis but there's still a number of things
which can cause differences, so it's a bit difficult to do.

Of course, doing a pgbackrest-restore-replay+pg_dump+pg_restore is
pretty easy to do and we do use that in some places to validate
backups.

> > I'm curious how you're handling compressed page-level incremental
> > backups though.  I looked through barman-incr and it wasn't obvious to
> > me what was going wrt how the incrementals are stored, are they ending
> > up as sparse files, or are you actually copying/overwriting the prior
> > file in the backup repository?
> 
> No, we do store each file in the following way. At the beginning you write a 
> map of changed pages. At second you write changed pages themselves. The 
> compression is streaming so you don’t need much memory for that but the 
> downside of this approach is that you read each datafile twice (we believe in 
> page cache here).

Ah, yes, I noticed that you passed over the file twice but wasn't quite
sure what functools.partial() was doing and a quick read of the docs
made me think you were doing seeking there.

All the pages are the same size, so I'm surprised you didn't consider
just having a format along the lines of: magic+offset+page,
magic+offset+page, magic+offset+page, etc...

I'd have to defer to David on this, but I think he was considering
having some kind of a bitmap to indicate which pages changed instead
of storing the full offset as, again, all the pages are the same size.

> >  Apologies, python isn't my first
> > language, but the lack of any comment anywhere in that file doesn't
> > really help.
> 
> Not a problem. Actually, it would be much easier to understand if it was a 
> series of commits rather than one commit that we do ammend and force-push 
> after each rebase on vanilla barman. We should add comments.

Both would make it easier to understand, though the comments would be
more helpful for me as I don't actually know the barman code all that
well.

Thanks!

Stephen

Attachment: signature.asc
Description: Digital signature

Reply via email to