1. Πρόλογος
Πρόσφατα, το Redis χρησιμοποιήθηκε ως κρυφή μνήμη στο έργο για τη διευκόλυνση της κοινής χρήσης δεδομένων μεταξύ πολλαπλών επιχειρηματικών διαδικασιών. Δεδομένου ότι τα δεδομένα Redis αποθηκεύονται στη μνήμη, εάν δεν έχει ρυθμιστεί η επιμονή, όλα τα δεδομένα θα χαθούν μετά την επανεκκίνηση του redis, επομένως πρέπει να ενεργοποιήσετε τη λειτουργία επιμονής του redis για να αποθηκεύσετε τα δεδομένα στο δίσκο και όταν γίνει επανεκκίνηση του redis, μπορείτε να ανακτήσετε δεδομένα από το δίσκο. Το Redis παρέχει δύο τρόπους διατήρησης, την επιμονή RDB (η αρχή είναι η απόρριψη των εγγραφών της βάσης δεδομένων του Reids στη μνήμη σε επιμονή RDB στο δίσκο) και ο άλλος είναι η επιμονή AOF (η αρχή είναι η εγγραφή των αρχείων καταγραφής λειτουργίας του Reids σε ένα αρχείο με τη μορφή παραρτήματος). Ποια είναι λοιπόν η διαφορά μεταξύ αυτών των δύο μεθόδων επιμονής και πώς να επιλέξετε να την αλλάξετε; Τα περισσότερα από τα πράγματα που διαβάζω στο Διαδίκτυο εισάγουν τον τρόπο διαμόρφωσης και χρήσης αυτών των δύο μεθόδων, αλλά δεν υπάρχει εισαγωγή στη διαφορά μεταξύ των δύο και σε ποια σενάρια εφαρμογών να χρησιμοποιηθούν.
2. Η διαφορά μεταξύ των δύο
Η επιμονή RDB αναφέρεται στην εγγραφή ενός στιγμιότυπου του συνόλου δεδομένων στη μνήμη στο δίσκο εντός ενός καθορισμένου χρονικού διαστήματος και η πραγματική διαδικασία λειτουργίας είναι η διακλάδωση μιας υποδιεργασίας, η εγγραφή πρώτα του συνόλου δεδομένων σε ένα προσωρινό αρχείο και, στη συνέχεια, η αντικατάσταση του προηγούμενου αρχείου μετά την επιτυχή εγγραφή και η αποθήκευση του με δυαδική συμπίεση.
Η επιμονή AOF καταγράφει κάθε λειτουργία εγγραφής και διαγραφής που επεξεργάζεται ο διακομιστής με τη μορφή αρχείου καταγραφής και η λειτουργία ερωτήματος δεν θα καταγραφεί, αλλά θα καταγραφεί σε κείμενο και μπορείτε να ανοίξετε το αρχείο για να δείτε τη λεπτομερή εγγραφή λειτουργίας.
3. Πλεονεκτήματα και μειονεκτήματα των δύο
Ποια είναι τα πλεονεκτήματα του RDB;
1). Μόλις χρησιμοποιηθεί, τότε ολόκληρη η βάση δεδομένων Redis θα περιέχει μόνο ένα αρχείο, το οποίο είναι ιδανικό για δημιουργία αντιγράφων ασφαλείας αρχείων. Για παράδειγμα, μπορεί να θέλετε να αρχειοθετείτε τις τελευταίες 24 ώρες κάθε ώρα και επίσης να αρχειοθετείτε τις τελευταίες 30 ημέρες κάθε μέρα. Με μια τέτοια στρατηγική δημιουργίας αντιγράφων ασφαλείας, μπορούμε εύκολα να ανακάμψουμε σε περίπτωση καταστροφικής βλάβης του συστήματος.
2). Το RDB είναι μια πολύ καλή επιλογή για αποκατάσταση καταστροφών. Επειδή μπορούμε εύκολα να συμπιέσουμε ένα μόνο αρχείο και να το μεταφέρουμε σε άλλο μέσο αποθήκευσης.
3). Μεγιστοποιήστε την απόδοση. Για τη διαδικασία υπηρεσίας Redis, το μόνο πράγμα που χρειάζεται να κάνει κατά την έναρξη της επιμονής είναι να διαχωρίσει τις θυγατρικές διεργασίες και, στη συνέχεια, οι θυγατρικές διεργασίες θα ολοκληρώσουν αυτές τις εργασίες επιμονής, οι οποίες μπορούν να αποφύγουν σημαντικά τη διαδικασία υπηρεσίας που εκτελεί λειτουργίες IO.
4). Σε σύγκριση με τον μηχανισμό AOF, εάν το σύνολο δεδομένων είναι μεγάλο, η απόδοση εκκίνησης του RDB θα είναι υψηλότερη.
Ποια είναι τα μειονεκτήματα του RDB;
1). Εάν θέλετε να εξασφαλίσετε υψηλή διαθεσιμότητα δεδομένων, δηλαδή να αποφύγετε την απώλεια δεδομένων στο μέγιστο βαθμό, τότε το RDB δεν θα είναι καλή επιλογή. Επειδή μόλις το σύστημα πέσει πριν από την προγραμματισμένη επιμονή, τα δεδομένα που είχαν εγγραφεί προηγουμένως στο δίσκο θα χαθούν.
2). Δεδομένου ότι το RDB βοηθά στη διατήρηση των δεδομένων μέσω υποδιεργασιών διακλάδωσης, εάν το σύνολο δεδομένων είναι μεγάλο, μπορεί να προκαλέσει διακοπή της υπηρεσίας ολόκληρου του διακομιστή για εκατοντάδες χιλιοστά του δευτερολέπτου ή ακόμα και 1 δευτερόλεπτο.
Ποια είναι τα πλεονεκτήματα του AOF;
1). Αυτός ο μηχανισμός μπορεί να φέρει μεγαλύτερη ασφάλεια δεδομένων, δηλαδή διατήρηση δεδομένων. Υπάρχουν 3 στρατηγικές συγχρονισμού που παρέχονται στο Redis, δηλαδή συγχρονισμός ανά δευτερόλεπτο, συγχρονισμός ανά τροποποίηση και αποσυγχρονισμός. Στην πραγματικότητα, ο συγχρονισμός ανά δευτερόλεπτο γίνεται επίσης ασύγχρονα, και η απόδοσή του είναι επίσης πολύ υψηλή, η διαφορά είναι ότι μόλις το σύστημα πέσει, τότε τα τροποποιημένα δεδομένα θα χαθούν μέσα σε αυτό το δευτερόλεπτο. Και κάθε φορά που συγχρονίζεται μια τροποποίηση, μπορούμε να τη σκεφτούμε ως επιμονή συγχρονισμού, δηλαδή κάθε αλλαγή δεδομένων που συμβαίνει καταγράφεται αμέσως στο δίσκο. Προβλέπεται ότι αυτή η μέθοδος είναι η λιγότερο αποτελεσματική. Όσο για τον μη συγχρονισμό, δεν χρειάζεται να πούμε περισσότερα, νομίζω ότι όλοι μπορούν να το καταλάβουν σωστά.
2). Δεδομένου ότι ο μηχανισμός υιοθετεί τη λειτουργία προσάρτησης για την εγγραφή αρχείων καταγραφής, ακόμη και αν υπάρχει διακοπή λειτουργίας κατά τη διαδικασία εγγραφής, το περιεχόμενο που υπάρχει ήδη στο αρχείο καταγραφής δεν θα καταστραφεί. Ωστόσο, εάν γράψουμε μόνο τα μισά δεδομένα και το σύστημα διακοπεί αυτή τη φορά, μην ανησυχείτε, μπορούμε να χρησιμοποιήσουμε το εργαλείο redis-check-aof για να μας βοηθήσει να λύσουμε το πρόβλημα συνέπειας δεδομένων πριν από την επόμενη έναρξη του Redis.
3). Εάν το αρχείο καταγραφής είναι πολύ μεγάλο, το Redis μπορεί να ενεργοποιήσει αυτόματα τον μηχανισμό επανεγγραφής. Δηλαδή, το Redis γράφει συνεχώς τα δεδομένα τροποποίησης στο παλιό αρχείο δίσκου στη λειτουργία προσάρτησης και το Redis θα δημιουργήσει επίσης ένα νέο αρχείο για να καταγράψει ποιες εντολές τροποποίησης εκτελούνται κατά τη διάρκεια αυτής της περιόδου. Επομένως, η ασφάλεια των δεδομένων μπορεί να διασφαλιστεί καλύτερα κατά την εναλλαγή μεταξύ επανεγγραφών.
4). Το AOF περιέχει ένα σαφές, κατανοητό αρχείο καταγραφής που καταγράφει όλες τις τροποποιήσεις. Μάλιστα, μπορούμε να ολοκληρώσουμε και την ανακατασκευή των δεδομένων μέσω αυτού του αρχείου.
Ποια είναι τα μειονεκτήματα του OV;
1). Για τον ίδιο αριθμό συνόλων δεδομένων, τα αρχεία OF είναι συνήθως μεγαλύτερα από τα αρχεία RDB. Το RDB ανακτά μεγάλα σύνολα δεδομένων πιο γρήγορα από το AOF.
2). Ανάλογα με τη στρατηγική συγχρονισμού, το AOF τείνει να είναι πιο αργό από το RDB όσον αφορά την απόδοση λειτουργίας. Εν ολίγοις, η αποτελεσματικότητα της πολιτικής συγχρονισμού ανά δευτερόλεπτο είναι σχετικά υψηλή και η αποτελεσματικότητα της πολιτικής σύγχρονης απενεργοποίησης είναι εξίσου αποτελεσματική με αυτή του RDB.
Τα κριτήρια για την επιλογή των δύο είναι εάν το σύστημα είναι πρόθυμο να θυσιάσει κάποια απόδοση με αντάλλαγμα υψηλότερη συνοχή κρυφής μνήμης (AOF) ή εάν είναι πρόθυμο να μην ενεργοποιήσει τη δημιουργία αντιγράφων ασφαλείας με αντάλλαγμα υψηλότερη απόδοση όταν οι λειτουργίες εγγραφής είναι συχνές και στη συνέχεια να κάνει αντίγραφα ασφαλείας (RDB) όταν εκτελείται η Αποθήκευση με μη αυτόματο τρόπο. Το RDB έχει μια πιο τελική συνεπή έννοια. Ωστόσο, το περιβάλλον παραγωγής είναι στην πραγματικότητα περισσότερο ένας συνδυασμός των δύο.
4. Κοινές διαμορφώσεις
Διαμόρφωση επιμονής RDB
Το Redis αποτυπώνει ένα στιγμιότυπο του συνόλου δεδομένων στο αρχείο dump.rdb. Επιπλέον, μπορούμε επίσης να τροποποιήσουμε τη συχνότητα των στιγμιότυπων ένδειξης σφαλμάτων διακομιστή Redis μέσω του αρχείου διαμόρφωσης, αφού ανοίξουμε το αρχείο 6379.conf, αναζητούμε αποθήκευση και μπορούμε να δούμε τις ακόλουθες πληροφορίες διαμόρφωσης:
Μόνιμη διαμόρφωση AOF
Υπάρχουν τρεις τρόποι συγχρονισμού στο προφίλ Redis, οι οποίοι είναι:
Πλήρης διαμόρφωση:
Ένα νέο αρχείο "appendonly.aof" θα δημιουργηθεί κάτω από τον κατάλογο δοκιμής, ως εξής:
|