PostgreSQL డేటాబేస్ను ఎలా బ్యాకప్ చేయాలి మరియు పునరుద్ధరించాలి


ఉత్పత్తి వాతావరణంలో, మీ పోస్ట్uగ్రెస్uస్క్యూల్ డేటాబేస్ ఎంత పెద్దది లేదా చిన్నది అయినా, డేటాబేస్ నిర్వహణకు రెగ్యులర్ బ్యాక్ తప్పనిసరి అంశం. ఈ వ్యాసంలో, మీరు పోస్ట్uగ్రెస్uస్క్యూల్ డేటాబేస్ను ఎలా బ్యాకప్ చేయాలో మరియు పునరుద్ధరించాలో నేర్చుకుంటారు.

మీరు ఇప్పటికే PostgreSQL డేటాబేస్ సిస్టమ్ యొక్క పని సంస్థాపనను కలిగి ఉన్నారని మేము అనుకుంటాము. కాకపోతే, మీ Linux పంపిణీలో PostgreSQL ను వ్యవస్థాపించడానికి మా క్రింది కథనాలను చదవండి.

  • ఉబుంటు 20.04 లో పోస్ట్uగ్రెస్uస్క్యూల్ మరియు పిజిఅడ్మిన్ 4 ని ఎలా ఇన్uస్టాల్ చేయాలి
  • సెంటొస్ 8 లో పోస్ట్uగ్రెస్uస్క్యూల్ మరియు పిజిఅడ్మిన్uలను ఎలా ఇన్uస్టాల్ చేయాలి
  • RHEL 8 లో PostgreSQL మరియు pgAdmin ని ఎలా ఇన్uస్టాల్ చేయాలి

ప్రారంభిద్దాం…

ఒకే పోస్ట్uగ్రెస్uస్క్యూల్ డేటాబేస్uను బ్యాకప్ చేయండి

డేటాబేస్లను బ్యాకప్ చేయడంలో మీకు సహాయపడటానికి PostgreSQL pg_dump యుటిలిటీని అందిస్తుంది. ఇది భవిష్యత్తులో సులభంగా పునరుద్ధరించగలిగే ఫార్మాట్uలో SQL ఆదేశాలతో డేటాబేస్ ఫైల్uను ఉత్పత్తి చేస్తుంది.

బ్యాకప్ చేయడానికి, పోస్ట్uగ్రెస్uస్క్యూల్ డేటాబేస్, మీ డేటాబేస్ సర్వర్uలోకి లాగిన్ అవ్వడం ద్వారా ప్రారంభించండి, ఆపై పోస్ట్uగ్రెస్ యూజర్ ఖాతాకు మారండి మరియు pg_dump ను ఈ క్రింది విధంగా అమలు చేయండి ( tecmintdb ను మీరు బ్యాకప్ చేయాలనుకుంటున్న డేటాబేస్ పేరుతో భర్తీ చేయండి) . అప్రమేయంగా, అవుట్పుట్ ఫార్మాట్ సాదా-టెక్స్ట్ SQL స్క్రిప్ట్ ఫైల్.

$ pg_dump tecmintdb > tecmintdb.sql

Pg_dump ఇతర అవుట్పుట్ ఫార్మాట్లకు కూడా మద్దతు ఇస్తుంది. మీరు -F ఎంపికను ఉపయోగించి అవుట్పుట్ ఆకృతిని పేర్కొనవచ్చు, ఇక్కడ c అంటే కస్టమ్ ఫార్మాట్ ఆర్కైవ్ ఫైల్, d అంటే డైరెక్టరీ ఫార్మాట్ ఆర్కైవ్ మరియు <కోడ్ > టి అంటే తారు ఫార్మాట్ ఆర్కైవ్ ఫైల్: అన్ని ఫార్మాట్uలు pg_restore లోకి ఇన్పుట్ చేయడానికి అనుకూలంగా ఉంటాయి.

ఉదాహరణకి:

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

డైరెక్టరీ అవుట్పుట్ ఫార్మాట్లో అవుట్పుట్ను డంప్ చేయడానికి, ఫైల్కు బదులుగా లక్ష్య డైరెక్టరీని పేర్కొనడానికి -f ఫ్లాగ్ (అవుట్పుట్ ఫైల్ను పేర్కొనడానికి ఉపయోగిస్తారు) ఉపయోగించండి. Pg_dump చేత సృష్టించబడే డైరెక్టరీ ఉనికిలో ఉండకూడదు.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

అన్ని PostgreSQL డేటాబేస్uలను బ్యాకప్ చేయడానికి, చూపిన విధంగా pg_dumpall సాధనాన్ని ఉపయోగించండి.

$ pg_dumpall > all_pg_dbs.sql

చూపిన విధంగా మీరు psql ఉపయోగించి డంప్uను పునరుద్ధరించవచ్చు.

$ pgsql -f all_pg_dbs.sql postgres

PostgreSQL డేటాబేస్ను పునరుద్ధరిస్తోంది

PostgreSQL డేటాబేస్ను పునరుద్ధరించడానికి, మీరు psql లేదా pg_restore యుటిలిటీలను ఉపయోగించవచ్చు. pg_dump చేత సృష్టించబడిన టెక్స్ట్ ఫైళ్ళను పునరుద్ధరించడానికి psql ఉపయోగించబడుతుంది, అయితే pg_restore ఒక పోస్ట్uగ్రెస్uస్క్యూల్ డేటాబేస్ను pg_dump చేత సృష్టించబడిన ఆర్కైవ్ నుండి సాదా-టెక్స్ట్ కాని ఫార్మాట్లలో (కస్టమ్, తారు లేదా డైరెక్టరీ) పునరుద్ధరించడానికి ఉపయోగించబడుతుంది.

సాదా టెక్స్ట్ ఫైల్ డంప్uను ఎలా పునరుద్ధరించాలో ఇక్కడ ఒక ఉదాహరణ:

$ psql tecmintdb < tecmintdb.sql

పైన చెప్పినట్లుగా, కస్టమ్-ఫార్మాట్ డంప్ pgsql కోసం స్క్రిప్ట్ కాదు, కాబట్టి ఇది చూపిన విధంగా pg_restore తో పునరుద్ధరించబడాలి.

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

బ్యాకప్ పెద్ద PostgreSQL డేటాబేస్

మీరు బ్యాకప్ చేస్తున్న డేటాబేస్ పెద్దది మరియు మీరు చాలా చిన్న అవుట్పుట్ ఫైల్ను ఉత్పత్తి చేయాలనుకుంటే, అప్పుడు మీరు కంప్రెస్డ్ డంప్ ను రన్ చేయవచ్చు, అక్కడ మీరు ggip లేదా మీకు ఇష్టమైన ఏదైనా కుదింపు సాధనం ద్వారా pg_dump యొక్క అవుట్పుట్ను ఫిల్టర్ చేయాలి:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

డేటాబేస్ చాలా పెద్దదిగా ఉంటే, మీరు చూపిన విధంగా -j ఫ్లాగ్uను ఉపయోగించి ఏకకాలంలో number_of_jobs పట్టికలను డంప్ చేయడం ద్వారా సమాంతరంగా డంప్ చేయవచ్చు.

$ pg_dump -F d -j 5 -f tecmintdumpdir

సమాంతర డంప్ ఎంపిక డంప్ యొక్క సమయాన్ని తగ్గిస్తుందని గమనించడం ముఖ్యం, కానీ మరోవైపు, ఇది డేటాబేస్ సర్వర్uలో లోడ్uను కూడా పెంచుతుంది.

బ్యాకప్ రిమోట్ PostgreSQL డేటాబేస్

pg_dump ఒక సాధారణ PostgreSQL క్లయింట్ సాధనం, ఇది రిమోట్ డేటాబేస్ సర్వర్లలో కార్యకలాపాలకు మద్దతు ఇస్తుంది. రిమోట్ డేటాబేస్ సర్వర్ pg_dump ని సంప్రదించాలని పేర్కొనడానికి, రిమోట్ హోస్ట్uను పేర్కొనడానికి కమాండ్-లైన్ ఎంపికలను -h ఉపయోగించండి మరియు -p డేటాబేస్ సర్వర్ వింటున్న రిమోట్ పోర్ట్uను నిర్దేశిస్తుంది. . కాకుండా, కనెక్ట్ చేయడానికి డేటాబేస్ పాత్ర పేరును పేర్కొనడానికి -U ఫ్లాగ్uను ఉపయోగించండి.

10.10.20.10 మరియు 5432 మరియు tecmintdb లను మీ రిమోట్ హోస్ట్ IP చిరునామా లేదా హోస్ట్ పేరు, డేటాబేస్ పోర్ట్ మరియు డేటాబేస్ పేరుతో భర్తీ చేయాలని గుర్తుంచుకోండి.

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

రిమోట్uగా కనెక్ట్ చేసే వినియోగదారుకు డేటాబేస్ను యాక్సెస్ చేయడానికి అవసరమైన అధికారాలు ఉన్నాయని నిర్ధారించుకోండి మరియు తగిన డేటాబేస్ ప్రామాణీకరణ పద్ధతి డేటాబేస్ సర్వర్uలో కాన్ఫిగర్ చేయబడింది, లేకపోతే, మీరు ఈ క్రింది స్క్రీన్uషాట్uలో చూపినట్లుగా లోపం పొందుతారు.

డేటాబేస్ను ఒక సర్వర్ నుండి మరొక సర్వర్కు నేరుగా డంప్ చేయడం, చూపిన విధంగా pg_dump మరియు psql యుటిలిటీలను ఉపయోగించడం కూడా సాధ్యమే.

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

క్రాన్ జాబ్ ఉపయోగించి ఆటో బ్యాకప్ పోస్ట్uగ్రెస్uస్క్యూల్ డేటాబేస్

క్రాన్ జాబ్స్ ఉపయోగించి మీరు క్రమమైన వ్యవధిలో బ్యాకప్ చేయవచ్చు. క్రాన్ ఉద్యోగాలు సర్వర్uలో అమలు చేయడానికి వివిధ రకాల పనులను షెడ్యూల్ చేయడానికి సాధారణంగా ఉపయోగించే సాధనం.

PostgreSQL డేటాబేస్ బ్యాకప్uను ఈ క్రింది విధంగా ఆటోమేట్ చేయడానికి మీరు క్రాన్ జాబ్uను కాన్ఫిగర్ చేయవచ్చు. మీరు ఈ క్రింది ఆదేశాలను పోస్ట్uగ్రెస్uస్క్యూల్ సూపర్uయూజర్uగా అమలు చేయాల్సిన అవసరం ఉందని గమనించండి:

$ mkdir -p /srv/backups/databases

తరువాత, క్రొత్త క్రాన్ జాబ్uను జోడించడానికి క్రోంటాబ్uను సవరించడానికి క్రింది ఆదేశాన్ని అమలు చేయండి.

$ crontab -e

క్రోంటాబ్ చివరిలో ఈ క్రింది పంక్తిని కాపీ చేసి అతికించండి. మీరు పైన వివరించిన డంప్ ఫార్మాట్లలో దేనినైనా ఉపయోగించవచ్చు.

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

ఫైల్ను సేవ్ చేసి నిష్క్రమించండి.

పున art ప్రారంభం లేకుండా క్రాన్ సేవ స్వయంచాలకంగా ఈ క్రొత్త ఉద్యోగాన్ని అమలు చేస్తుంది. మరియు ఈ క్రాన్ ఉద్యోగం ప్రతి రోజు అర్ధరాత్రి నడుస్తుంది, ఇది బ్యాకప్ పనికి కనీస పరిష్కారం.

క్రాన్ ఉద్యోగాలను ఎలా షెడ్యూల్ చేయాలో మరింత సమాచారం కోసం, చూడండి: Linux లో క్రాన్ ఉద్యోగాలను ఎలా సృష్టించాలి మరియు నిర్వహించాలి

ప్రస్తుతానికి అది అంతే! డేటాను బ్యాకప్ చేయడం మీ డేటాబేస్ నిర్వహణ దినచర్యలో భాగం చేయడం మంచి ఆలోచన. ఏవైనా ప్రశ్నలు లేదా వ్యాఖ్యల కోసం మమ్మల్ని చేరుకోవడానికి, దిగువ అభిప్రాయ ఫారమ్uను ఉపయోగించండి. మరింత సమాచారం కోసం, pg_restore సూచన పేజీలను చూడండి.