τα στοιχεία επικοινωνίας μου
Ταχυδρομείο[email protected]
2024-07-12
한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina
Όπως όλοι γνωρίζουμε, οι κύριες και δευτερεύουσες βάσεις δεδομένων της MySQL (δύο κόμβοι) γενικά επιτυγχάνουν υψηλή διαθεσιμότητα δεδομένων μέσω ασύγχρονης αναπαραγωγής και ημισύγχρονης αναπαραγωγής (Semi-Sync), ωστόσο, σε μη φυσιολογικά σενάρια, όπως αποτυχίες δικτύου υπολογιστών και διακοπή λειτουργίας κεντρικού υπολογιστή Οι πρωτογενείς και δευτερεύουσες αρχιτεκτονικές θα αντιμετωπίσουν σοβαρά προβλήματα μετά την εναλλαγή HA. Θα υπάρχει πιθανότητα ασυνέπειας δεδομένων (αναφέρεται ως RPO!=0).Επομένως, εάν τα επιχειρηματικά δεδομένα είναι κάποιας σημασίας, δεν θα πρέπει να επιλέξετε ένα προϊόν βάσης δεδομένων με κύρια και δευτερεύουσα αρχιτεκτονική (δύο κόμβους), συνιστάται να επιλέξετε μια αρχιτεκτονική πολλαπλών αντιγράφων με RPO=0.
Η κοινότητα της MySQL, σχετικά με την εξέλιξη της τεχνολογίας πολλαπλών αντιγράφων με RPO=0:
PolarDB-X Η έννοια της κεντρικής και κατανεμημένης ολοκλήρωσης: ο κόμβος δεδομένων DN μπορεί να χρησιμοποιηθεί ανεξάρτητα ως κεντρική (τυπική έκδοση) φόρμα, η οποία είναι πλήρως συμβατή με τη φόρμα αυτόνομης βάσης δεδομένων. Όταν η επιχείρηση αναπτύσσεται στο σημείο όπου απαιτείται κατανεμημένη επέκταση, η αρχιτεκτονική αναβαθμίζεται σε μια κατανεμημένη μορφή και τα κατανεμημένα στοιχεία συνδέονται άψογα με τους αρχικούς κόμβους δεδομένων , και μπορείτε να απολαύσετε τη διανομή της χρηστικότητας και της επεκτασιμότητας που προσφέρει αυτός ο τύπος, περιγραφή αρχιτεκτονικής:"Κεντρική Κατανεμημένη Ενοποίηση"
Το MGR της MySQL και η τυπική έκδοση DN του PolarDB-X χρησιμοποιούν το πρωτόκολλο Paxos από τη χαμηλότερη αρχή, λοιπόν, ποιες είναι οι συγκεκριμένες επιδόσεις και οι διαφορές στην πραγματική χρήση; Αυτό το άρθρο αναλύει τις πτυχές της σύγκρισης αρχιτεκτονικής, τις βασικές διαφορές και τη σύγκριση δοκιμής.
Περιγραφή συντομογραφίας MGR/DN: Το MGR αντιπροσωπεύει την τεχνική μορφή του MySQL MGR και το DN αντιπροσωπεύει την τεχνική μορφή του PolarDB-X single DN κεντρικό (τυπική έκδοση).
Η λεπτομερής συγκριτική ανάλυση είναι σχετικά μεγάλη, επομένως μπορείτε να διαβάσετε πρώτα την περίληψη και το συμπέρασμα, εάν σας ενδιαφέρει, μπορείτε να ακολουθήσετε την περίληψη και να αναζητήσετε στοιχεία σε επόμενα άρθρα.
Το MySQL MGR δεν συνιστάται για γενικές επιχειρήσεις και εταιρείες επειδή απαιτεί επαγγελματικές τεχνικές γνώσεις και μια ομάδα λειτουργίας και συντήρησης για να το χρησιμοποιήσει καλά Αυτό το άρθρο αναπαράγει επίσης τρεις «κρυφές παγίδες» του MySQL MGR που κυκλοφορούν στον κλάδο εδώ και πολύ καιρό. :
Σε σύγκριση με το MySQL MGR, το PolarDB-X Paxos δεν έχει παγίδες παρόμοιες με το MGR όσον αφορά τη συνοχή των δεδομένων, την ανάκτηση δωματίου μεταξύ υπολογιστών και τη λειτουργία και τη συντήρηση κόμβων, ωστόσο, έχει επίσης κάποιες μικρές ελλείψεις και πλεονεκτήματα στην ανάκτηση καταστροφών.
Περιγραφή συντομογραφίας MGR/DN:
Το MGR υποστηρίζει λειτουργίες single-master και multi-master και επαναχρησιμοποιεί πλήρως το σύστημα αναπαραγωγής της MySQL, συμπεριλαμβανομένων των Event, Binlog & Relaylog, Apply, Binlog Apply Recovery και GTID. Η βασική διαφορά από το DN είναι ότι το σημείο εισόδου για την πλειοψηφία καταγραφής συναλλαγών MGR για την επίτευξη συναίνεσης είναι πριν από τη δέσμευση της κύριας συναλλαγής βάσης δεδομένων.
Ο λόγος για τον οποίο το MGR υιοθετεί την παραπάνω διαδικασία είναι επειδή το MGR είναι από προεπιλογή σε λειτουργία multi-master και κάθε κόμβος μπορεί να γράψει, επομένως, ο κόμβος ακολούθου σε ένα μόνο Paxos Group πρέπει πρώτα να μετατρέψει το ληφθέν αρχείο καταγραφής σε RelayLog και μετά να συνδυάσει. με τη συναλλαγή εγγραφής που λαμβάνει ως ηγέτης για υποβολή , παράγεται το αρχείο Binlog για να υποβάλει την τελική συναλλαγή στη διαδικασία υποβολής ομάδας δύο σταδίων.
Το DN επαναχρησιμοποιεί τη βασική δομή δεδομένων και τον κώδικα σε επίπεδο λειτουργίας της MySQL, αλλά ενσωματώνει στενά την αναπαραγωγή αρχείων καταγραφής, τη διαχείριση αρχείων καταγραφής, την αναπαραγωγή αρχείων καταγραφής και την ανάκτηση σφαλμάτων με το πρωτόκολλο X-Paxos για να σχηματίσει το δικό του σύνολο πολλαπλών αντιγράφων και μηχανισμού κατάστασης. Η βασική διαφορά από το MGR είναι ότι το σημείο εισόδου για την πλειοψηφία καταγραφής συναλλαγών DN για την επίτευξη συναίνεσης είναι κατά τη διάρκεια της διαδικασίας υποβολής συναλλαγών της κύριας βάσης δεδομένων.
Ο λόγος για αυτόν τον σχεδιασμό είναι ότι το DN υποστηρίζει επί του παρόντος μόνο λειτουργία single-master, επομένως το αρχείο καταγραφής σε επίπεδο πρωτοκόλλου X-Paxos είναι ο ίδιος ο ακόλουθος Binlog επίσης παραλείπει το αρχείο καταγραφής αναμετάδοσης και το περιεχόμενο δεδομένων του μόνιμου αρχείου καταγραφής του και το αρχείο καταγραφής του ηγέτη. ισούνται με την ίδια τιμή.
MGR
DN
Θεωρητικά, τόσο το Paxos όσο και το Raft μπορούν να διασφαλίσουν τη συνέπεια των δεδομένων και τα αρχεία καταγραφής που έχουν φτάσει στην πλειοψηφία μετά το Crash Recovery δεν θα χαθούν, αλλά εξακολουθούν να υπάρχουν διαφορές σε συγκεκριμένα έργα.
MGR
Το XCOM ενσωματώνει πλήρως το πρωτόκολλο Paxos και όλα τα δεδομένα του πρωτοκόλλου του αποθηκεύονται πρώτα στην κρυφή μνήμη Από προεπιλογή, η συναλλαγή για να φτάσει στην πλειοψηφία δεν απαιτεί επιμονή στο αρχείο καταγραφής. Στην περίπτωση που οι περισσότερες πίτες είναι κάτω και το Leader αποτύχει, θα υπάρξει σοβαρό πρόβλημα RPO != 0.Ας υποθέσουμε ένα ακραίο σενάριο:
Σύμφωνα με τις προεπιλεγμένες παραμέτρους της κοινότητας, η πλειονότητα των συναλλαγών δεν απαιτεί επιμονή στο αρχείο καταγραφής και δεν εγγυάται RPO=0 Αυτό μπορεί να θεωρηθεί ως συμβιβασμός για την απόδοση στην υλοποίηση του έργου XCOM. Για να διασφαλίσετε το απόλυτο RPO=0, πρέπει να διαμορφώσετε την παράμετρο group_replication_consistency που ελέγχει τη συνοχή ανάγνωσης και εγγραφής σε AFTER, ωστόσο, σε αυτήν την περίπτωση, εκτός από την επιβάρυνση δικτύου 1,5 RTT, η συναλλαγή θα απαιτήσει μια επιβάρυνση καταγραφής IO για να φτάσει στην πλειοψηφία. και η απόδοση θα είναι πολύ κακή.
DN
Το PolarDB-X DN χρησιμοποιεί το X-Paxos για να εφαρμόσει ένα κατανεμημένο πρωτόκολλο και είναι βαθιά συνδεδεμένο με τη διαδικασία ομαδικής δέσμευσης της MySQL Όταν υποβάλλεται μια συναλλαγή, απαιτείται η πλειοψηφία να επιβεβαιώσει την τοποθέτηση και την επιμονή πριν επιτραπεί η πραγματική υποβολή. Το μεγαλύτερο μέρος της τοποθέτησης δίσκου εδώ αναφέρεται στην τοποθέτηση Binlog της κύριας βιβλιοθήκης Το νήμα IO της βιβλιοθήκης αναμονής λαμβάνει το αρχείο καταγραφής της κύριας βιβλιοθήκης και το γράφει στο δικό του Binlog για επιμονή. Επομένως, ακόμη και αν όλοι οι κόμβοι αποτύχουν σε ακραία σενάρια, τα δεδομένα δεν θα χαθούν και το RPO=0 μπορεί να είναι εγγυημένο.
Ο χρόνος RTO είναι στενά συνδεδεμένος με το χρόνο της κρύας επανεκκίνησης του ίδιου του συστήματος, το οποίο αντικατοπτρίζεται στις συγκεκριμένες βασικές λειτουργίες:Μηχανισμός ανίχνευσης σφαλμάτων->μηχανισμός ανάκτησης σφαλμάτων->μηχανισμός κύριας επιλογής->εξισορρόπηση αρχείων καταγραφής
MGR
DN
MGR
DN
Στη λειτουργία single-master, τα XCOM και DN X-Paxos της MGR, μια ισχυρή λειτουργία leader, ακολουθούν την ίδια βασική αρχή για την επιλογή του leader - τα αρχεία καταγραφής που έχουν συμφωνηθεί από το σύμπλεγμα δεν μπορούν να επαναφερθούν. Αλλά όταν πρόκειται για το αρχείο καταγραφής χωρίς συναίνεση, υπάρχουν διαφορές
MGR
DN
Η εξισορρόπηση αρχείων καταγραφής σημαίνει ότι υπάρχει καθυστέρηση αναπαραγωγής αρχείων καταγραφής μεταξύ της κύριας και της δευτερεύουσας βάσης δεδομένων και η δευτερεύουσα βάση δεδομένων πρέπει να εξισώσει τα αρχεία καταγραφής. Για κόμβους που επανεκκινούνται και αποκαθίστανται, η ανάκτηση ξεκινά συνήθως με τη βάση δεδομένων αναμονής και έχει ήδη σημειωθεί καθυστέρηση αναπαραγωγής αρχείων καταγραφής σε σύγκριση με την κύρια βάση δεδομένων και τα αρχεία καταγραφής πρέπει να εντοπίζονται στην κύρια βάση δεδομένων. Για εκείνους τους κόμβους που είναι φυσικά μακριά από το Leader, το να φτάσουν στην πλειοψηφία τους συνήθως δεν έχει καμία σχέση με αυτούς. Αυτές οι καταστάσεις απαιτούν συγκεκριμένη εφαρμογή μηχανικής για να διασφαλιστεί η έγκαιρη επίλυση των καθυστερήσεων αναπαραγωγής αρχείων καταγραφής.
MGR
DN
Η καθυστέρηση αναπαραγωγής βάσης δεδομένων αναμονής είναι η καθυστέρηση μεταξύ του χρόνου ολοκλήρωσης της ίδιας συναλλαγής στην κύρια βάση δεδομένων και της ώρας εφαρμογής της συναλλαγής στη βάση δεδομένων αναμονής Αυτό που ελέγχεται εδώ είναι η απόδοση της βάσης δεδομένων αναμονής Εφαρμογή αρχείου καταγραφής εφαρμογής. Επηρεάζει τον χρόνο που χρειάζεται η βάση δεδομένων αναμονής για να ολοκληρώσει την εφαρμογή δεδομένων της και να παρέχει υπηρεσίες ανάγνωσης και εγγραφής όταν προκύπτει εξαίρεση.
MGR
DN
Οι μεγάλες συναλλαγές δεν επηρεάζουν μόνο την υποβολή των συνηθισμένων συναλλαγών, αλλά επηρεάζουν επίσης τη σταθερότητα ολόκληρου του κατανεμημένου πρωτοκόλλου σε ένα κατανεμημένο σύστημα.
MGR
DN
MGR
DN
MGR | DN | ||
Αποτελεσματικότητα πρωτοκόλλου | Χρόνος υποβολής συναλλαγής | 1,5~2,5 RTT | 1 RTT |
Επιμονή της πλειοψηφίας | Αποθήκευση μνήμης XCOM | Επιμονή Binlog | |
αξιοπιστία | RPO=0 | Δεν είναι εγγυημένο από προεπιλογή | Πλήρως εγγυημένο |
Ανίχνευση βλαβών | Όλοι οι κόμβοι ελέγχουν ο ένας τον άλλον, το φόρτο δικτύου είναι υψηλό Ο κύκλος του καρδιακού παλμού δεν μπορεί να ρυθμιστεί | Ο κύριος κόμβος ελέγχει περιοδικά άλλους κόμβους Οι παράμετροι του κύκλου καρδιακών παλμών είναι ρυθμιζόμενες | |
Ανάκτηση κατάρρευσης πλειοψηφίας | χειρωνακτική παρέμβαση | Αυτόματη ανάκτηση | |
Ανάκτηση μειονοτήτων | Αυτόματη ανάκτηση στις περισσότερες περιπτώσεις, χειρωνακτική επέμβαση σε ειδικές περιπτώσεις | Αυτόματη ανάκτηση | |
Επιλέξτε τον κύριο | Καθορίστε ελεύθερα τη σειρά επιλογής | Καθορίστε ελεύθερα τη σειρά επιλογής | |
κούτσουρο γραβάτα | Τα αρχεία καταγραφής με καθυστέρηση δεν μπορούν να υπερβαίνουν τη μνήμη cache XCOM 1 GB | Τα αρχεία BInlog δεν διαγράφονται | |
Καθυστέρηση αναπαραγωγής βάσης δεδομένων σε κατάσταση αναμονής | Δύο στάδια + διπλό ένα, πολύ αργό | Ένα στάδιο + διπλό μηδέν, πιο γρήγορα | |
Μεγάλη δουλειά | Το προεπιλεγμένο όριο δεν είναι μεγαλύτερο από 143 MB | Χωρίς όριο μεγέθους | |
μορφή | Υψηλό κόστος διαθεσιμότητας | Πλήρως λειτουργικά τρία αντίγραφα, 3 αντίγραφα γενικής χρήσης αποθήκευσης δεδομένων | Αντιγραφή αρχείου καταγραφής, 2 αντίγραφα αποθήκευσης δεδομένων |
κόμβος μόνο για ανάγνωση | Υλοποιήθηκε με αντιγραφή master-slave | Το πρωτόκολλο συνοδεύεται από εφαρμογή αντιγραφής Leaner μόνο για ανάγνωση |
Το MGR εισήχθη στην MySQL 5.7.17, αλλά περισσότερες δυνατότητες που σχετίζονται με το MGR είναι διαθέσιμες μόνο στο MySQL 8.0 και σε MySQL 8.0.22 και νεότερες εκδόσεις, η συνολική απόδοση θα είναι πιο σταθερή και αξιόπιστη. Επομένως, επιλέξαμε την πιο πρόσφατη έκδοση 8.0.32 και των δύο μερών για συγκριτική δοκιμή.
Λαμβάνοντας υπόψη ότι υπάρχουν διαφορές στα περιβάλλοντα δοκιμών, τις μεθόδους μεταγλώττισης, τις μεθόδους ανάπτυξης, τις παραμέτρους λειτουργίας και τις μεθόδους δοκιμής κατά τη συγκριτική δοκιμή των PolarDB-X DN και MySQL MGR, οι οποίες μπορεί να οδηγήσουν σε ανακριβή δεδομένα σύγκρισης δοκιμών, αυτό το άρθρο θα επικεντρωθεί σε διάφορες λεπτομέρειες Προχωρήστε ως εξής:
προετοιμασία δοκιμής | PolarDB-X DN | MySQL MGR[1] |
Περιβάλλον υλικού | Χρησιμοποιώντας το ίδιο φυσικό μηχάνημα με μνήμη 96C 754 GB και δίσκο SSD | |
λειτουργικό σύστημα | Linux 4.9.168-019.ali3000.alios7.x86_64 | |
Έκδοση πυρήνα | Χρήση βασικής γραμμής πυρήνα που βασίζεται στην έκδοση κοινότητας 8.0.32 | |
Μέθοδος μεταγλώττισης | Μεταγλώττιση με το ίδιο RelWithDebInfo | |
Παράμετροι λειτουργίας | Χρησιμοποιήστε τον ίδιο επίσημο ιστότοπο PolarDB-X για να πουλήσετε το 32C128G με τις ίδιες προδιαγραφές και παραμέτρους | |
Μέθοδος ανάπτυξης | Ενιαία κύρια λειτουργία |
Σημείωση:
Ο έλεγχος απόδοσης είναι το πρώτο πράγμα στο οποίο προσέχουν όλοι όταν επιλέγουν μια βάση δεδομένων. Εδώ χρησιμοποιούμε το επίσημο εργαλείο sysbench για να δημιουργήσουμε 16 πίνακες, ο καθένας με 10 εκατομμύρια δεδομένα, για να εκτελέσουμε δοκιμές απόδοσης σε σενάρια OLTP και να ελέγξουμε και να συγκρίνουμε την απόδοση των δύο υπό διαφορετικές συνθήκες ταυτόχρονης χρήσης σε διαφορετικά σενάρια OLTP.Λαμβάνοντας υπόψη τις διαφορετικές καταστάσεις της πραγματικής ανάπτυξης, προσομοιώνουμε τα ακόλουθα τέσσερα σενάρια ανάπτυξης αντίστοιχα:
εικονογραφώ:
Ας εξετάσουμε την οριζόντια σύγκριση της απόδοσης τεσσάρων σεναρίων ανάπτυξης και τρία κέντρα σε τρία σημεία.
β) Λαμβάνοντας υπόψη τους αυστηρούς περιορισμούς στο RPO=0 κατά τη χρήση προϊόντων βάσης δεδομένων υψηλής διαθεσιμότητας, το MGR έχει ρυθμιστεί με RPO<>0 από προεπιλογή, θα συνεχίσουμε να προσθέτουμε συγκριτικά τεστ μεταξύ MGR RPO<>0 και RPO=0 σενάριο ανάπτυξης.
1 | 4 | 16 | 64 | 256 | ||
oltp_read_only | MGR_1 | 688.42 | 2731.68 | 6920.54 | 11492.88 | 14561.71 |
MGR_0 | 699.27 | 2778.06 | 7989.45 | 11590.28 | 15038.34 | |
DN | 656.69 | 2612.58 | 7657.03 | 11328.72 | 14771.12 | |
MGR_0 έναντι MGR_1 | 1.58% | 1.70% | 15.45% | 0.85% | 3.27% | |
DN εναντίον MGR_1 | -4.61% | -4.36% | 10.64% | -1.43% | 1.44% | |
DN έναντι MGR_0 | -6.09% | -5.96% | -4.16% | -2.26% | -1.78% | |
oltp_read_write | MGR_1 | 317.85 | 1322.89 | 3464.07 | 5052.58 | 6736.55 |
MGR_0 | 117.91 | 425.25 | 721.45 | 217.11 | 228.24 | |
DN | 360.27 | 1485.99 | 3741.36 | 5460.47 | 7536.16 | |
MGR_0 έναντι MGR_1 | -62.90% | -67.85% | -79.17% | -95.70% | -96.61% | |
DN εναντίον MGR_1 | 13.35% | 12.33% | 8.00% | 8.07% | 11.87% | |
DN έναντι MGR_0 | 205.55% | 249.44% | 418.59% | 2415.07% | 3201.86% | |
oltp_write_only | MGR_1 | 761.87 | 2924.1 | 7211.97 | 10374.15 | 16092.02 |
MGR_0 | 309.83 | 465.44 | 748.68 | 245.75 | 318.48 | |
DN | 1121.07 | 3787.64 | 7627.26 | 11684.37 | 15137.23 | |
MGR_0 έναντι MGR_1 | -59.33% | -84.08% | -89.62% | -97.63% | -98.02% | |
DN εναντίον MGR_1 | 47.15% | 29.53% | 5.76% | 12.63% | -5.93% | |
DN έναντι MGR_0 | 261.83% | 713.78% | 918.76% | 4654.58% | 4652.96% |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών:
Σύγκριση TPS | 1 | 4 | 16 | 64 | 256 | |
oltp_read_only | MGR_1 | 695.69 | 2697.91 | 7223.43 | 11699.29 | 14542.4 |
MGR_0 | 691.17 | 2708.6 | 7849.98 | 11636.94 | 14670.99 | |
DN | 645.11 | 2611.15 | 7628.39 | 11294.36 | 14647.22 | |
MGR_0 έναντι MGR_1 | -0.65% | 0.40% | 8.67% | -0.53% | 0.88% | |
DN εναντίον MGR_1 | -7.27% | -3.22% | 5.61% | -3.46% | 0.72% | |
DN έναντι MGR_0 | -6.66% | -3.60% | -2.82% | -2.94% | -0.16% | |
oltp_read_write | MGR_1 | 171.37 | 677.77 | 2230 | 3872.87 | 6096.62 |
MGR_0 | 117.11 | 469.17 | 765.64 | 813.85 | 812.46 | |
DN | 257.35 | 1126.07 | 3296.49 | 5135.18 | 7010.37 | |
MGR_0 έναντι MGR_1 | -31.66% | -30.78% | -65.67% | -78.99% | -86.67% | |
DN εναντίον MGR_1 | 50.17% | 66.14% | 47.82% | 32.59% | 14.99% | |
DN έναντι MGR_0 | 119.75% | 140.01% | 330.55% | 530.97% | 762.86% | |
oltp_write_only | MGR_1 | 248.37 | 951.88 | 2791.07 | 5989.57 | 11666.16 |
MGR_0 | 162.92 | 603.72 | 791.27 | 828.16 | 866.65 | |
DN | 553.69 | 2173.18 | 5836.64 | 10588.9 | 13241.74 | |
MGR_0 έναντι MGR_1 | -34.40% | -36.58% | -71.65% | -86.17% | -92.57% | |
DN εναντίον MGR_1 | 122.93% | 128.30% | 109.12% | 76.79% | 13.51% | |
DN έναντι MGR_0 | 239.85% | 259.96% | 637.63% | 1178.61% | 1427.92% |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών:
Σύγκριση TPS | 1 | 4 | 16 | 64 | 256 | |
oltp_read_only | MGR_1 | 687.76 | 2703.5 | 7030.37 | 11580.36 | 14674.7 |
MGR_0 | 687.17 | 2744.41 | 7908.44 | 11535.35 | 14656 | |
DN | 657.06 | 2610.58 | 7591.21 | 11174.94 | 14545.45 | |
MGR_0 έναντι MGR_1 | -0.09% | 1.51% | 12.49% | -0.39% | -0.13% | |
DN εναντίον MGR_1 | -4.46% | -3.44% | 7.98% | -3.50% | -0.88% | |
DN έναντι MGR_0 | -4.38% | -4.88% | -4.01% | -3.12% | -0.75% | |
oltp_read_write | MGR_1 | 29.13 | 118.64 | 572.25 | 997.92 | 2253.19 |
MGR_0 | 26.94 | 90.8 | 313.64 | 419.17 | 426.7 | |
DN | 254.87 | 1146.57 | 3339.83 | 5307.85 | 7171.95 | |
MGR_0 έναντι MGR_1 | -7.52% | -23.47% | -45.19% | -58.00% | -81.06% | |
DN εναντίον MGR_1 | 774.94% | 866.43% | 483.63% | 431.89% | 218.30% | |
DN έναντι MGR_0 | 846.07% | 1162.74% | 964.86% | 1166.28% | 1580.79% | |
oltp_write_only | MGR_1 | 30.81 | 145.54 | 576.61 | 1387.64 | 3705.51 |
MGR_0 | 28.68 | 108.86 | 387.48 | 470.5 | 476.4 | |
DN | 550.11 | 2171.64 | 5866.41 | 10381.72 | 14478.38 | |
MGR_0 έναντι MGR_1 | -6.91% | -25.20% | -32.80% | -66.09% | -87.14% | |
DN εναντίον MGR_1 | 1685.49% | 1392.13% | 917.40% | 648.16% | 290.73% | |
DN έναντι MGR_0 | 1818.10% | 1894.89% | 1413.99% | 2106.53% | 2939.12% |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών:
Σύγκριση TPS | 1 | 4 | 16 | 64 | 256 | |
oltp_read_only | MGR_1 | 688.49 | 2747.69 | 7853.91 | 11722.71 | 15292.73 |
MGR_0 | 687.66 | 2756.3 | 8005.11 | 11567.89 | 15055.69 | |
DN | 656.06 | 2600.35 | 7657.85 | 11227.56 | 14562.86 | |
MGR_0 έναντι MGR_1 | -0.12% | 0.31% | 1.93% | -1.32% | -1.55% | |
DN εναντίον MGR_1 | -4.71% | -5.36% | -2.50% | -4.22% | -4.77% | |
DN έναντι MGR_0 | -4.60% | -5.66% | -4.34% | -2.94% | -3.27% | |
oltp_read_write | MGR_1 | 26.01 | 113.98 | 334.95 | 693.34 | 2030.6 |
MGR_0 | 23.93 | 110.17 | 475.68 | 497.92 | 511.99 | |
DN | 122.06 | 525.88 | 1885.7 | 3314.9 | 5889.79 | |
MGR_0 έναντι MGR_1 | -8.00% | -3.34% | 42.02% | -28.19% | -74.79% | |
DN εναντίον MGR_1 | 369.28% | 361.38% | 462.98% | 378.11% | 190.05% | |
DN έναντι MGR_0 | 410.07% | 377.34% | 296.42% | 565.75% | 1050.37% | |
oltp_write_only | MGR_1 | 27.5 | 141.64 | 344.05 | 982.47 | 2889.85 |
MGR_0 | 25.52 | 155.43 | 393.35 | 470.92 | 504.68 | |
DN | 171.74 | 535.83 | 1774.58 | 4328.44 | 9429.24 | |
MGR_0 έναντι MGR_1 | -7.20% | 9.74% | 14.33% | -52.07% | -82.54% | |
DN εναντίον MGR_1 | 524.51% | 278.30% | 415.79% | 340.57% | 226.29% | |
DN έναντι MGR_0 | 572.96% | 244.74% | 351.15% | 819.15% | 1768.36% |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών:
Προκειμένου να συγκρίνουμε με σαφήνεια τις αλλαγές απόδοσης σε διαφορετικές μεθόδους ανάπτυξης, επιλέξαμε τα δεδομένα TPS του MGR και του DN υπό διαφορετικές μεθόδους ανάπτυξης στο σενάριο oltp_write_only 256 στην παραπάνω δοκιμή Χρησιμοποιώντας τα δεδομένα δοκιμής αίθουσας υπολογιστών ως βάση, υπολογίσαμε και Σύγκρινε τα δεδομένα TPS των διαφορετικών μεθόδων ανάπτυξης σε σύγκριση με τη γραμμή βάσης για να αντιληφθούν τη διαφορά στις αλλαγές απόδοσης κατά τη διάρκεια της ανάπτυξης μεταξύ πόλεων
MGR_1 (256 ταυτόχρονα) | DN (256 ταυτόχρονα) | Πλεονεκτήματα απόδοσης του DN σε σύγκριση με το MGR | |
Η ίδια αίθουσα υπολογιστών | 16092.02 | 15137.23 | -5.93% |
Τρία κέντρα στην ίδια πόλη | 11666.16 (72.50%) | 13241.74 (87.48%) | +13.50% |
Δύο θέσεις και τρία κέντρα | 3705.51 (23.03%) | 14478.38 (95.64%) | +290.72% |
Τρεις θέσεις και τρία κέντρα | 2889.85 (17.96%) | 9429.24 (62.29%) | +226.28% |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών:
Στην πραγματική χρήση, όχι μόνο δίνουμε προσοχή στα δεδομένα απόδοσης, αλλά πρέπει επίσης να δίνουμε προσοχή στο jitter απόδοσης. Σε τελική ανάλυση, αν το jitter μοιάζει με τρενάκι λούνα παρκ, η πραγματική εμπειρία χρήστη θα είναι πολύ κακή. Παρακολουθούμε και εμφανίζουμε δεδομένα εξόδου TPS σε πραγματικό χρόνο Λαμβάνοντας υπόψη ότι το ίδιο το εργαλείο sysbenc δεν υποστηρίζει δεδομένα παρακολούθησης απόδοσης, χρησιμοποιούμε τον μαθηματικό συντελεστή διακύμανσης ως δείκτη σύγκρισης:
Λαμβάνοντας ως παράδειγμα το 256 ταυτόχρονο σενάριο oltp_read_write, αναλύουμε στατιστικά το TPS του MGR_1 (RPO<>0) και του DN (RPO=0) στον ίδιο χώρο υπολογιστών, τρία κέντρα στην ίδια πόλη, τρία κέντρα σε δύο μέρη και τρία κέντρα σε τρία σημεία. Το πραγματικό γράφημα jitter είναι το ακόλουθο και τα πραγματικά δεδομένα ένδειξης jitter για κάθε σενάριο είναι τα εξής:
βιογραφικό | Η ίδια αίθουσα υπολογιστών | Τρία κέντρα στην ίδια πόλη | Δύο θέσεις και τρία κέντρα | Τρεις θέσεις και τρία κέντρα |
MGR_1 | 10.04% | 8.96% | 6.02% | 8.63% |
DN | 3.68% | 3.78% | 2.55% | 4.05% |
MGR_1/DN | 272.83% | 237.04% | 236.08% | 213.09% |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών:
Το βασικό χαρακτηριστικό μιας κατανεμημένης βάσης δεδομένων είναι η υψηλή διαθεσιμότητα Η αποτυχία οποιουδήποτε κόμβου στο σύμπλεγμα δεν θα επηρεάσει τη συνολική διαθεσιμότητα. Για την τυπική φόρμα ανάπτυξης 3 κόμβων με έναν κύριο και δύο αντίγραφα ασφαλείας που αναπτύσσονται στον ίδιο χώρο υπολογιστών, προσπαθήσαμε να πραγματοποιήσουμε δοκιμές χρηστικότητας στα ακόλουθα τρία σενάρια:
Όταν δεν υπάρχει φόρτωση, σκοτώστε τον ηγέτη και παρακολουθήστε τις αλλαγές κατάστασης κάθε κόμβου στο σύμπλεγμα και εάν είναι εγγράψιμος.
MGR | DN | |
Ξεκινώντας κανονικά | 0 | 0 |
σκοτώσει τον αρχηγό | 0 | 0 |
Βρέθηκε μη φυσιολογικός χρόνος κόμβου | 5 | 5 |
Ώρα να μειωθούν 3 κόμβοι σε 2 κόμβοι | 23 | 8 |
MGR | DN | |
Ξεκινώντας κανονικά | 0 | 0 |
σκοτώστε τον αρχηγό, τραβήξτε αυτόματα προς τα πάνω | 0 | 0 |
Βρέθηκε μη φυσιολογικός χρόνος κόμβου | 5 | 5 |
Ώρα να μειωθούν 3 κόμβοι σε 2 κόμβοι | 23 | 8 |
2 κόμβος επαναφορά 3 κόμβος χρόνος | 37 | 15 |
Μπορεί να φανεί από τα αποτελέσματα των δοκιμών ότι κάτω από συνθήκες πίεσης:
Χρησιμοποιήστε το sysbench για να πραγματοποιήσετε μια ταυτόχρονη δοκιμή πίεσης 16 νημάτων στο σενάριο oltp_read_write Στο 10ο δευτερόλεπτο του σχήματος, σκοτώστε έναν κόμβο αναμονής και παρατηρήστε τα δεδομένα TPS εξόδου σε πραγματικό χρόνο.
Μπορεί να φανεί από το διάγραμμα αποτελεσμάτων δοκιμής:
Συνεχίζοντας τη δοκιμή, κάνουμε επανεκκίνηση και επαναφορά της βάσης δεδομένων αναμονής και παρατηρούμε τις αλλαγές στα δεδομένα TPS της κύριας βάσης δεδομένων.
Μπορεί να φανεί από το διάγραμμα αποτελεσμάτων δοκιμής:
Προκειμένου να κατασκευάσουμε το σενάριο της πλειοψηφίας αποτυχίας MGR RPO<>0, χρησιμοποιούμε τη μέθοδο MTR Case της κοινότητας για να εκτελέσουμε δοκιμή έγχυσης σφάλματος στο MGR Η σχεδιασμένη περίπτωση είναι η εξής:
- --echo
- --echo ############################################################
- --echo # 1. Deploy a 3 members group in single primary mode.
- --source include/have_debug.inc
- --source include/have_group_replication_plugin.inc
- --let $group_replication_group_name= aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa
- --let $rpl_group_replication_single_primary_mode=1
- --let $rpl_skip_group_replication_start= 1
- --let $rpl_server_count= 3
- --source include/group_replication.inc
-
- --let $rpl_connection_name= server1
- --source include/rpl_connection.inc
- --let $server1_uuid= `SELECT @@server_uuid`
- --source include/start_and_bootstrap_group_replication.inc
-
- --let $rpl_connection_name= server2
- --source include/rpl_connection.inc
- --source include/start_group_replication.inc
-
- --let $rpl_connection_name= server3
- --source include/rpl_connection.inc
- --source include/start_group_replication.inc
-
- --echo
- --echo ############################################################
- --echo # 2. Init data
- --let $rpl_connection_name = server1
- --source include/rpl_connection.inc
- CREATE TABLE t1 (c1 INT PRIMARY KEY);
- INSERT INTO t1 VALUES(1);
-
- --source include/rpl_sync.inc
- SELECT * FROM t1;
-
- --let $rpl_connection_name = server2
- --source include/rpl_connection.inc
- SELECT * FROM t1;
-
- --let $rpl_connection_name = server3
- --source include/rpl_connection.inc
- SELECT * FROM t1;
-
- --echo
- --echo ############################################################
- --echo # 3. Mock crash majority members
-
- --echo # server 2 wait before write relay log
- --let $rpl_connection_name = server2
- --source include/rpl_connection.inc
- SET GLOBAL debug = '+d,wait_in_the_middle_of_trx';
-
- --echo # server 3 wait before write relay log
- --let $rpl_connection_name = server3
- --source include/rpl_connection.inc
- SET GLOBAL debug = '+d,wait_in_the_middle_of_trx';
-
-
- --echo # server 1 commit new transaction
- --let $rpl_connection_name = server1
- --source include/rpl_connection.inc
- INSERT INTO t1 VALUES(2);
- # server 1 commit t1(c1=2) record
- SELECT * FROM t1;
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- --echo # server 1 crash
- --source include/kill_mysqld.inc
-
- --echo # sleep enough time for electing new leader
- sleep 60;
-
- --echo
- --echo # server 3 check
- --let $rpl_connection_name = server3
- --source include/rpl_connection.inc
- SELECT * FROM t1;
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- --echo # server 3 crash and restart
- --source include/kill_and_restart_mysqld.inc
-
- --echo # sleep enough time for electing new leader
- sleep 60;
-
- --echo
- --echo # server 2 check
- --let $rpl_connection_name = server2
- --source include/rpl_connection.inc
- SELECT * FROM t1;
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- --echo # server 2 crash and restart
- --source include/kill_and_restart_mysqld.inc
-
- --echo # sleep enough time for electing new leader
- sleep 60;
-
- --echo
- --echo ############################################################
- --echo # 4. Check alive members, lost t1(c1=2) record
-
- --echo # server 3 check
- --let $rpl_connection_name= server3
- --source include/rpl_connection.inc
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- --echo # server 3 lost t1(c1=2) record
- SELECT * FROM t1;
-
- --echo
- --echo # server 2 check
- --let $rpl_connection_name = server2
- --source include/rpl_connection.inc
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- --echo # server 2 lost t1(c1=2) record
- SELECT * FROM t1;
- !include ../my.cnf
-
- [mysqld.1]
- loose-group_replication_member_weight=100
-
- [mysqld.2]
- loose-group_replication_member_weight=90
-
- [mysqld.3]
- loose-group_replication_member_weight=80
-
- [ENV]
- SERVER_MYPORT_3= @mysqld.3.port
- SERVER_MYSOCK_3= @mysqld.3.socket
Τα αποτελέσματα του case running είναι τα εξής:
-
- ############################################################
- # 1. Deploy a 3 members group in single primary mode.
- include/group_replication.inc [rpl_server_count=3]
- Warnings:
- Note #### Sending passwords in plain text without SSL/TLS is extremely insecure.
- Note #### Storing MySQL user name or password information in the master info repository is not secure and is therefore not recommended. Please consider using the USER and PASSWORD connection options for START SLAVE; see the 'START SLAVE Syntax' in the MySQL Manual for more information.
- [connection server1]
- [connection server1]
- include/start_and_bootstrap_group_replication.inc
- [connection server2]
- include/start_group_replication.inc
- [connection server3]
- include/start_group_replication.inc
-
- ############################################################
- # 2. Init data
- [connection server1]
- CREATE TABLE t1 (c1 INT PRIMARY KEY);
- INSERT INTO t1 VALUES(1);
- include/rpl_sync.inc
- SELECT * FROM t1;
- c1
- 1
- [connection server2]
- SELECT * FROM t1;
- c1
- 1
- [connection server3]
- SELECT * FROM t1;
- c1
- 1
-
- ############################################################
- # 3. Mock crash majority members
- # server 2 wait before write relay log
- [connection server2]
- SET GLOBAL debug = '+d,wait_in_the_middle_of_trx';
- # server 3 wait before write relay log
- [connection server3]
- SET GLOBAL debug = '+d,wait_in_the_middle_of_trx';
- # server 1 commit new transaction
- [connection server1]
- INSERT INTO t1 VALUES(2);
- SELECT * FROM t1;
- c1
- 1
- 2
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- CHANNEL_NAME MEMBER_HOST MEMBER_PORT MEMBER_STATE MEMBER_ROLE MEMBER_VERSION MEMBER_COMMUNICATION_STACK
- group_replication_applier 127.0.0.1 13000 ONLINE PRIMARY 8.0.32 XCom
- group_replication_applier 127.0.0.1 13002 ONLINE SECONDARY 8.0.32 XCom
- group_replication_applier 127.0.0.1 13004 ONLINE SECONDARY 8.0.32 XCom
- # server 1 crash
- # Kill the server
- # sleep enough time for electing new leader
-
- # server 3 check
- [connection server3]
- SELECT * FROM t1;
- c1
- 1
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- CHANNEL_NAME MEMBER_HOST MEMBER_PORT MEMBER_STATE MEMBER_ROLE MEMBER_VERSION MEMBER_COMMUNICATION_STACK
- group_replication_applier 127.0.0.1 13002 ONLINE PRIMARY 8.0.32 XCom
- group_replication_applier 127.0.0.1 13004 ONLINE SECONDARY 8.0.32 XCom
- # server 3 crash and restart
- # Kill and restart
- # sleep enough time for electing new leader
-
- # server 2 check
- [connection server2]
- SELECT * FROM t1;
- c1
- 1
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- CHANNEL_NAME MEMBER_HOST MEMBER_PORT MEMBER_STATE MEMBER_ROLE MEMBER_VERSION MEMBER_COMMUNICATION_STACK
- group_replication_applier 127.0.0.1 13002 ONLINE PRIMARY 8.0.32 XCom
- group_replication_applier 127.0.0.1 13004 UNREACHABLE SECONDARY 8.0.32 XCom
- # server 2 crash and restart
- # Kill and restart
- # sleep enough time for electing new leader
-
- ############################################################
- # 4. Check alive members, lost t1(c1=2) record
- # server 3 check
- [connection server3]
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- CHANNEL_NAME MEMBER_HOST MEMBER_PORT MEMBER_STATE MEMBER_ROLE MEMBER_VERSION MEMBER_COMMUNICATION_STACK
- group_replication_applier NULL OFFLINE
- # server 3 lost t1(c1=2) record
- SELECT * FROM t1;
- c1
- 1
-
- # server 2 check
- [connection server2]
- select CHANNEL_NAME,MEMBER_HOST,MEMBER_PORT,MEMBER_STATE,MEMBER_ROLE,MEMBER_VERSION,MEMBER_COMMUNICATION_STACK from performance_schema.replication_group_members order by MEMBER_PORT;
- CHANNEL_NAME MEMBER_HOST MEMBER_PORT MEMBER_STATE MEMBER_ROLE MEMBER_VERSION MEMBER_COMMUNICATION_STACK
- group_replication_applier NULL OFFLINE
- # server 2 lost t1(c1=2) record
- SELECT * FROM t1;
- c1
- 1
Η κατά προσέγγιση λογική μιας περίπτωσης που αναπαράγει αριθμούς που λείπουν είναι η εξής:
Σύμφωνα με την παραπάνω περίπτωση, για το MGR, όταν η πλειονότητα των διακομιστών είναι εκτός λειτουργίας και η κύρια βάση δεδομένων δεν είναι διαθέσιμη, αφού αποκατασταθεί η βάση δεδομένων αναμονής, θα υπάρξει απώλεια δεδομένων RPO<>0 και το αρχείο επιτυχούς δέσμευσης που ήταν που επιστράφηκε αρχικά στον πελάτη χάνεται.
Για το DN, η επίτευξη της πλειοψηφίας απαιτεί τα αρχεία καταγραφής να διατηρούνται στην πλειοψηφία τους, επομένως ακόμη και στο παραπάνω σενάριο, τα δεδομένα δεν θα χαθούν και το RPO=0 μπορεί να είναι εγγυημένο.
Στην παραδοσιακή λειτουργία αναμονής της MySQL, η βάση δεδομένων αναμονής περιλαμβάνει γενικά νήματα IO και νήματα Εφαρμογή Μετά την εισαγωγή του πρωτοκόλλου Paxos, το νήμα IO συγχρονίζει το binlog της βάσης δεδομένων ενεργού και αναμονής εξαρτάται από την επιβάρυνση της Εφαρμογής αναπαραγωγής της βάσης δεδομένων αναμονής, εδώ γινόμαστε η καθυστέρηση αναπαραγωγής της βάσης δεδομένων αναμονής.
Χρησιμοποιούμε το sysbench για να δοκιμάσουμε το σενάριο oltp_write_only και να ελέγξουμε τη διάρκεια της καθυστέρησης στην αναπαραγωγή της βάσης δεδομένων αναμονής κάτω από 100 ταυτότητες και διαφορετικό αριθμό συμβάντων.Ο χρόνος καθυστέρησης αναπαραγωγής της βάσης δεδομένων αναμονής μπορεί να προσδιοριστεί παρακολουθώντας τη στήλη APPLYING_TRANSACTION_ORIGINAL_COMMIT_TIMESTAMP του πίνακα performance_schema.replication_applier_status_by_worker για να δείτε εάν κάθε εργαζόμενος εργάζεται σε πραγματικό χρόνο για να προσδιορίσει εάν η αναπαραγωγή έχει τελειώσει.
Μπορεί να φανεί από το διάγραμμα αποτελεσμάτων δοκιμής:
MGR | DN | ||
εκτέλεση | Διαβάστε τη συναλλαγή | διαμέρισμα | διαμέρισμα |
εγγραφή συναλλαγής | Η απόδοση δεν είναι τόσο καλή όσο το DN όταν το RPO<>0 Όταν RPO=0, η απόδοση είναι πολύ κατώτερη από το DN Η απόδοση της ανάπτυξης μεταξύ πόλεων μειώθηκε σοβαρά κατά 27%~82% | Η απόδοση της συναλλαγής εγγραφής είναι πολύ υψηλότερη από το MGR Η απόδοση ανάπτυξης μεταξύ πόλεων μειώνεται κατά 4% σε 37%. | |
Jitter | Το jitter απόδοσης είναι σοβαρό, το εύρος jitter είναι 6~10% | Σχετικά σταθερό στο 3%, μόνο το ήμισυ της MGR | |
RTO | Η κύρια βάση δεδομένων είναι εκτός λειτουργίας | Η ανωμαλία ανακαλύφθηκε σε 5 δευτερόλεπτα και μειώθηκε σε δύο κόμβους σε 23 δευτερόλεπτα. | Η ανωμαλία ανακαλύφθηκε σε 5s και μειώθηκε σε δύο κόμβους σε 8s. |
Επανεκκινήστε την κύρια βιβλιοθήκη | Μια ανωμαλία ανακαλύφθηκε σε 5 δευτερόλεπτα και τρεις κόμβοι αποκαταστάθηκαν σε 37 δευτερόλεπτα. | Μια ανωμαλία ανιχνεύεται σε 5 δευτερόλεπτα και τρεις κόμβοι αποκαθίστανται σε 15 δευτερόλεπτα. | |
Διακοπή λειτουργίας της βάσης δεδομένων αντιγράφων ασφαλείας | Η κίνηση της κύριας βάσης δεδομένων έπεσε στο 0 για 20 δευτερόλεπτα. Μπορεί να μετριαστεί ενεργοποιώντας ρητά το group_replication_paxos_single_leader. | Συνεχής υψηλή διαθεσιμότητα της κύριας βάσης δεδομένων | |
Επανεκκίνηση βάσης δεδομένων σε κατάσταση αναμονής | Η κίνηση της κύριας βάσης δεδομένων έπεσε στο 0 για 10 δευτερόλεπτα. Η ρητή ενεργοποίηση του group_replication_paxos_single_leader επίσης δεν έχει κανένα αποτέλεσμα. | Συνεχής υψηλή διαθεσιμότητα της κύριας βάσης δεδομένων | |
RPO | Υποτροπή περιστατικού | RPO<>0 όταν το κόμμα της πλειοψηφίας πέφτει Το Performance και το RPO=0 δεν μπορούν να έχουν και τα δύο. | RPO = 0 |
Καθυστέρηση βάσης δεδομένων αναμονής | Χρόνος αναπαραγωγής της βάσης δεδομένων αντιγράφων ασφαλείας | Οι καθυστερήσεις κύριας και εφεδρικής είναι πολύ μεγάλες. Η απόδοση και ο λανθάνουσα καθυστέρηση του κύριου αντιγράφου ασφαλείας δεν μπορούν να επιτευχθούν ταυτόχρονα. | Ο συνολικός χρόνος που δαπανάται για τη συνολική αναπαραγωγή βάσης δεδομένων σε κατάσταση αναμονής είναι 4% του MGR, δηλαδή 25 φορές μεγαλύτερος από αυτόν του MGR. |
παράμετρος | βασική παράμετρος |
| Προεπιλεγμένη διαμόρφωση, δεν χρειάζεται οι επαγγελματίες να προσαρμόσουν τη διαμόρφωση |
Μετά από εις βάθος τεχνική ανάλυση και σύγκριση απόδοσης,PolarDB-X Με το πρωτόκολλο X-Paxos που έχει αναπτύξει μόνος του και μια σειρά βελτιστοποιημένων σχεδίων, η DN έχει επιδείξει πολλά πλεονεκτήματα σε σχέση με το MySQL MGR όσον αφορά την απόδοση, την ορθότητα, τη διαθεσιμότητα και τα γενικά έξοδα πόρων , πρέπει να ληφθούν υπόψη διάφορες καταστάσεις όπως το jitter διακοπής της βάσης δεδομένων αναμονής, οι διακυμάνσεις της απόδοσης ανάκτησης καταστροφών μεταξύ μηχανημάτων και η σταθερότητα, επομένως, εάν θέλετε να χρησιμοποιήσετε σωστά το MGR, πρέπει να είστε εξοπλισμένοι με επαγγελματική ομάδα τεχνικής και λειτουργίας και συντήρησης υποστήριξη.
Όταν αντιμετωπίζετε απαιτήσεις μεγάλης κλίμακας, υψηλής συγχρονισμού και υψηλής διαθεσιμότητας, ο κινητήρας αποθήκευσης PolarDB-X έχει μοναδικά τεχνικά πλεονεκτήματα και εξαιρετική απόδοση σε σύγκριση με το MGR σε εξωγενή σενάρια.PolarDB-XΗ κεντρική έκδοση που βασίζεται σε DN (τυπική έκδοση) έχει μια καλή ισορροπία μεταξύ λειτουργιών και απόδοσης, καθιστώντας την μια εξαιρετικά ανταγωνιστική λύση βάσης δεδομένων.