Kif tagħmel backup u tirrestawra Database PostgreSQL


F'ambjent ta 'produzzjoni, ma jimpurtax kemm jista' jkun kbir jew żgħir id-database PostgreSQL tiegħek, lura regolari huwa aspett essenzjali tal-ġestjoni tad-database. F'dan l-artikolu, titgħallem kif tagħmel backup u tirrestawra database PostgreSQL.

Nassumu li diġà għandek installazzjoni taħdem tas-sistema tad-database PostgreSQL. Jekk le, aqra l-artikoli li ġejjin tagħna biex tinstalla PostgreSQL fuq id-distribuzzjoni tal-Linux tiegħek.

  • Kif tinstalla PostgreSQL u pgAdmin4 f'Ubuntu 20.04
  • Kif Tinstalla PostgreSQL u pgAdmin f'CentOS 8
  • Kif Tinstalla PostgreSQL u pgAdmin f'RHEL 8

Ejja nibdew…

Agħmel backup ta' Database PostgreSQL Uniku

PostgreSQL jipprovdi l-utilità pg_dump biex jgħinek tagħmel backup tad-databases. Jiġġenera fajl ta 'database bi kmandi SQL f'format li jista' jiġi restawrat faċilment fil-futur.

Biex tagħmel backup, database PostgreSQL, ibda billi tidħol fis-server tad-database tiegħek, imbagħad aqleb għall-kont tal-utent Postgres, u mexxi pg_dump kif ġej (ibdel tecmintdb bl-isem tad-database li trid tagħmel backup) . B'mod awtomatiku, il-format tal-output huwa fajl b'kitba SQL b'test sempliċi.

$ pg_dump tecmintdb > tecmintdb.sql

Il-pg_dump jappoġġja formati oħra tal-produzzjoni wkoll. Tista' tispeċifika l-format tal-output billi tuża l-għażla -F, fejn c tfisser fajl tal-arkivju tal-format tad-dwana, d tfisser arkivju tal-format tad-direttorju, u t tfisser fajl tal-arkivju tal-format tar: il-formati kollha huma adattati għall-input f'pg_restore.

Pereżempju:

$ pg_dump -F c tecmintdb > tecmintdb.dump
OR
$ pg_dump -F t tecmintdb > tecmintdb.tar

Biex titfa 'l-output fil-format tal-output tad-direttorju, uża l-bandiera -f (li tintuża biex tispeċifika l-fajl tal-output) biex tispeċifika d-direttorju fil-mira minflok fajl. Id-direttorju li se jinħoloq minn pg_dump m'għandux jeżisti.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Biex tagħmel backup tad-databases kollha PostgreSQL, uża l-għodda pg_dumpall kif muri.

$ pg_dumpall > all_pg_dbs.sql

Tista' tirrestawra d-dump billi tuża psql kif muri.

$ pgsql -f all_pg_dbs.sql postgres

Ir-restawr ta' Database PostgreSQL

Biex tirrestawra database PostgreSQL, tista 'tuża l-utilitajiet psql jew pg_restore. psql jintuża biex jirrestawra fajls ta’ test maħluqa minn pg_dump filwaqt li pg_restore jintuża biex jirrestawra database PostgreSQL minn arkivju maħluq minn pg_dump f’wieħed mill-formati mhux ta’ test sempliċi (custom, tar, jew direttorju).

Hawn hu eżempju ta’ kif tirrestawra dump ta’ fajl b’test sempliċi:

$ psql tecmintdb < tecmintdb.sql

Kif issemma hawn fuq, dump b'format personalizzat mhuwiex script għal pgsql, għalhekk għandu jiġi restawrat b' pg_restore kif muri.

$ pg_restore -d tecmintdb tecmintdb.dump
OR
$ pg_restore -d tecmintdb tecmintdb.tar
OR
$ pg_restore -d tecmintdb tecmintdumpdir	

Backup ta' Databases Kbar ta' PostgreSQL

Jekk id-database li qed tagħmel backup hija kbira u trid tiġġenera fajl ta’ output pjuttost iżgħar, allura tista’ tħaddem dump kompressat fejn trid tiffiltra l-output ta’ pg_dump permezz ta’ għodda ta’ kompressjoni bħal gzip jew xi waħda mill-favoriti tiegħek:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Jekk id-database hija kbira ħafna, tista' tispiċċa b'mod parallel billi tarmi number_of_jobs tabelli fl-istess ħin billi tuża l-marka -j, kif muri.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Huwa importanti li wieħed jinnota li l-għażla tad-dump parallel tnaqqas il-ħin tad-dump, iżda min-naħa l-oħra, iżżid ukoll it-tagħbija fuq is-server tad-database.

Backup Remote PostgreSQL Databases

pg_dump hija għodda tal-klijent PostgreSQL regolari, tappoġġja operazzjonijiet fuq servers ta’ database remoti. Biex tispeċifika s-server tad-database remot pg_dump għandu jikkuntattja, uża l-għażliet tal-linja tal-kmand -h biex tispeċifika l-host remot u -p jispeċifika l-port remot li s-server tad-database qed jisma fuqu . Barra minn hekk, uża l-marka -U biex tispeċifika l-isem tar-rwol tad-database biex tikkonnettja bħala.

Ftakar li tissostitwixxi 10.10.20.10 u 5432 u tecmintdb bl-indirizz IP tal-host remot tiegħek jew l-isem tal-host, il-port tad-database u l-isem tad-database rispettivament.

$ pg_dump -U tecmint -h 10.10.20.10 -p 5432 tecmintdb > tecmintdb.sql

Żgura li l-utent li jgħaqqad mill-bogħod ikollu l-privileġġi meħtieġa biex jaċċessa d-database, u l-metodu xieraq ta 'awtentikazzjoni tad-database huwa kkonfigurat fuq is-server tad-database, inkella, ikollok żball bħal dak muri fil-screenshot li ġej.

Huwa wkoll possibbli li titfa 'database direttament minn server għal ieħor, uża l-utilitajiet pg_dump u psql kif muri.

$ pg_dump -U tecmint -h 10.10.20.10 tecmintdb | pqsl -U tecmint -h 10.10.20.30 tecmintdb

Auto Backup PostgreSQL Database Bl-Użu ta 'Xogħol Cron

Tista 'twettaq backups f'intervalli regolari billi tuża cron jobs. L-impjiegi Cron huma mezz użat komunement għall-iskedar ta 'diversi tipi ta' kompiti biex jaħdmu fuq server.

Tista 'tikkonfigura xogħol cron biex awtomat il-backup tad-database PostgreSQL kif ġej. Innota li għandek bżonn tmexxi l-kmandi li ġejjin bħala s-superuser PostgreSQL:

$ mkdir -p /srv/backups/databases

Sussegwentement, mexxi l-kmand li ġej biex teditja l-crontab biex iżżid xogħol cron ġdid.

$ crontab -e

Ikkopja u waħħal il-linja li ġejja fl-aħħar tal-crontab. Tista 'tuża kwalunkwe mill-formati ta' dump spjegati hawn fuq.

0 0 * * *  pg_dump  -U postgres tecmintdb > /srv/backups/postgres/tecmintdb.sql

Issejvja l-fajl u oħroġ.

Is-servizz cron awtomatikament jibda jaħdem dan ix-xogħol il-ġdid mingħajr bidu mill-ġdid. U dan ix-xogħol cron se jibda kuljum f'nofs il-lejl, huwa soluzzjoni minima għall-kompitu tal-backup.

Għal aktar informazzjoni dwar kif tiskeda l-impjiegi cron, ara: Kif Oħloq u Immaniġġja l-Impjiegi Cron fuq Linux

Dak hu għalissa! Hija idea tajba li tagħmel backup tad-dejta parti mir-rutina tal-ġestjoni tad-database tiegħek. Biex tilħaqna għal xi mistoqsijiet jew kummenti, uża l-formola ta' feedback hawn taħt. Għal aktar informazzjoni, ara l-paġni ta’ referenza pg_restore.