Οι ρυθμίσεις διαμόρφωσης κλειδιών για τη βελτιστοποίηση της αντιγραφής MySQL για περιβάλλοντα υψηλής κυκλοφορίας περιλαμβάνουν προσεκτική συντονισμό διαφόρων παραμέτρων αναπαραγωγής και διακομιστή για την εξισορρόπηση της απόδοσης, της αξιοπιστίας και της συνέπειας των δεδομένων.
Χρησιμοποιήστε μια ενεργή/παθητική διαμόρφωση:
Σε σενάρια υψηλής κυκλοφορίας, συνιστάται να χρησιμοποιείτε την ενεργή/παθητική αρχιτεκτονική αναπαραγωγής, όπου ένας πρωταρχικός διακομιστής MySQL (Master) χειρίζεται όλες τις λειτουργίες εγγραφής και πολλαπλές παθητικές αντίγραφα (σκλάβοι) χειρίζονται τις λειτουργίες ανάγνωσης. Αυτό χωρίζει αποτελεσματικά τον φόρτο εργασίας, επιτρέποντας τα αντίγραφα να εξυπηρετούν την κυκλοφορία μόνο για ανάγνωση, ενώ ο Master Handles γράφει. Αυτή η ρύθμιση αποφεύγει τα θέματα πολυπλοκότητας και συγκρούσεων ενεργών/ενεργών διαμορφώσεων. Ωστόσο, η ασύγχρονη αναπαραγωγή, κοινή σε αυτή τη ρύθμιση, μπορεί να εισαγάγει κάποια καθυστέρηση μεταξύ του Master και των αντιγράφων, οπότε η λογική εφαρμογής θα πρέπει να λαμβάνει υπόψη τις απαιτήσεις συνέπειας ανάγνωσης.
Λειτουργία αναπαραγωγής:
Το MySQL αντιγραφής υποστηρίζει ασύγχρονους και ημι-συγχρονικούς τρόπους αναπαραγωγής. Η ασύγχρονη αναπαραγωγή είναι η προεπιλογή και προσφέρει υψηλή απόδοση αλλά με πιθανή καθυστέρηση αναπαραγωγής. Η ημι-συγχρονική αναπαραγωγή βελτιώνει τη συνέπεια των δεδομένων κάνοντας τον κύριο να περιμένει μέχρι τουλάχιστον ένα αντίγραφο να αναγνωρίσει την παραλαβή μιας συναλλαγής πριν προχωρήσει. Αυτό μειώνει τον κίνδυνο απώλειας δεδομένων σε καταστάσεις αποτυχίας, αλλά προσθέτει καθυστέρηση. Για υψηλή κυκλοφορία, θα πρέπει να ρυθμιστούν οι ρυθμίσεις χρονικού ορίου ημι-συγχρονισμού (προεπιλεγμένα 10 δευτερόλεπτα) για να εξασφαλιστεί η κατάλληλη συμφωνία μεταξύ συνέπειας και απόδοσης. Μερικές φορές, χρησιμοποιούνται μικτές λειτουργίες όπου ένα κρίσιμο αντίγραφο χρησιμοποιεί ημι-συγχρονισμό και άλλοι χρησιμοποιούν το ASYNC για να εξισορροπήσουν τη διαθεσιμότητα και την απόδοση.
Διαμόρφωση δυαδικής καταγραφής:
Ενεργοποιήστε τη δυαδική καταγραφή στον κύριο ρυθμίζοντας το `log-bin` και αντιστοιχίστε ένα μοναδικό` server-id '. Επιλέξτε `binlog_format = σειρά` για να καταγράψετε τις μεμονωμένες αλλαγές σειράς και όχι τις δηλώσεις για ακρίβεια και συνέπεια, ειδικά σε σύνθετους φόρτου εργασίας. Διαμορφώστε τις πολιτικές δυαδικών καταγραφής καταγραφής με σύνεση για την εξισορρόπηση της ικανότητας ανάκτησης και των απαιτήσεων αποθήκευσης. Επίσης, ενεργοποιήστε το `GTID_MODE = on` και` ENFORCE_GTID_CONSISTENCY = ON 'για τα αναγνωριστικά παγκόσμιων συναλλαγών για την απλοποίηση της διαχείρισης και της αποτυχίας της αναπαραγωγής, την ενίσχυση της αυτοματοποίησης.
Τοπολογία αναπαραγωγής για απόδοση:
Για την κλιμάκωση της αναπαραγωγής σε σενάρια υψηλής κυκλοφορίας, συνιστάται μια ιεραρχική τοπολογία αναπαραγωγής (που ονομάζεται επίσης αλυσοδεμένη ή αναμετάδοση). Ο κύριος επαναλαμβάνεται σε έναν ενδιάμεσο διακομιστή (Slave Relay), ο οποίος με τη σειρά του αναπαράγεται σε άλλα αντίγραφα. Αυτό μειώνει το φορτίο στον πλοίαρχο με μεταβιβάζοντας το δίκτυο και την επισκεψιμότητα αναπαραγωγής σε ενδιάμεσα αντίγραφα. Αυτή η τοπολογία ανακουφίζει τα σημεία συμφόρησης του δικτύου και βελτιώνει τη συνολική απόδοση αναπαραγωγής. Ωστόσο, είναι απαραίτητη η ενεργοποίηση του `log_slave_updates` σε διακομιστές αναμετάδοσης, ο οποίος φέρει γενικά έξοδα απόδοσης και απαιτεί προσεκτική παρακολούθηση για να αποφευχθεί η υστέρηση αντιγραφής.
Παράλληλη αναπαραγωγή σε σκλάβους:
Ενεργοποιήστε την παράλληλη αναπαραγωγή στα αντίγραφα για τη βελτίωση της απόδοσης της αναπαραγωγής. Το MySQL 5.6+ υποστηρίζει την εκτέλεση SQL με πολλαπλών σπόρων. Οι διαμορφώσιμες επιλογές όπως το `slave_parallel_workers 'επιτρέπουν σε πολλαπλά σπειρώματα SQL να εφαρμόζουν συναλλαγές παράλληλα, μειώνοντας την καθυστέρηση αναπαραγωγής για φόρτο εργασίας με ανεξάρτητες συναλλαγές. Απαιτείται προσεκτικός συντονισμός για τον καθορισμό των βέλτιστων μετρήσεων νήματος με βάση τα χαρακτηριστικά CPU και του φόρτου εργασίας χωρίς να προκαλέσει διαμάχη.
Βελτιστοποίηση δικτύου και σύνδεσης:
Βελτιστοποιήστε τη διαμόρφωση δικτύου για την επισκεψιμότητα αναπαραγωγής από:
- Χρησιμοποιώντας ειδικές διεπαφές δικτύου για αναπαραγωγή.
- Ενεργοποίηση συμπίεσης σε ρεύματα αναπαραγωγής για τη μείωση της χρήσης του εύρους ζώνης.
- Δικαιολογώντας σωστά τους κανόνες τείχους προστασίας για να επιτρέπεται η ασφάλεια της αναπαραγωγής.
-Χρησιμοποιώντας κρυπτογράφηση SSL (Ενεργοποίηση επιλογών `--SSL`) για ασφαλή μετάδοση δεδομένων, αν και προσθέτει μερικά γενικά έξοδα CPU.
- Η συγκέντρωση σύνδεσης μπορεί να μειώσει τα γενικά έξοδα από τις συχνές ρυθμίσεις σύνδεσης.
Αποθήκευση και βελτιστοποίηση I/O:
Χρησιμοποιήστε γρήγορη αποθήκευση (προτιμώμενη SSD) στον κύριο για το δυαδικό αρχείο καταγραφής, καθώς η δυαδική καταγραφή επηρεάζει άμεσα την αναπαραγωγή. Στα αντίγραφα, εξετάστε ξεχωριστές συσκευές αποθήκευσης για αρχεία καταγραφής αναμετάδοσης για να αποφύγετε τη διαμάχη I/O. Βελτιστοποιήστε τις ρυθμίσεις του προγραμματιστή εισόδου/εξόδου και τις παραμέτρους του συστήματος αρχείων για εγγραφές, επειδή τα αρχεία καταγραφής αναπαραγωγής περιλαμβάνουν διαδοχικές εγγραφές με περιοδικά FSYNCs. Η καθυστέρηση του δίσκου επηρεάζει άμεσα την καθυστέρηση της αναπαραγωγής και τη συνολική απόδοση.
Ρυθμίσεις χρονικού ορίου και επανάληψης:
Ρυθμίσεις χρονικού ορίου αναπαραγωγής, όπως το `slave_net_timeout 'για να διασφαλιστεί ότι οι συνδέσεις αναπαραγωγής δεν πέφτουν πρόωρα σε δίκτυα υψηλής κυκλοφορίας ή υψηλής καθυστέρησης. Επιπλέον, συντονίστε `master_retry_count` και σχετικές παραμέτρους επανάληψης για καλύτερη ανθεκτικότητα κατά τη διάρκεια των μεταβατικών αποτυχιών του δικτύου.
Παρακολούθηση και ειδοποίηση:
Εφαρμογή παρακολούθησης για υστέρηση αναπαραγωγής, απόδοση δικτύου, I/O δίσκου και χρήση CPU. Τα εργαλεία μπορούν να προειδοποιήσουν σχετικά με τα όρια καθυστέρησης αναπαραγωγής και άλλες ανωμαλίες που μπορεί να υποδηλώνουν υποβάθμιση της απόδοσης. Η προληπτική παρακολούθηση είναι κρίσιμη σε περιβάλλοντα υψηλής κυκλοφορίας για τη διατήρηση της υγείας της αναπαραγωγής.
Στρατηγικές αποτυχίας και δημιουργίας αντιγράφων ασφαλείας:
Τα αντίγραφα πρέπει να υποστηρίζονται τακτικά εκτός από τη χρήση αναπαραγωγής για υψηλή διαθεσιμότητα. Δοκιμαστικές διαδικασίες αποτυχίας συχνά. Χρησιμοποιήστε τα GTIDS για να απλοποιήσετε την αποκατάσταση της αποτυχίας, προσδιορίζοντας εύκολα την τελευταία εκτελεσθείσα συναλλαγή και εξασφαλίζοντας τα αντίγραφα που καλύπτουν χωρίς απώλεια δεδομένων. Σε τοπολογίες αλυσίδας αντιγραφής, εξασφαλίστε ότι οι δούλοι ρελέ και τα αντίγραφα των φύλλων συγχρονίζονται πλήρως πριν από την αποτυχία.
Πρόσθετες ρυθμίσεις:
- Απενεργοποιήστε την περιττή καταγραφή και παρακολούθηση σε αντίγραφα για να μειώσετε τα γενικά έξοδα.
- Χρησιμοποιήστε το `sync_binlog = 1` σε κύριο για ανθεκτικότητα, με ευαισθητοποίηση που επηρεάζει την απόδοση του δίσκου.
- Συντονίστε το `max_allowed_packet` για να χειριστείτε μεγάλες συναλλαγές σε αναπαραγωγή χωρίς σφάλματα.
Περίληψη παραμέτρων διαμόρφωσης κλειδιών:
- Στον Δάσκαλο:
- `server-id` (μοναδικό)
-`log-bin = mysql-bin '
- `binlog_format = row '
- `gtid_mode = on '
- `enforce_gtid_consistency = on '
- `sync_binlog = 1` (για ανθεκτικότητα)
- σε αντίγραφα:
- `server-id` (μοναδικό διαφορετικό από το Master)
- `relay_log '
- `log_slave_updates` (αν χρησιμοποιηθεί ως ενδιάμεσο ρελέ)
- `slave_parallel_workers` (> 1 για παράλληλη αναπαραγωγή)
-`slave-net-timeout 'συντονισμένη για συνθήκες δικτύου
- Λειτουργία αναπαραγωγής:
- Ενεργοποίηση ημι-συγχρονικής αναπαραγωγής για κρίσιμα αντίγραφα (`rpl_semi_sync_master_enabled = on`,` rpl_semi_sync_slave_enabled = on`)
- Δίκτυο:
- Ενεργοποίηση SSL για αναπαραγωγή
- Ενεργοποιημένη η συμπίεση εάν περιορίζεται η απόδοση
- Αποθήκευση:
- SSD για δυαδικά και αναμεταδότες αρχεία καταγραφής
- Ξεχωρισμένοι δίσκοι για αρχεία καταγραφής ρελέ, αν είναι δυνατόν
- Τοπολογία:
- Χρησιμοποιήστε αλυσίδα ή ιεραρχική αναπαραγωγή για να διανείμετε το φορτίο.