Puncte:0

Postgresql 13 - Accelerează pg_dump la 5 minute în loc de 70 de minute

drapel cn

Folosim pg_dump seara pentru a face un instantaneu al bazei de date. Am făcut mult timp cu o comandă simplă

pg_dump -Fc nume_bază de date

Aceasta durează aproximativ o oră și produce un fișier de 30+GByte.

Cum putem accelera lucrurile?

Puncte:4
drapel cn

Cel mai mare tabel al nostru conține date brute de imagine sub formă de a bytea coloană.

Când am făcut o simplă COPIE din psql pe acest tabel la stdout, a fost destul de rapid (1 sau 2 minute), dar a fost foarte lent cu pg_dump. A durat ~60 de minute.

Așa că investigând asta am dat peste asta discuţie. Se pare că compresia pg_dump este destul de lentă dacă datele sunt deja comprimate, așa cum este cu datele de imagine într-un format bytea. Și este mai bine să comprimați în afara pg_dump (-Z0).

În plus, am descoperit că putem folosi procesorul nostru multi-core (-j10 și pigz). Așa că acum o facem așa:

$ pg_dump -Z0 -j 10 -Fd nume_bază de date -f dumpdir
$ tar -cf - dumpdir | pigz > dumpdir.tar.gz
$ rm dumpdir

Timpul a scăzut de la ~70 de minute la ~5 minute. Destul de uimitor.

Îl poți restaura astfel:

$ pigz -dc dumpdir.tar.gz | tar -C dumpdir --strip-components 1 -xf -
$ pg_restore -j 10 -Fd -O -d nume_bază de date dumpdir
Melih avatar
drapel gh
Noi am avut o problemă similară. 2 zile petrecute pentru pg_dump și am anulat, totuși trebuie să fac dump. avem o bază de date de 3 TB și mai mult de 1,5 TB este tabelul de imagini bytea. Timpul ar putea scădea la mese mari?
Janning avatar
drapel cn
Da, cred că va ajuta foarte mult (= ore)
plancys avatar
drapel sd
Cum restabiliți db din asta? `pg_restore -d root -j 10 -Fd dump_2022-03-24_17_47_40.tar.gz` îmi returnează `pg_restore: eroare: nu a putut deschide fișierul de intrare "dump_2022-03-24_17_47_40.tar.gz/toc.dat": Not ac.dat director`
Melih avatar
drapel gh
@Janning 2 zile petrecute. acum cu -j 2 6,5 ore.sper sa fie mai putin timp cu -j 10... multumesc
Janning avatar
drapel cn
Problema nu este despre -j, dar important este -Z0 pentru a dezactiva compresia și utilizați -Fd pentru a o arunca într-un director. -j spune doar procesului câte procesoare ar trebui să folosească. Dacă ai multe, folosește-le pe toate.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.