Πώς να κάνετε αντίγραφο ασφαλείας της βάσης δεδομένων της εφαρμογής σας (και να την επαναφέρετε πραγματικά)
Για να κάνετε αντίγραφο ασφαλείας της βάσης δεδομένων της εφαρμογής σας, εξαγάγετέ την σε αρχείο με συγκεκριμένο πρόγραμμα, για παράδειγμα κάθε μέρα (για Postgres, το τυπικό εργαλείο είναι το pg_dump). Αποθηκεύστε τα αντίγραφα κάπου χωριστά από τη βάση δεδομένων και επαναφέρετε τακτικά ένα από αυτά σε κενή βάση δεδομένων για να αποδείξετε ότι λειτουργεί. Πάρτε ένα επιπλέον αντίγραφο αμέσως πριν από κάθε ριψοκίνδυνη αλλαγή. Το αντίγραφο του κώδικα, είτε αυτό είναι ένα αποθετήριο GitHub είτε μια εξαγωγή, δεν περιλαμβάνει τα δεδομένα σας.
Αυτός ο οδηγός απευθύνεται σε όσους τρέχουν μια μικρή εφαρμογή και θέλουν να πάψουν να ανησυχούν ότι θα τη χάσουν. Χρησιμοποιεί την Postgres για τα παραδείγματα, επειδή οι περισσότερες εφαρμογές που φτιάχνονται με AI τη χρησιμοποιούν, αλλά οι αρχές ισχύουν για κάθε βάση δεδομένων.
Τι πρέπει να καλύπτει ένα αντίγραφο ασφαλείας
Μια εφαρμογή είναι κάτι περισσότερο από τη βάση δεδομένων της. Μάθετε ποιο μέρος προστατεύει κάθε αντίγραφο.
| Τι | Πού βρίσκεται | Πώς γίνεται το αντίγραφο |
|---|---|---|
| Κώδικας | Αρχεία έργου, Git | Συγχρονισμός με GitHub ή εξαγωγή έργου |
| Δεδομένα (χρήστες, εγγραφές) | Η βάση δεδομένων | Εξαγωγή βάσης σε πρόγραμμα |
| Αρχεία που ανεβάζετε | Αποθηκευτικός χώρος αντικειμένων | Αντιγραφή του bucket, ή διατήρηση των αρχικών αλλού |
| Μυστικά και ρυθμίσεις | Ρυθμίσεις έργου, πίνακες ελέγχου παρόχων | Διαχειριστής κωδικών, πάντα ενημερωμένος |
Τα δεδομένα είναι το μέρος που δεν μπορείτε να ξαναδημιουργήσετε. Ο κώδικας μπορεί να ξαναγραφτεί και οι ρυθμίσεις να ξαναμπούν· οι παραγγελίες των πελατών σας δεν μπορούν.
Βήμα 1: Αποφασίστε πόσα δεδομένα μπορείτε να χάσετε
Δύο ερωτήσεις καθορίζουν το σχέδιο αντιγράφων ασφαλείας σας:
- Πόσα πρόσφατα δεδομένα μπορείτε να χάσετε χωρίς πρόβλημα; Αν κάνετε αντίγραφο μία φορά την ημέρα και η βάση χαλάσει το βράδυ, χάνετε τις αλλαγές της ημέρας. Για μια εφαρμογή χόμπι αυτό είναι εντάξει. Για μια εφαρμογή που δέχεται παραγγελίες, ίσως όχι.
- Πόση ώρα μπορεί να μείνει εκτός λειτουργίας η εφαρμογή ενώ γίνεται η επαναφορά; Μια μικρή βάση επαναφέρεται σε λίγα λεπτά. Μια μεγάλη μπορεί να χρειαστεί πολύ περισσότερο, και θέλετε να το ξέρετε πριν τη χρειαστείτε.
Για τις περισσότερες μικρές εφαρμογές, ένα καθημερινό αυτόματο αντίγραφο συν ένα χειροκίνητο πριν από ριψοκίνδυνες αλλαγές είναι μια λογική αρχή. Εφαρμογές με χρήματα ή δεδομένα υγείας χρειάζονται συχνότερα αντίγραφα ή μια διαχειριζόμενη βάση με ανάκτηση σε συγκεκριμένη χρονική στιγμή (τη δυνατότητα να επαναφέρετε οποιαδήποτε στιγμή, όχι μόνο στο τελευταίο αντίγραφο).
Βήμα 2: Ελέγξτε τι κάνει ήδη ο πάροχος σας
Πολλοί διαχειριζόμενοι πάροχοι βάσεων δεδομένων κάνουν αυτόματα αντίγραφα. Μάθετε:
- Είναι ενεργά τα αντίγραφα στο πλάνο σας, και πόσο συχνά τρέχουν;
- Πόσο καιρό διατηρούνται;
- Μπορείτε να επαναφέρετε σε συγκεκριμένη χρονική στιγμή ή μόνο σε ημερήσιο στιγμιότυπο;
- Μπορείτε να κατεβάσετε ένα αντίγραφο ή μόνο να το επαναφέρετε μέσα στο σύστημά τους;
Τα αντίγραφα του παρόχου είναι χρήσιμα, αλλά μοιράζονται ένα κοινό σημείο αστοχίας με τη βάση σας: τον λογαριασμό. Αν ο λογαριασμός κλείσει, ανασταλεί ή το έργο διαγραφεί, τα αντίγραφα μπορεί να χαθούν μαζί του. Γι' αυτό χρειάζεστε και δικό σας αντίγραφο.
Βήμα 3: Κάντε εξαγωγή με το pg_dump
Το pg_dump εξάγει μια βάση Postgres σε αρχείο. Διαβάζει ένα συνεπές στιγμιότυπο, οπότε η εφαρμογή μπορεί να συνεχίζει να λειτουργεί όσο αυτό δουλεύει.
Μια τυπική εντολή, που χρησιμοποιεί τη σύνδεση που έχει ήδη η εφαρμογή σας σε μεταβλητή περιβάλλοντος:
pg_dump "$DATABASE_URL" --format=custom --no-owner --file=backup-2026-09-29.dump
Τι κάνουν οι επιλογές:
- Το
--format=customγράφει ένα συμπιεσμένο αρχείο που μπορεί να διαβάσει τοpg_restore, και σας επιτρέπει να επαναφέρετε αργότερα μεμονωμένους πίνακες. Χρησιμοποιήστε--format=plainαν θέλετε αντίθετα ένα αναγνώσιμο αρχείο.sql. - Το
--no-ownerπαραλείπει τις εντολές ιδιοκτησίας, κάτι που απλοποιεί την επαναφορά σε διαφορετική βάση. - Η ημερομηνία στο όνομα του αρχείου κρατά τα αντίγραφα ξεχωριστά.
Η έκδοση του pg_dump πρέπει να είναι ίδια με την έκδοση Postgres της βάσης σας ή νεότερη. Ένα παλαιότερο pg_dump μπορεί να αρνηθεί να τρέξει.
Αν φτιάχνετε με AI και δεν θέλετε να αγγίξετε τη γραμμή εντολών, μπορείτε να ζητήσετε:
Φτιάξε ένα αντίγραφο ασφαλείας της βάσης δεδομένων της εφαρμογής με pg_dump σε μορφή custom, με τη σημερινή ημερομηνία στο όνομα του αρχείου. Μην εμφανίσεις τη συμβολοσειρά σύνδεσης ούτε κανένα μυστικό. Πες μου το όνομα του αρχείου και το μέγεθός του όταν τελειώσει.
Βήμα 4: Αυτοματοποιήστε το
Τα χειροκίνητα αντίγραφα ξεχνιούνται. Αυτοματοποιήστε τα με ό,τι υποστηρίζει η ρύθμισή σας:
- Τα προγραμματισμένα αντίγραφα του παρόχου βάσης, αν προσφέρονται.
- Μια προγραμματισμένη εργασία σε διακομιστή ή υπηρεσία CI που τρέχει το
pg_dumpκαι ανεβάζει το αρχείο σε αποθηκευτικό χώρο. - Μια φιλοξενούμενη υπηρεσία αντιγράφων που συνδέεται στη βάση σας.
όποια κι αν επιλέξετε, φροντίστε να σας ειδοποιεί όταν αποτυγχάνει ένα αντίγραφο. Μια εργασία αντιγράφων που έχει αποτύχει σιωπηλά για τρεις μήνες είναι η κλασική ιστορία τρόμου.
Βήμα 5: Αποθηκεύστε αντίγραφα κάπου αλλού
Ο κανόνας του αντίχειρα λέγεται συχνά 3-2-1: τρία αντίγραφα των δεδομένων σας, σε δύο διαφορετικά είδη αποθήκευσης, με ένα αντίγραφο εκτός τοποθεσίας. Για μια μικρή εφαρμογή, μια πρακτική εκδοχή είναι:
- Η ζωντανή βάση δεδομένων
- Τα αυτόματα αντίγραφα του παρόχου
- Τα δικά σας αρχεία dump σε ξεχωριστή αποθήκευση, όπως ένα bucket αποθηκευτικού χώρου αντικειμένων σε άλλον λογαριασμό
Επίσης:
- Περιορίστε την πρόσβαση. Ένα αντίγραφο περιέχει όλα τα δεδομένα των χρηστών. Αντιμετωπίστε το όπως τη ζωντανή βάση.
- Κρατήστε πολιτική διατήρησης. Για παράδειγμα, ημερήσια αντίγραφα για δύο εβδομάδες και μηνιαία για ένα χρόνο. Διαγράφετε τα παλιά σκόπιμα, και θυμηθείτε ότι οι νόμοι περί απορρήτου μπορεί να σας υποχρεώνουν να διαγράφετε προσωπικά δεδομένα όταν το ζητήσει το άτομο.
- Ποτέ μην βάζετε αντίγραφα στο Git. Ένα dump μέσα σε αποθετήριο είναι διαρροή δεδομένων που περιμένει να συμβεί.
Βήμα 6: Δοκιμάστε μια επαναφορά
Ένα αντίγραφο ασφαλείας αξίζει όσο η τελευταία επιτυχής επαναφορά του. Τουλάχιστον κάθε λίγους μήνες, και μετά από κάθε αλλαγή στη διαδικασία αντιγράφων:
- Δημιουργήστε μια νέα, κενή βάση δεδομένων. Ποτέ μην κάνετε δοκιμαστική επαναφορά πάνω στη ζωντανή βάση.
- Επαναφέρετε το τελευταίο αντίγραφο σε αυτήν:
pg_restore --no-owner --dbname="$TEST_DATABASE_URL" backup-2026-09-29.dump
Για ένα απλό αρχείο .sql, χρησιμοποιήστε αντίθετα psql "$TEST_DATABASE_URL" -f backup.sql.
- Ελέγξτε ότι υπάρχει κάθε πίνακας, συγκρίνετε το πλήθος εγγραφών με τη ζωντανή βάση και κοιτάξτε μερικές πρόσφατες εγγραφές.
- Συνδέστε ένα αντίγραφο της εφαρμογής σε αυτήν και συνδεθείτε, αν μπορείτε.
- Σημειώστε πόσος χρόνος πήρε η επαναφορά. Αυτός είναι ο πραγματικός σας χρόνος ανάκαμψης.
Βήμα 7: Κάντε αντίγραφο πριν από ριψοκίνδυνες αλλαγές
Πάρτε ένα νέο αντίγραφο αμέσως πριν από:
- Την εκτέλεση μιας μετεγκατάστασης βάσης που διαγράφει ή μετονομάζει στήλες
- Μια μαζική εισαγωγή δεδομένων
- Όταν αφήνετε τον πράκτορα AI να κάνει μεγάλες αλλαγές στο μοντέλο δεδομένων
- Τη διαγραφή παλιών εγγραφών
Σε μια εφαρμογή που έχει φτιαχτεί με AI, ο πράκτορας μπορεί να αλλάξει τη δομή των πινάκων ως μέρος μιας λειτουργίας. Τα σημεία ελέγχου και ο έλεγχος εκδόσεων επαναφέρουν τον κώδικα, αλλά δεν επαναφέρουν διαγραμμένες εγγραφές. Ένα αντίγραφο τριάντα δευτερολέπτων πριν από μια μεγάλη αλλαγή είναι φθηνή ασφάλεια.
Συχνά λάθη
- Η υπόθεση ότι το Git ή μια εξαγωγή κώδικα είναι αντίγραφο ασφαλείας. Έχει τον κώδικα, όχι τα δεδομένα.
- Να μην δοκιμάζετε ποτέ μια επαναφορά. Πολλά αντίγραφα αποδεικνύονται κενά, ελλιπή ή αδιάβαστα μόνο όταν χρειαστούν.
- Να κρατάτε τα αντίγραφα στον ίδιο λογαριασμό με τη βάση. Ένας λογαριασμός που έχει παραβιαστεί ή κλείσει παίρνει μαζί του και τα δύο.
- Να ξεχνάτε τα αρχεία που ανεβάζουν οι χρήστες. Η βάση αποθηκεύει τη διαδρομή του αρχείου· η ίδια η εικόνα βρίσκεται στον αποθηκευτικό χώρο.
- Να αφήνετε μυστικά μέσα σε σενάρια αντιγράφων. Διαβάζετε τη συμβολοσειρά σύνδεσης από μεταβλητή περιβάλλοντος, ποτέ από το κείμενο του σεναρίου. Δείτε πώς να κρατάτε ασφαλή τα κλειδιά API.
Αντίγραφα ασφαλείας και Mythex
Τα έργα Mythex μπορούν να έχουν dedicated βάση Postgres, και τα στοιχεία σύνδεσής της εισάγονται στον χώρο εργασίας και στη δημοσιευμένη εφαρμογή. Η τεκμηρίωση του Mythex δεν περιγράφει λειτουργία αντιγράφου ή επαναφοράς βάσης, γι' αυτό σχεδιάστε το δικό σας: ζητήστε από τον πράκτορα να φτιάξει ένα dump, κατεβάστε το και φυλάξτε το κάπου ασφαλές, ιδιαίτερα πριν από μεγάλες αλλαγές. Η εξαγωγή έργου (Pro) περιέχει τον κώδικά σας, με τα μυστικά και το node_modules αφαιρεμένα· δεν περιέχει εγγραφές βάσης. Δείτε Database και Data ownership στην τεκμηρίωση. Για περισσότερα για τη βάση, διαβάστε τι είναι η Postgres.
Λίστα ελέγχου αντιγράφων ασφαλείας
- Αποφασίσατε πόσα δεδομένα αντέχετε να χάσετε και πόση ώρα μπορείτε να είστε εκτός λειτουργίας
- Ελέγξατε ποια αυτόματα αντίγραφα προσφέρει ο πάροχος της βάσης σας
- Το δικό σας dump τρέχει προγραμματισμένα, και οι αποτυχίες σας ειδοποιούν
- Τα αντίγραφα αποθηκεύονται χωριστά από τη βάση, με περιορισμένη πρόσβαση
- Η πολιτική διατήρησης είναι γραμμένη
- Τα αρχεία που ανεβάζουν οι χρήστες έχουν αντίγραφο, όχι μόνο η βάση
- Η επαναφορά έχει δοκιμαστεί σε κενή βάση, με έλεγχο πλήθους εγγραφών
- Πριν από κάθε ριψοκίνδυνη αλλαγή υπάρχει αντίγραφο
Ερωτήσεις
Πόσο συχνά πρέπει να κάνω αντίγραφο ασφαλείας της βάσης δεδομένων της εφαρμογής μου;
Προσαρμόστε τη συχνότητα στο πόσα δεδομένα μπορείτε να χάσετε. Για τις περισσότερες μικρές εφαρμογές, ένα καθημερινό αυτόματο αντίγραφο είναι ένα λογικό ελάχιστο, συν ένα χειροκίνητο αντίγραφο πριν από κάθε ριψοκίνδυνη αλλαγή, όπως μια μετεγκατάσταση, μια εισαγωγή δεδομένων ή μια μεγάλη νέα λειτουργία.
Η εξαγωγή του κώδικα είναι το ίδιο με το αντίγραφο ασφαλείας των δεδομένων μου;
Όχι. Μια εξαγωγή κώδικα ή ένα αποθετήριο GitHub περιέχει τα αρχεία της εφαρμογής σας, όχι τις εγγραφές της βάσης δεδομένων. Οι χρήστες, οι παραγγελίες και οι αναρτήσεις σας βρίσκονται στη βάση δεδομένων και χρειάζονται δικό τους αντίγραφο ασφαλείας.
Τι είναι το pg_dump;
Το pg_dump είναι το τυπικό εργαλείο γραμμής εντολών που συνοδεύει την Postgres για την εξαγωγή μιας βάσης δεδομένων σε αρχείο. Μπορεί να γράψει απλό SQL ή συμπιεσμένη μορφή custom, και τα αντίστοιχα εργαλεία επαναφοράς είναι το psql για αρχεία SQL και το pg_restore για τη μορφή custom.
Πώς ξέρω ότι το αντίγραφο ασφαλείας λειτουργεί;
Επαναφέρετέ το. Φορτώστε το αντίγραφο σε μια ξεχωριστή, κενή βάση δεδομένων και ελέγξτε ότι οι πίνακες υπάρχουν και ότι το πλήθος των εγγραφών και μερικές πρόσφατες εγγραφές ταιριάζουν με τα ζωντανά δεδομένα. Ένα αντίγραφο που δεν έχετε ποτέ επαναφέρει είναι απλώς εικασία.
Πού πρέπει να αποθηκεύω τα αντίγραφα ασφαλείας της βάσης δεδομένων;
Κάπου χωριστά από την ίδια τη βάση δεδομένων, κατά προτίμηση σε άλλον πάροχο ή λογαριασμό, και με πρόσβαση μόνο για εσάς. Τα αντίγραφα περιέχουν τα δεδομένα όλων των χρηστών σας, γι' αυτό αντιμετωπίστε τα με την ίδια προσοχή με τη ζωντανή βάση.