Jinsi ya Kuhifadhi nakala na Kurejesha Hifadhidata ya PostgreSQL


Katika mazingira ya uzalishaji, haijalishi hifadhidata yako ya PostgreSQL inaweza kuwa kubwa au ndogo kiasi gani, kurudi mara kwa mara ni kipengele muhimu cha usimamizi wa hifadhidata. Katika nakala hii, utajifunza jinsi ya kuweka nakala rudufu na kurejesha hifadhidata ya PostgreSQL.

Tunadhania kuwa tayari una usakinishaji unaofanya kazi wa mfumo wa hifadhidata wa PostgreSQL. Ikiwa sivyo, soma nakala zetu zifuatazo ili kusakinisha PostgreSQL kwenye usambazaji wako wa Linux.

  • Jinsi ya kusakinisha PostgreSQL na pgAdmin4 katika Ubuntu 20.04
  • Jinsi ya kusakinisha PostgreSQL na pgAdmin katika CentOS 8
  • Jinsi ya kusakinisha PostgreSQL na pgAdmin katika RHEL 8

Tuanze…

Hifadhi Hifadhidata Moja ya PostgreSQL

PostgreSQL hutoa pg_dump matumizi ili kukusaidia kuhifadhi hifadhidata. Inazalisha faili ya hifadhidata yenye amri za SQL katika umbizo ambalo linaweza kurejeshwa kwa urahisi katika siku zijazo.

Ili kuhifadhi nakala, hifadhidata ya PostgreSQL, anza kwa kuingia kwenye seva yako ya hifadhidata, kisha ubadilishe hadi akaunti ya mtumiaji ya Postgres, na uendeshe pg_dump kama ifuatavyo (badilisha tecmitdb na jina la hifadhidata unayotaka kuweka nakala rudufu) . Kwa chaguo-msingi, umbizo la towe ni faili ya hati ya SQL yenye maandishi wazi.

$ pg_dump tecmintdb > tecmintdb.sql

Pg_dump inasaidia umbizo zingine za towe pia. Unaweza kubainisha umbizo la towe kwa kutumia chaguo la -F, ambapo c inamaanisha faili ya kumbukumbu ya umbizo maalum, d inamaanisha hifadhi ya umbizo la saraka, na t inamaanisha faili ya kumbukumbu ya umbizo la tar: fomati zote zinafaa kuingizwa kwenye pg_restore.

Kwa mfano:

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

Ili kutupa pato katika umbizo la towe la saraka, tumia alama ya -f (ambayo hutumiwa kubainisha faili ya towe) ili kubainisha saraka lengwa badala ya faili. Saraka ambayo itaundwa na pg_dump lazima isiwepo.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

Ili kuhifadhi hifadhidata zote za PostgreSQL, tumia pg_dumpall zana kama inavyoonyeshwa.

$ pg_dumpall > all_pg_dbs.sql

Unaweza kurejesha utupaji kwa kutumia psql kama inavyoonyeshwa.

$ pgsql -f all_pg_dbs.sql postgres

Kurejesha Hifadhidata ya PostgreSQL

Ili kurejesha hifadhidata ya PostgreSQL, unaweza kutumia huduma za psql au pg_restore. psql inatumika kurejesha faili za maandishi zilizoundwa na pg_dump                                                                         database  ya PostgreSQL  kutoka kwenye kumbukumbu iliyoundwa na pg_dump

Hapa kuna mfano wa jinsi ya kurejesha utupaji wa faili ya maandishi wazi:

$ psql tecmintdb < tecmintdb.sql

Kama ilivyotajwa hapo juu, utupaji wa umbizo maalum si hati ya pgsql, kwa hivyo ni lazima urejeshwe kwa pg_restore kama inavyoonyeshwa.

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

Hifadhi Hifadhidata Kubwa za PostgreSQL

Ikiwa hifadhidata unayohifadhi ni kubwa na unataka kutoa faili ndogo ya pato, basi unaweza kuendesha utupaji ulioshinikizwa ambapo lazima uchuje matokeo ya pg_dump kupitia zana ya kushinikiza kama vile gzip au yoyote unayopenda:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

Ikiwa hifadhidata ni kubwa sana, unaweza kutupa sambamba kwa kutupa majedwali ya number_of_jobs kwa wakati mmoja kwa kutumia alama ya -j, kama inavyoonyeshwa.

$ pg_dump -F d -j 5 -f tecmintdumpdir

Ni muhimu kutambua kwamba chaguo la utupaji sambamba hupunguza muda wa kutupa, lakini kwa upande mwingine, pia huongeza mzigo kwenye seva ya database.

Hifadhi Hifadhidata ya Mbali ya PostgreSQL

pg_dump ni zana ya mteja ya PostgreSQL ya kawaida, inasaidia utendakazi kwenye seva za hifadhidata za mbali. Ili kubainisha seva ya hifadhidata ya mbali ambayo pg_dump inapaswa kuwasiliana nayo, tumia chaguo za mstari wa amri -h kubainisha seva pangishi ya mbali na -p inabainisha mlango wa mbali ambao seva ya hifadhidata inasikiliza. . Kando na hilo, tumia alama ya -U ili kubainisha jina la jukumu la hifadhidata ili kuunganisha kama.

Kumbuka kubadilisha 10.10.20.10 na 5432 na tecmintdb na anwani yako ya IP ya seva pangishi ya mbali au jina la mpangishaji, kituo cha hifadhidata, na jina la hifadhidata mtawalia.

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

Hakikisha kwamba mtumiaji anayeunganisha kwa mbali ana haki zinazohitajika kufikia hifadhidata, na mbinu inayofaa ya uthibitishaji wa hifadhidata imesanidiwa kwenye seva ya hifadhidata, vinginevyo, utapata hitilafu kama ile iliyoonyeshwa kwenye skrini ifuatayo.

Inawezekana pia kutupa hifadhidata moja kwa moja kutoka kwa seva moja hadi nyingine, tumia huduma za pg_dump na psql kama inavyoonyeshwa.

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

Hifadhi Nakala Kiotomatiki Hifadhidata ya PostgreSQL Kwa Kutumia Kazi ya Cron

Unaweza kufanya chelezo kwa vipindi vya kawaida kwa kutumia kazi za cron. Kazi za Cron ni njia inayotumika sana kuratibu aina mbali mbali za kazi za kufanya kazi kwenye seva.

Unaweza kusanidi kazi ya cron ili kugeuza nakala rudufu ya hifadhidata ya PostgreSQL kama ifuatavyo. Kumbuka kuwa unahitaji kutekeleza amri zifuatazo kama mtumiaji mkuu wa PostgreSQL:

$ mkdir -p /srv/backups/databases

Ifuatayo, endesha amri ifuatayo ili kuhariri crontab ili kuongeza kazi mpya ya cron.

$ crontab -e

Nakili na ubandike mstari ufuatao mwishoni mwa crontab. Unaweza kutumia miundo yoyote ya utupaji iliyoelezwa hapo juu.

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

Hifadhi faili na uondoke.

Huduma ya cron itaanza kufanya kazi hii mpya kiotomatiki bila kuanzisha upya. Na kazi hii ya cron itaendesha kila siku usiku wa manane, ni suluhisho la chini kwa kazi ya chelezo.

Kwa habari zaidi juu ya jinsi ya kupanga kazi za cron, ona: Jinsi ya Kuunda na Kusimamia Kazi za Cron kwenye Linux

Ni hayo kwa sasa! Ni wazo zuri kufanya kuhifadhi nakala kuwa sehemu ya utaratibu wako wa usimamizi wa hifadhidata. Ili kuwasiliana nasi kwa maswali au maoni yoyote, tumia fomu ya maoni iliyo hapa chini. Kwa habari zaidi, angalia pg_rejesha kurasa za marejeleo.