Πώς να δημιουργήσετε αντίγραφα ασφαλείας και να επαναφέρετε μια βάση δεδομένων PostgreSQL


Σε ένα περιβάλλον παραγωγής, ανεξάρτητα από το πόσο μεγάλη ή μικρή μπορεί να είναι η βάση δεδομένων σας PostgreSQL, η τακτική δημιουργία αντιγράφων ασφαλείας είναι μια ουσιαστική πτυχή της διαχείρισης της βάσης δεδομένων. Σε αυτό το άρθρο, θα μάθετε πώς να δημιουργείτε αντίγραφα ασφαλείας και να επαναφέρετε μια βάση δεδομένων PostgreSQL.

Υποθέτουμε ότι έχετε ήδη μια λειτουργική εγκατάσταση του συστήματος βάσης δεδομένων PostgreSQL. Εάν όχι, διαβάστε τα παρακάτω άρθρα μας για να εγκαταστήσετε το PostgreSQL στη διανομή Linux σας.

Ας αρχίσουμε…

Δημιουργία αντιγράφων ασφαλείας μιας ενιαίας βάσης δεδομένων PostgreSQL

Το PostgreSQL παρέχει το βοηθητικό πρόγραμμα pg_dump για να σας βοηθήσει να δημιουργήσετε αντίγραφα ασφαλείας βάσεων δεδομένων. Δημιουργεί ένα αρχείο βάσης δεδομένων με εντολές SQL σε μορφή που μπορεί εύκολα να αποκατασταθεί στο μέλλον.

Για να δημιουργήσετε αντίγραφα ασφαλείας, μια βάση δεδομένων PostgreSQL, ξεκινήστε με τη σύνδεση στον διακομιστή της βάσης δεδομένων σας, μετά μεταβείτε στον λογαριασμό χρήστη Postgres και εκτελέστε το pg_dump ως εξής (αντικαταστήστε το tecmintdb με το όνομα της βάσης δεδομένων που θέλετε να δημιουργήσετε αντίγραφο ασφαλείας). Από προεπιλογή, η μορφή εξόδου είναι ένα αρχείο δέσμης ενεργειών SQL απλού κειμένου.

pg_dump tecmintdb > tecmintdb.sql

Το pg_dump υποστηρίζει και άλλες μορφές εξόδου. Μπορείτε να καθορίσετε τη μορφή εξόδου χρησιμοποιώντας την επιλογή -F, όπου c σημαίνει αρχείο αρχείου προσαρμοσμένης μορφής, d σημαίνει αρχείο μορφής καταλόγου και t σημαίνει αρχείο αρχείου μορφής tar: όλες οι μορφές είναι κατάλληλες για εισαγωγή στο 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, χρησιμοποιήστε το εργαλείο pg_dumpall όπως φαίνεται.

pg_dumpall > all_pg_dbs.sql

Μπορείτε να επαναφέρετε το dump χρησιμοποιώντας psql όπως φαίνεται.

psql -f all_pg_dbs.sql postgres

Επαναφορά μιας βάσης δεδομένων PostgreSQL

Για να επαναφέρετε μια βάση δεδομένων PostgreSQL, μπορείτε να χρησιμοποιήσετε τα βοηθητικά προγράμματα psql ή pg_restore. Το psql χρησιμοποιείται για την επαναφορά αρχείων κειμένου που έχουν δημιουργηθεί από το pg_dump ενώ το pg_restore χρησιμοποιείται για την επαναφορά μιας βάσης δεδομένων PostgreSQL από ένα αρχείο που δημιουργήθηκε από το pg_dump< σε μία από τις μορφές μη απλού κειμένου (προσαρμοσμένο, tar ή κατάλογος).

Ακολουθεί ένα παράδειγμα του τρόπου επαναφοράς ενός αρχείου ένδειξης απλού κειμένου:

psql tecmintdb < tecmintdb.sql

Όπως αναφέρθηκε παραπάνω, μια ένδειξη προσαρμοσμένης μορφής δεν είναι σενάριο για psql, επομένως πρέπει να αποκατασταθεί με το pg_restore όπως φαίνεται.

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

Συμπιεσμένο αντίγραφο ασφαλείας της βάσης δεδομένων PostgreSQL

Εάν η βάση δεδομένων που δημιουργείτε αντίγραφα ασφαλείας είναι μεγάλη και θέλετε να δημιουργήσετε ένα αρκετά μικρότερο αρχείο εξόδου, τότε μπορείτε να εκτελέσετε μια συμπιεσμένη ένδειξη όπου πρέπει να φιλτράρετε την έξοδο του pg_dump μέσω ενός εργαλείου συμπίεσης όπως το gzip ή οποιοδήποτε από τα αγαπημένα σας:

pg_dump tecmintdb | gzip > tecmintdb.gz

Εάν η βάση δεδομένων είναι εξαιρετικά μεγάλη, μπορείτε να πραγματοποιήσετε παράλληλη απόρριψη πίνακες number_of_jobs ταυτόχρονα χρησιμοποιώντας τη σημαία -j, όπως φαίνεται.

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

Βεβαιωθείτε ότι ο χρήστης που συνδέεται εξ αποστάσεως έχει τα απαιτούμενα δικαιώματα πρόσβασης στη βάση δεδομένων και ότι η κατάλληλη μέθοδος ελέγχου ταυτότητας βάσης δεδομένων έχει ρυθμιστεί στον διακομιστή βάσης δεδομένων, διαφορετικά, θα λάβετε ένα σφάλμα όπως αυτό που φαίνεται στο παρακάτω στιγμιότυπο οθόνης.

Είναι επίσης δυνατή η απόρριψη μιας βάσης δεδομένων απευθείας από έναν διακομιστή σε άλλον, χρησιμοποιήστε τα βοηθητικά προγράμματα pg_dump και psql όπως φαίνεται.

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

Αυτόματη δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων PostgreSQL με χρήση Cron Job

Μπορείτε να δημιουργείτε αντίγραφα ασφαλείας σε τακτά χρονικά διαστήματα χρησιμοποιώντας εργασίες cron. Οι εργασίες Cron είναι ένα μέσο που χρησιμοποιείται συνήθως για τον προγραμματισμό διαφόρων ειδών εργασιών για εκτέλεση σε έναν διακομιστή.

Μπορείτε να διαμορφώσετε μια εργασία cron για την αυτοματοποίηση της δημιουργίας αντιγράφων ασφαλείας της βάσης δεδομένων PostgreSQL ως εξής. Σημειώστε ότι πρέπει να εκτελέσετε τις ακόλουθες εντολές ως υπερχρήστης PostgreSQL:

mkdir -p /srv/backups/databases

Στη συνέχεια, εκτελέστε την ακόλουθη εντολή για να επεξεργαστείτε το crontab για να προσθέσετε μια νέα εργασία cron.

crontab -e

Αντιγράψτε και επικολλήστε την ακόλουθη γραμμή στο τέλος της ακίδας. Μπορείτε να χρησιμοποιήσετε οποιαδήποτε από τις μορφές ένδειξης που εξηγούνται παραπάνω.

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

Αποθηκεύστε το αρχείο και βγείτε.

Η υπηρεσία cron θα ξεκινήσει αυτόματα την εκτέλεση αυτής της νέας εργασίας χωρίς επανεκκίνηση. Και αυτή η εργασία cron θα εκτελείται κάθε μέρα τα μεσάνυχτα, είναι μια ελάχιστη λύση στην εργασία δημιουργίας αντιγράφων ασφαλείας.

Για περισσότερες πληροφορίες σχετικά με τον τρόπο προγραμματισμού εργασιών cron, ανατρέξτε στο θέμα: Πώς να δημιουργήσετε και να διαχειριστείτε εργασίες Cron στο Linux

Αυτό είναι προς το παρόν! Είναι καλή ιδέα να κάνετε τη δημιουργία αντιγράφων ασφαλείας δεδομένων μέρος της ρουτίνας διαχείρισης της βάσης δεδομένων σας. Για να επικοινωνήσετε μαζί μας για τυχόν ερωτήσεις ή σχόλια, χρησιμοποιήστε την παρακάτω φόρμα σχολίων. Για περισσότερες πληροφορίες, ανατρέξτε στις σελίδες αναφοράς pg_dump και pg_restore.