Hvernig á að taka öryggisafrit og endurheimta PostgreSQL gagnagrunn


Í framleiðsluumhverfi, sama hversu stór eða lítill PostgreSQL gagnagrunnurinn þinn kann að vera, er reglulegt bak ómissandi þáttur í gagnagrunnsstjórnun. Í þessari grein muntu læra hvernig á að taka öryggisafrit og endurheimta PostgreSQL gagnagrunn.

Við gerum ráð fyrir að þú sért nú þegar með virka uppsetningu á PostgreSQL gagnagrunnskerfinu. Ef ekki, lestu eftirfarandi greinar okkar til að setja upp PostgreSQL á Linux dreifingunni þinni.

  • Hvernig á að setja upp PostgreSQL og pgAdmin4 í Ubuntu 20.04
  • Hvernig á að setja upp PostgreSQL og pgAdmin í CentOS 8
  • Hvernig á að setja upp PostgreSQL og pgAdmin í RHEL 8

Byrjum…

Taktu öryggisafrit af einum PostgreSQL gagnagrunni

PostgreSQL veitir pg_dump tólið til að hjálpa þér að taka öryggisafrit af gagnagrunnum. Það býr til gagnagrunnsskrá með SQL skipunum á sniði sem auðvelt er að endurheimta í framtíðinni.

Til að taka öryggisafrit af PostgreSQL gagnagrunni, byrjaðu á því að skrá þig inn á gagnagrunnsþjóninn þinn, skiptu síðan yfir í Postgres notandareikninginn og keyrðu pg_dump sem hér segir (skipta um tecmintdb fyrir nafni gagnagrunnsins sem þú vilt taka afrit af) . Sjálfgefið er úttakssniðið SQL skriftuskrá með einföldum texta.

$ pg_dump tecmintdb > tecmintdb.sql

Pg_dump styður einnig önnur úttakssnið. Þú getur tilgreint úttakssniðið með því að nota -F valmöguleikann, þar sem c þýðir skjalasafn á sérsniðnu sniði, d þýðir skjalasafn á skráarsniði og t þýðir skjalasafn á tar-sniði: öll snið henta til inntaks í pg_restore.

Til dæmis:

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

Til að henda úttakinu í skráarúttakssniðið, notaðu -f fánann (sem er notaður til að tilgreina úttaksskrána) til að tilgreina markskrána í stað skráar. Skráin sem verður búin til af pg_dump má ekki vera til.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Til að taka öryggisafrit af öllum PostgreSQL gagnagrunnum, notaðu pg_dumpall tólið eins og sýnt er.

$ pg_dumpall > all_pg_dbs.sql

Þú getur endurheimt dumpið með því að nota psql eins og sýnt er.

$ pgsql -f all_pg_dbs.sql postgres

Endurheimtir PostgreSQL gagnagrunn

Til að endurheimta PostgreSQL gagnagrunn geturðu notað psql eða pg_restore tólin. psql er notað til að endurheimta textaskrár búnar til af pg_dump en pg_restore er notað til að endurheimta PostgreSQL gagnagrunn úr skjalasafni sem búið er til af pg_dump á einu af óvenjulegu textasniðunum (sérsniðið, tar eða skráasafn).

Hér er dæmi um hvernig á að endurheimta textaskrárafrit:

$ psql tecmintdb < tecmintdb.sql

Eins og getið er hér að ofan er sérsniðið dump ekki skrifta fyrir pgsql, svo það verður að endurheimta það með pg_restore eins og sýnt er.

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

Taktu öryggisafrit af stórum PostgreSQL gagnagrunnum

Ef gagnagrunnurinn sem þú tekur afrit af er stór og þú vilt búa til frekar minni úttaksskrá, þá geturðu keyrt þjappað dump þar sem þú þarft að sía úttakið af pg_dump í gegnum þjöppunartól eins og gzip eða eitthvað af uppáhalds:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Ef gagnagrunnurinn er mjög stór er hægt að dumpa samhliða með því að henda fjölda_af_störfum töflum samtímis með því að nota -j fána, eins og sýnt er.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Það er mikilvægt að hafa í huga að samhliða dump valkosturinn styttir tíma dumpsins, en á hinn bóginn eykur það einnig álagið á gagnagrunnsþjóninn.

Afrit af fjarlægum PostgreSQL gagnagrunnum

pg_dump er venjulegt PostgreSQL viðskiptavinaverkfæri, það styður aðgerðir á ytri gagnagrunnsþjónum. Til að tilgreina ytri gagnagrunnsþjóninn pg_dump ætti að hafa samband við, notaðu skipanalínuvalkostina -h til að tilgreina ytri hýsilinn og -p tilgreinir ytri gáttina sem gagnagrunnsþjónninn hlustar á . Að auki, notaðu -U fánann til að tilgreina hlutverk gagnagrunnsins sem á að tengjast sem.

Mundu að skipta út 10.10.20.10 og 5432 og tecmintdb fyrir IP-tölu ytri hýsilsins þíns eða hýsingarheiti, gagnagrunnsgátt og nafn gagnagrunns í sömu röð.

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

Gakktu úr skugga um að notandinn sem tengist fjartengingu hafi nauðsynleg réttindi til að fá aðgang að gagnagrunninum og viðeigandi auðkenningaraðferð gagnagrunnsins sé stillt á gagnagrunnsþjóninum, annars færðu villu eins og þá sem sýnd er á eftirfarandi skjámynd.

Það er líka hægt að dumpa gagnagrunni beint frá einum netþjóni á annan, notaðu pg_dump og psql tólin eins og sýnt er.

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

Sjálfvirk afritun PostgreSQL gagnagrunns með því að nota Cron starf

Þú getur framkvæmt afrit með reglulegu millibili með því að nota cron störf. Cron störf eru algeng leið til að skipuleggja ýmiss konar verkefni til að keyra á netþjóni.

Þú getur stillt cron starf til að gera sjálfvirkan öryggisafrit af PostgreSQL gagnagrunni eins og hér segir. Athugaðu að þú þarft að keyra eftirfarandi skipanir sem PostgreSQL ofurnotandi:

$ mkdir -p /srv/backups/databases

Næst skaltu keyra eftirfarandi skipun til að breyta crontab til að bæta við nýju cron starfi.

$ crontab -e

Afritaðu og límdu eftirfarandi línu í lok crontab. Þú getur notað hvaða dump snið sem er útskýrt hér að ofan.

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

Vistaðu skrána og hættu.

Cron þjónustan mun sjálfkrafa byrja að keyra þetta nýja verk án endurræsingar. Og þetta cron starf mun keyra á hverjum degi á miðnætti, það er lágmarkslausn á öryggisafritunarverkefninu.

Fyrir frekari upplýsingar um hvernig á að skipuleggja cron störf, sjá: Hvernig á að búa til og stjórna Cron störf á Linux

Það er það í bili! Það er góð hugmynd að gera öryggisafrit af gögnum að hluta af gagnagrunnsstjórnunarrútínu þinni. Til að ná í okkur fyrir spurningar eða athugasemdir, notaðu athugasemdareyðublaðið hér að neðan. Fyrir frekari upplýsingar, sjá pg_restore tilvísunarsíður.