Τι είναι το Always On Availability Group

Τι είναι το Always On Availability Group
Τι είναι το Always On Availability Group

Το Always On Availability Group είναι η δυνατότητα που μας παρέχει η Microsoft στον SQL Server για να κάνουμε Replicate τις βάσεις μας σε έως οκτώ Secondary Nodes(servers) ως μία λύση για High Availability, Disaster Recovery και για ανάγνωση χωρίς να απασχολείται το Primary Node.

Τα Secondary αντίγραφα των βάσεων μπορούν να είναι προσβάσιμα για ανάγνωση, να γίνονται εκεί διαδικασίες maintenance όπως Backup, έλεγχοι ακεραιότητας των βάσεων και τέλος σε περίπτωση κάποιο καταστροφικού γεγονότος (Disaster) να κάνουμε failover σε αυτό.

Για να δημιουργήσουμε ένα Always On Availability Group απαιτήτε το κάθε Node(server) που θέλουμε να έχει αντίγραφο των βάσεων ως Secondary να ανήκει σε ένα Windows Server Failover Cluster(WSFC) μαζί με το Primary.

Σε περίπτωση που θέλουμε να έχουμε την δυνατότητα για automatic failover σε Secondary θα πρέπει να έχουμε εγκαταστήσει στο Quorum του Cluster και έναν Witness. Ως Witness μπορεί να οριστεί ένας κοινόχρηστος φάκελος, ένας κοινόχρηστος δίσκος ή ένα Azure Storage.

Η δουλειά του Witness είναι να επικοινωνεί και με όλα τα Nodes και σε περίπτωση που κάποιο παρουσιάζει βλάβη ή χαθεί η επικοινωνία μεταξύ τους, να ψηφίζει για την υγεία του Cluster ώστε να συνεχίσει να είναι up and running.

Τι είναι το Always On Availability Group
docs.microsoft.com

Τι επιλογές έχουμε για το Replication των βάσεων

Κάτα την τροποποίηση του Availability Group διαλέγουμε το availability mode. Στο availability mode ορίζεται αν το replication γίνεται σύγχρονα ή ασύγχρονα. Οι διαφορές μεταξύ τους είναι οι εξής:

Asynchronous-commit

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

Synchronous-commit

Όταν επιλέγουμε σύγχρονο commit το Primary μας περιμένει πριν κάνει commit μία συναλλαγή να έχει γραφτεί πρώτα στο log της Secondary βάσης. Έτσι το σύγχρονο commit με εγγυάται ότι δεν έχει χαθεί από τα Secondary καμία συναλλαγή που έχει γίνει στο Primary. Η επίλογή αυτή όμως φέρνει καθυστερίσεις στον χρόνο που ολοκληρώνονται οι συναλλαγές και πρέπει να αποφεύγονται αν έχουμε δικτυακά προβλήματα.

Τι επιλογες για Failover έχουμε

Αν για κάποιο λόγο π.χ. Disaster θέλουμε να κάνουμε failover σε κάποιο Secondary, ανάλογα με τον τύπο του συγχρονισμού που έχουμε επιλέξει, έχουμε και διαφορετικές επιλογές στο failover που μπορούμε να επιλέξουμε.

Manual failover

Στην περίπτωση του manual failover η διαδικασία αλλαγής των ρόλων από Secondary σε Primary και αντίστροφα γίνεται χειροκίνητα από τους διαχειριστές. Αν έχουμε επιλέξει η Secondary να ενημερώνεται σύγχρονα τότε δεν υπάρχει η πιθανότητα να χάσουμε δεδομένα. Από την άλλη αν η Secondary ενημερώνεται ασύγχρονα τότε το manual failover γίνεται force και υπάρχει η πιθανότητα να χάσουμε δεδομένα από συναλλαγές που δεν είχανε προλάβει να γραφτούν σε αυτό.

Automatic failover

Για να επιλέξουμε το automatic failover πρέπει υποχρεωτικά το Secondary να ενημερώνεται σύγχρονα και να έχουμε ορίσει έναν Witness στο Quorum του Windows Cluster. Σε αύτη την περίπτωση σε περίπτωση βλάβης του Primary το Secondary γίνεται αυτόματα Primary χωρίς να υπάρχει πιθανότητα να έχουν χαθεί δεδομένα και όταν επανέλθει το πρώην Primary ορίζεται ως Secondary και συνεχίζεται ο συγχρονισμός αυτόματα.

Τι είναι τα Basic Availability Groups και σε τι διαφέρουν από τα Always On Availability Groups

Σε περίπτωση που η έκδοση του SQL Server είναι Standard και όχι Enterprise τότε δεν μπορούμε να κάνουμε χρήση των Always On Availability Groups, αλλά έχουμε στην θέση τους τα Basic Availability Groups.

Στα Basic Availability Groups εξακολουθούμε να έχουμε τη δυνατότητα να επιλέξουμε για σύγχρονο ή ασύγχρονο commit στο replication και την δυνατότητα για automatic failover αν συμβεί κάτι στο Primary Node μας. Όμως έχουμε τους εξής περιορισμούς:

  • Στο κάθε Basic Availability Group μπορούμε να έχουμε μόνο μία μεμονωμένη βάση άνα Group (μπορούμε όμως να έχουμε πολλά Groups)
  • Μπορούμε να έχουμε μόνο μέχρι 2 Nodes (Primary και Secondary) με ένα μόνο αντίγραφο της βάσης
  • Δεν μπορεί η standby βάση να έχει πρόσβαση για read
  • Δεν μπορούμε να παίρνουμε τα backups στην standby
  • Δεν μπορούμε να τρέξουμε ελέγχους ακεραιότητας της βάσης στην standby

Πηγές:

Μοιράσου το

Αφήστε μία απάντηση