ഒരു PostgreSQL ഡാറ്റാബേസ് എങ്ങനെ ബാക്കപ്പ് ചെയ്ത് പുനഃസ്ഥാപിക്കാം


ഒരു പ്രൊഡക്ഷൻ പരിതസ്ഥിതിയിൽ, നിങ്ങളുടെ PostgreSQL ഡാറ്റാബേസ് എത്ര വലുതായാലും ചെറുതായാലും, ഡാറ്റാബേസ് മാനേജ്മെന്റിന്റെ ഒരു പ്രധാന വശമാണ് റെഗുലർ ബാക്ക്. ഈ ലേഖനത്തിൽ, ഒരു PostgreSQL ഡാറ്റാബേസ് എങ്ങനെ ബാക്കപ്പ് ചെയ്യാമെന്നും പുനഃസ്ഥാപിക്കാമെന്നും നിങ്ങൾ പഠിക്കും.

PostgreSQL ഡാറ്റാബേസ് സിസ്റ്റത്തിന്റെ പ്രവർത്തന ഇൻസ്റ്റാളേഷൻ നിങ്ങൾക്ക് ഇതിനകം ഉണ്ടെന്ന് ഞങ്ങൾ അനുമാനിക്കുന്നു. ഇല്ലെങ്കിൽ, നിങ്ങളുടെ Linux വിതരണത്തിൽ PostgreSQL ഇൻസ്റ്റാൾ ചെയ്യാൻ ഞങ്ങളുടെ ഇനിപ്പറയുന്ന ലേഖനങ്ങൾ വായിക്കുക.

  • ഉബുണ്ടു 20.04-ൽ PostgreSQL, pgAdmin4 എന്നിവ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  • CentOS 8-ൽ PostgreSQL, pgAdmin എന്നിവ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം
  • RHEL 8-ൽ PostgreSQL, pgAdmin എന്നിവ എങ്ങനെ ഇൻസ്റ്റാൾ ചെയ്യാം

നമുക്ക് തുടങ്ങാം…

ഒരൊറ്റ PostgreSQL ഡാറ്റാബേസ് ബാക്കപ്പ് ചെയ്യുക

ഡാറ്റാബേസുകൾ ബാക്കപ്പ് ചെയ്യാൻ നിങ്ങളെ സഹായിക്കുന്നതിന് PostgreSQL pg_dump യൂട്ടിലിറ്റി നൽകുന്നു. ഭാവിയിൽ എളുപ്പത്തിൽ പുനഃസ്ഥാപിക്കാൻ കഴിയുന്ന ഫോർമാറ്റിൽ SQL കമാൻഡുകൾ ഉള്ള ഒരു ഡാറ്റാബേസ് ഫയൽ ഇത് സൃഷ്ടിക്കുന്നു.

ബാക്കപ്പ് ചെയ്യുന്നതിന്, ഒരു PostgreSQL ഡാറ്റാബേസ്, നിങ്ങളുടെ ഡാറ്റാബേസ് സെർവറിൽ ലോഗിൻ ചെയ്തുകൊണ്ട് ആരംഭിക്കുക, തുടർന്ന് Postgres ഉപയോക്തൃ അക്കൗണ്ടിലേക്ക് മാറുക, തുടർന്ന് ഇനിപ്പറയുന്ന രീതിയിൽ pg_dump പ്രവർത്തിപ്പിക്കുക (നിങ്ങൾ ബാക്കപ്പ് ചെയ്യാൻ ആഗ്രഹിക്കുന്ന ഡാറ്റാബേസിന്റെ പേര് tecmintdb മാറ്റിസ്ഥാപിക്കുക) . സ്ഥിരസ്ഥിതിയായി, ഔട്ട്പുട്ട് ഫോർമാറ്റ് ഒരു പ്ലെയിൻ-ടെക്സ്റ്റ് SQL സ്ക്രിപ്റ്റ് ഫയലാണ്.

$ pg_dump tecmintdb > tecmintdb.sql

മറ്റ് ഔട്ട്പുട്ട് ഫോർമാറ്റുകളും pg_dump പിന്തുണയ്ക്കുന്നു. -F ഓപ്ഷൻ ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഔട്ട്uപുട്ട് ഫോർമാറ്റ് വ്യക്തമാക്കാൻ കഴിയും, ഇവിടെ c എന്നാൽ ഇഷ്ടാനുസൃത ഫോർമാറ്റ് ആർക്കൈവ് ഫയൽ, d എന്നാൽ ഡയറക്ടറി ഫോർമാറ്റ് ആർക്കൈവ്, t എന്നാൽ ടാർ ഫോർമാറ്റ് ആർക്കൈവ് ഫയൽ എന്നാണ് അർത്ഥമാക്കുന്നത്: എല്ലാ ഫോർമാറ്റുകളും pg_restore-ലേക്ക് ഇൻപുട്ട് ചെയ്യാൻ അനുയോജ്യമാണ്.

ഉദാഹരണത്തിന്:

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

ഡയറക്uടറി ഔട്ട്uപുട്ട് ഫോർമാറ്റിൽ ഔട്ട്uപുട്ട് ഡംപ് ചെയ്യുന്നതിന്, ഒരു ഫയലിന് പകരം ടാർഗെറ്റ് ഡയറക്uടറി വ്യക്തമാക്കുന്നതിന് -f ഫ്ലാഗ് (ഔട്ട്uപുട്ട് ഫയൽ വ്യക്തമാക്കാൻ ഇത് ഉപയോഗിക്കുന്നു) ഉപയോഗിക്കുക. pg_dump സൃഷ്ടിക്കുന്ന ഡയറക്ടറി നിലവിലില്ല.

$ pg_dump -F d tecmintdb -f tecmintdumpdir	

എല്ലാ PostgreSQL ഡാറ്റാബേസുകളും ബാക്കപ്പ് ചെയ്യുന്നതിന്, കാണിച്ചിരിക്കുന്നതുപോലെ pg_dumpal ടൂൾ ഉപയോഗിക്കുക.

$ pg_dumpall > all_pg_dbs.sql

കാണിച്ചിരിക്കുന്നതുപോലെ psql ഉപയോഗിച്ച് നിങ്ങൾക്ക് ഡംപ് പുനഃസ്ഥാപിക്കാം.

$ pgsql -f all_pg_dbs.sql postgres

ഒരു PostgreSQL ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കുന്നു

ഒരു PostgreSQL ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കുന്നതിന്, നിങ്ങൾക്ക് psql അല്ലെങ്കിൽ pg_restore യൂട്ടിലിറ്റികൾ ഉപയോഗിക്കാം. pg_dump സൃഷ്uടിച്ച ടെക്uസ്uറ്റ് ഫയലുകൾ പുനഃസ്ഥാപിക്കാൻ psql ഉപയോഗിക്കുന്നു, അതേസമയം pg_dump സൃഷ്uടിച്ച ഒരു ആർക്കൈവിൽ നിന്ന് ഒരു PostgreSQL ഡാറ്റാബേസ് പുനഃസ്ഥാപിക്കാൻ pg_restore ഉപയോഗിക്കുന്നു.

ഒരു പ്ലെയിൻ ടെക്സ്റ്റ് ഫയൽ ഡംപ് എങ്ങനെ പുനഃസ്ഥാപിക്കാം എന്നതിന്റെ ഒരു ഉദാഹരണം ഇതാ:

$ psql tecmintdb < tecmintdb.sql

മുകളിൽ സൂചിപ്പിച്ചതുപോലെ, ഒരു ഇഷ്uടാനുസൃത-ഫോർമാറ്റ് ഡംപ് pgsql-നുള്ള സ്uക്രിപ്റ്റ് അല്ല, അതിനാൽ അത് കാണിച്ചിരിക്കുന്നതുപോലെ pg_restore ഉപയോഗിച്ച് പുനഃസ്ഥാപിക്കേണ്ടതുണ്ട്.

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

വലിയ PostgreSQL ഡാറ്റാബേസുകൾ ബാക്കപ്പ് ചെയ്യുക

നിങ്ങൾ ബാക്കപ്പ് ചെയ്യുന്ന ഡാറ്റാബേസ് വലുതും വളരെ ചെറിയ ഒരു ഔട്ട്uപുട്ട് ഫയൽ ജനറേറ്റ് ചെയ്യാനും നിങ്ങൾ ആഗ്രഹിക്കുന്നുവെങ്കിൽ, നിങ്ങൾക്ക് ഒരു കംപ്രസ് ചെയ്uത ഡംപ് പ്രവർത്തിപ്പിക്കാൻ കഴിയും, അവിടെ നിങ്ങൾക്ക് pg_dump-ന്റെ ഔട്ട്uപുട്ട് gzip അല്ലെങ്കിൽ നിങ്ങളുടെ പ്രിയപ്പെട്ട ഏതെങ്കിലും കംപ്രഷൻ ടൂൾ വഴി ഫിൽട്ടർ ചെയ്യണം:

$ pg_dump tecmintdb | gzip > tecmintdb.gz

ഡാറ്റാബേസ് വളരെ വലുതാണെങ്കിൽ, കാണിച്ചിരിക്കുന്നതുപോലെ, -j ഫ്ലാഗ് ഉപയോഗിച്ച് ഒരേസമയം number_of_jobs പട്ടികകൾ ഡംപ് ചെയ്തുകൊണ്ട് നിങ്ങൾക്ക് സമാന്തരമായി ഡംപ് ചെയ്യാം.

$ pg_dump -F d -j 5 -f tecmintdumpdir

പാരലൽ ഡംപ് ഓപ്ഷൻ ഡംപിന്റെ സമയം കുറയ്ക്കുന്നു എന്നത് ശ്രദ്ധിക്കേണ്ടതാണ്, എന്നാൽ മറുവശത്ത്, ഇത് ഡാറ്റാബേസ് സെർവറിലെ ലോഡ് വർദ്ധിപ്പിക്കുന്നു.

റിമോട്ട് PostgreSQL ഡാറ്റാബേസുകൾ ബാക്കപ്പ് ചെയ്യുക

pg_dump ഒരു സാധാരണ PostgreSQL ക്ലയന്റ് ടൂളാണ്, ഇത് റിമോട്ട് ഡാറ്റാബേസ് സെർവറുകളിലെ പ്രവർത്തനങ്ങളെ പിന്തുണയ്ക്കുന്നു. ബന്ധപ്പെടേണ്ട റിമോട്ട് ഡാറ്റാബേസ് സെർവർ pg_dump വ്യക്തമാക്കാൻ, റിമോട്ട് ഹോസ്റ്റ് വ്യക്തമാക്കാൻ കമാൻഡ്-ലൈൻ ഓപ്ഷനുകൾ -h ഉപയോഗിക്കുക -p  ഡാറ്റാബേസ് സെർവർ ശ്രവിക്കുന്ന റിമോട്ട് പോർട്ട് വ്യക്തമാക്കുന്നു. . ഇതുകൂടാതെ, കണക്റ്റുചെയ്യുന്നതിന് ഡാറ്റാബേസ് റോൾ നാമം വ്യക്തമാക്കുന്നതിന് -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ക്രീൻഷോട്ടിൽ കാണിച്ചിരിക്കുന്നതുപോലുള്ള ഒരു പിശക് നിങ്ങൾക്ക് ലഭിക്കും.

ഒരു സെർവറിൽ നിന്ന് മറ്റൊന്നിലേക്ക് നേരിട്ട് ഒരു ഡാറ്റാബേസ് ഡംപ് ചെയ്യാനും കഴിയും, കാണിച്ചിരിക്കുന്നതുപോലെ pg_dump, psql യൂട്ടിലിറ്റികൾ ഉപയോഗിക്കുക.

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

ക്രോൺ ജോബ് ഉപയോഗിച്ച് PostgreSQL ഡാറ്റാബേസ് യാന്ത്രിക ബാക്കപ്പ്

ക്രോൺ ജോലികൾ ഉപയോഗിച്ച് നിങ്ങൾക്ക് കൃത്യമായ ഇടവേളകളിൽ ബാക്കപ്പുകൾ നടത്താം. ഒരു സെർവറിൽ പ്രവർത്തിക്കുന്നതിന് വിവിധ തരത്തിലുള്ള ടാസ്uക്കുകൾ ഷെഡ്യൂൾ ചെയ്യുന്നതിന് സാധാരണയായി ഉപയോഗിക്കുന്ന ഒരു മാർഗമാണ് ക്രോൺ ജോലികൾ.

PostgreSQL ഡാറ്റാബേസ് ബാക്കപ്പ് ഓട്ടോമേറ്റ് ചെയ്യാൻ നിങ്ങൾക്ക് ഒരു ക്രോൺ ജോബ് കോൺഫിഗർ ചെയ്യാം. PostgreSQL സൂപ്പർ യൂസറായി നിങ്ങൾ ഇനിപ്പറയുന്ന കമാൻഡുകൾ പ്രവർത്തിപ്പിക്കേണ്ടതുണ്ടെന്ന കാര്യം ശ്രദ്ധിക്കുക:

$ mkdir -p /srv/backups/databases

അടുത്തതായി, ഒരു പുതിയ ക്രോൺ ജോബ് ചേർക്കുന്നതിന് ക്രോണ്ടാബ് എഡിറ്റുചെയ്യുന്നതിന് ഇനിപ്പറയുന്ന കമാൻഡ് പ്രവർത്തിപ്പിക്കുക.

$ crontab -e

ക്രോണ്ടാബിന്റെ അവസാനം ഇനിപ്പറയുന്ന വരി പകർത്തി ഒട്ടിക്കുക. മുകളിൽ വിശദീകരിച്ചിരിക്കുന്ന ഏതെങ്കിലും ഡംപ് ഫോർമാറ്റുകൾ നിങ്ങൾക്ക് ഉപയോഗിക്കാം.

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

ഫയൽ സംരക്ഷിച്ച് പുറത്തുകടക്കുക.

ക്രോൺ സേവനം പുനരാരംഭിക്കാതെ തന്നെ ഈ പുതിയ ജോലി സ്വയമേവ പ്രവർത്തിപ്പിക്കാൻ തുടങ്ങും. ഈ ക്രോൺ ജോലി എല്ലാ ദിവസവും അർദ്ധരാത്രിയിൽ പ്രവർത്തിക്കും, ഇത് ബാക്കപ്പ് ടാസ്ക്കിനുള്ള ഏറ്റവും കുറഞ്ഞ പരിഹാരമാണ്.

ക്രോൺ ജോലികൾ ഷെഡ്യൂൾ ചെയ്യുന്നതെങ്ങനെ എന്നതിനെക്കുറിച്ചുള്ള കൂടുതൽ വിവരങ്ങൾക്ക്, കാണുക: Linux-ൽ ക്രോൺ ജോലികൾ എങ്ങനെ സൃഷ്ടിക്കാം, കൈകാര്യം ചെയ്യാം

തൽക്കാലം അത്രമാത്രം! ഡാറ്റ ബാക്കപ്പ് ചെയ്യുന്നത് നിങ്ങളുടെ ഡാറ്റാബേസ് മാനേജ്മെന്റ് ദിനചര്യയുടെ ഭാഗമാക്കുന്നത് നല്ലതാണ്. എന്തെങ്കിലും ചോദ്യങ്ങൾക്കും അഭിപ്രായങ്ങൾക്കും ഞങ്ങളെ ബന്ധപ്പെടാൻ, ചുവടെയുള്ള ഫീഡ്uബാക്ക് ഫോം ഉപയോഗിക്കുക. കൂടുതൽ വിവരങ്ങൾക്ക്, pg_restore റഫറൻസ് പേജുകൾ കാണുക.