WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Σας προτείνω να διαβάσετε τη μεταγραφή της αναφοράς του Georgy Rylov στις αρχές του 2020 «WAL-G: νέες ευκαιρίες και επέκταση της κοινότητας»

Οι συντηρητές ανοιχτού κώδικα αντιμετωπίζουν πολλές προκλήσεις καθώς μεγαλώνουν. Πώς να γράψετε όλο και περισσότερες απαιτούμενες λειτουργίες, να διορθώσετε όλο και περισσότερα προβλήματα και να καταφέρετε να δείτε όλο και περισσότερα αιτήματα έλξης; Χρησιμοποιώντας το WAL-G (εργαλείο δημιουργίας αντιγράφων ασφαλείας για PostgreSQL) ως παράδειγμα, θα σας πω πώς λύσαμε αυτά τα προβλήματα ξεκινώντας ένα μάθημα για την ανάπτυξη ανοιχτού κώδικα στο πανεπιστήμιο, τι πετύχαμε και πού θα προχωρήσουμε στη συνέχεια.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Γεια και πάλι σε όλους! Είμαι προγραμματιστής Yandex από το Yekaterinburg. Και σήμερα θα μιλήσω για το WAL-G.

Ο τίτλος της αναφοράς δεν έλεγε ότι επρόκειτο για αντίγραφα ασφαλείας. Ξέρει κανείς τι είναι το WAL-G; Ή το ξέρουν όλοι; Σηκώστε το χέρι σας αν δεν ξέρετε. Άγιε σκατά, ήρθες στην έκθεση και δεν ξέρεις περί τίνος πρόκειται.

Επιτρέψτε μου να σας πω τι θα γίνει σήμερα. Συμβαίνει η ομάδα μας να κάνει backup εδώ και αρκετό καιρό. Και αυτή είναι μια άλλη αναφορά σε μια σειρά όπου μιλάμε για το πώς αποθηκεύουμε δεδομένα με ασφάλεια, ασφάλεια, βολική και αποτελεσματική χρήση.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Σε προηγούμενες σειρές υπήρχαν πολλές αναφορές από τον Andrei Borodin και τον Vladimir Leskov. Ήμασταν πολλοί. Και για το WAL-G μιλάμε πολλά χρόνια.

clck.ru/F8ioz — https://www.highload.ru/moscow/2018/abstracts/3964

clck.ru/Ln8Qw — https://www.highload.ru/moscow/2019/abstracts/5981

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

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Πριν από μερικά χρόνια, το WAL-G ήταν ένα αρκετά μικρό έργο που πήραμε από την Citus Data. Και μόλις το πήραμε. Και αναπτύχθηκε από ένα άτομο.

Και μόνο το WAL-G δεν είχε:

  • Αντίγραφο ασφαλείας από αντίγραφο.
  • Δεν υπήρχαν πρόσθετα αντίγραφα ασφαλείας.
  • Δεν υπήρχαν αντίγραφα ασφαλείας του WAL-Delta.
  • Και έλειπαν ακόμα πολλά.

Μέσα σε αυτά τα λίγα χρόνια, το WAL-G έχει αναπτυχθεί πολύ.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Και μέχρι το 2020, όλα τα παραπάνω έχουν ήδη εμφανιστεί. Και σε αυτό προστέθηκε αυτό που έχουμε τώρα:

  • Περισσότερα από 1 αστέρια στο GitHub.
  • 150 πιρούνια.
  • Περίπου 15 ανοιχτά PR.
  • Και πολλοί ακόμη συντελεστές.
  • Και ανοιχτά θέματα συνέχεια. Και αυτό παρά το γεγονός ότι κυριολεκτικά πηγαίνουμε εκεί κάθε μέρα και κάνουμε κάτι για αυτό.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Και καταλήξαμε στο συμπέρασμα ότι αυτό το έργο απαιτεί περισσότερη προσοχή, ακόμη και όταν εμείς οι ίδιοι δεν χρειάζεται να εφαρμόσουμε τίποτα για την υπηρεσία Διαχειριζόμενων Βάσεων Δεδομένων στο Yandex.

Και κάπου το φθινόπωρο του 2018, μας ήρθε μια ιδέα στο μυαλό. Συνήθως η ομάδα έχει πολλούς τρόπους για να αναπτύξει ορισμένες δυνατότητες ή να διορθώσει σφάλματα εάν δεν έχετε αρκετά χέρια. Για παράδειγμα, μπορείτε να προσλάβετε έναν άλλο προγραμματιστή και να του πληρώσετε χρήματα. Ή μπορείτε να αναλάβετε έναν ασκούμενο για λίγο και να του πληρώσετε και κάποιο μισθό. Αλλά υπάρχει ακόμα μια αρκετά μεγάλη ομάδα ανθρώπων, μερικοί από τους οποίους ήδη ξέρουν πραγματικά πώς να γράφουν κώδικα. Απλώς δεν ξέρετε πάντα ποια είναι η ποιότητα του κωδικού.

Το σκεφτήκαμε και αποφασίσαμε να προσπαθήσουμε να προσελκύσουμε μαθητές. Αλλά οι μαθητές δεν θα συμμετέχουν σε όλα μαζί μας. Θα κάνουν μόνο ένα μέρος της δουλειάς. Και, για παράδειγμα, θα γράψουν δοκιμές, θα διορθώσουν σφάλματα, θα εφαρμόσουν λειτουργίες που δεν επηρεάζουν την κύρια λειτουργικότητα. Η κύρια λειτουργία είναι η δημιουργία αντιγράφων ασφαλείας και η επαναφορά αντιγράφων ασφαλείας. Εάν κάνουμε λάθος στη δημιουργία αντιγράφου ασφαλείας, θα αντιμετωπίσουμε απώλεια δεδομένων. Και κανείς δεν το θέλει αυτό, φυσικά. Όλοι θέλουν όλα να είναι πολύ ασφαλή. Επομένως, φυσικά, δεν θέλουμε να αφήσουμε κώδικα που εμπιστευόμαστε λιγότερο από τον δικό μας. Δηλαδή, οποιοσδήποτε μη κρίσιμος κωδικός είναι αυτό που θα θέλαμε να λάβουμε από τους πρόσθετους εργάτες μας.

Υπό ποιες προϋποθέσεις γίνεται αποδεκτή η φοιτητική δημοσιότητα;

  • Είναι υποχρεωμένοι να καλύψουν τον κωδικό τους με δοκιμές. Όλα πρέπει να γίνονται στο CI.
  • Και περνάμε επίσης από 2 κριτικές. Ένα από τον Andrey Borodin και ένα από εμένα.
  • Και επιπλέον, για να ελέγξω ότι αυτό δεν θα σπάσει τίποτα στην υπηρεσία μας, ανεβάζω ξεχωριστά τη συναρμολόγηση με αυτό το commit. Και ελέγχουμε σε δοκιμές από άκρο σε άκρο ότι τίποτα δεν αποτυγχάνει.

Ειδικό μάθημα ανοιχτού κώδικα

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Λίγα λόγια για το γιατί αυτό χρειάζεται και γιατί αυτό, μου φαίνεται, είναι μια ωραία ιδέα.

Για εμάς το κέρδος είναι προφανές:

  • Παίρνουμε επιπλέον χέρια.
  • Και αναζητούμε υποψηφίους για την ομάδα ανάμεσα σε έξυπνους μαθητές που γράφουν έξυπνο κώδικα.

Ποιο είναι το όφελος για τους μαθητές;

Μπορεί να είναι λιγότερο προφανείς, επειδή οι μαθητές, τουλάχιστον, δεν λαμβάνουν χρήματα για τον κωδικό που γράφουν, αλλά λαμβάνουν μόνο βαθμούς για τα μαθητικά τους αρχεία.

Τους ρώτησα για αυτό. Και με τα λόγια τους:

  • Εμπειρία συντελεστή στο Open Source.
  • Πάρτε μια γραμμή στο βιογραφικό σας.
  • Αποδείξτε τον εαυτό σας και περάστε μια συνέντευξη στο Yandex.
  • Γίνετε μέλος του GSoC.
  • +1 ειδικό μάθημα για όσους θέλουν να γράψουν κώδικα.

Δεν θα μιλήσω για το πώς ήταν δομημένο το μάθημα. Θα πω μόνο ότι το WAL-G ήταν το κύριο έργο. Συμπεριλάβαμε επίσης έργα όπως το Odyssey, το PostgreSQL και το ClickHouse σε αυτό το μάθημα.

Και έδωσαν προβλήματα όχι μόνο σε αυτό το μάθημα, αλλά έδωσαν και διπλώματα και μαθήματα.

Τι γίνεται με το όφελος για τους χρήστες;

Τώρα ας περάσουμε στο κομμάτι που σας ενδιαφέρει περισσότερο. Τι σε ωφελεί αυτό; Το θέμα είναι ότι οι μαθητές διόρθωσαν πολλά σφάλματα. Και κάναμε τις δυνατότητες αιτήματος που μας ζητήσατε να κάνουμε.

Και επιτρέψτε μου να σας πω για τα πράγματα που θέλατε από καιρό και που έχουν πραγματοποιηθεί.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Υποστήριξη επιτραπέζιων χώρων. Οι χώροι τραπεζιών στο WAL-G αναμένονταν πιθανώς από την κυκλοφορία του WAL-G, επειδή το WAL-G είναι ο διάδοχος ενός άλλου εργαλείου δημιουργίας αντιγράφων ασφαλείας WAL-E, όπου υποστηριζόταν η δημιουργία αντιγράφων ασφαλείας της βάσης δεδομένων με tablespace.

Επιτρέψτε μου να σας υπενθυμίσω εν συντομία τι είναι και γιατί χρειάζεται όλο αυτό. Συνήθως, όλα τα δεδομένα Postgres καταλαμβάνουν έναν κατάλογο στο σύστημα αρχείων, που ονομάζεται βάση. Και αυτός ο κατάλογος περιέχει ήδη όλα τα αρχεία και τους υποκαταλόγους που απαιτούνται από την Postgres.

Οι χώροι τραπεζιών είναι κατάλογοι που περιέχουν δεδομένα Postgres, αλλά δεν βρίσκονται εκτός του βασικού καταλόγου. Η διαφάνεια δείχνει ότι τα tablespacs βρίσκονται εκτός του βασικού καταλόγου.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Πώς φαίνεται αυτό για την ίδια την Postgres; Υπάρχει ένας ξεχωριστός υποκατάλογος pg_tblspc στον βασικό κατάλογο. Και περιέχει συμβολικούς συνδέσμους προς καταλόγους που στην πραγματικότητα περιέχουν δεδομένα Postgres εκτός του βασικού καταλόγου.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Όταν χρησιμοποιείτε όλα αυτά, τότε για εσάς αυτές οι εντολές μπορεί να φαίνονται κάπως έτσι. Δηλαδή, δημιουργείτε έναν πίνακα σε κάποιο καθορισμένο χώρο πίνακα και βλέπετε πού βρίσκεται τώρα. Αυτές είναι οι δύο τελευταίες γραμμές, οι δύο τελευταίες εντολές καλούνται. Και εκεί είναι ξεκάθαρο ότι υπάρχει κάποιος τρόπος. Αλλά στην πραγματικότητα, αυτός δεν είναι ο πραγματικός τρόπος. Αυτή είναι η προκαθορισμένη διαδρομή από τον κατάλογο βάσης στο tablespace. Και από εκεί αντιστοιχίζεται με έναν συμβολικό σύνδεσμο που οδηγεί στα πραγματικά δεδομένα σας.

Δεν τα χρησιμοποιούμε όλα αυτά στην ομάδα μας, αλλά χρησιμοποιήθηκαν από πολλούς άλλους χρήστες του WAL-E που μας έγραψαν ότι ήθελαν να μετακομίσουν στο WAL-G, αλλά αυτό τους εμπόδιζε. Αυτό τώρα υποστηρίζεται.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Ένα άλλο χαρακτηριστικό που μας έφερε η ειδική μας πορεία είναι το catchup. Οι άνθρωποι που πιθανότατα έχουν δουλέψει περισσότερο με την Oracle παρά με την Postgres γνωρίζουν για το catchup.

Εν συντομία για το τι είναι. Η τοπολογία συμπλέγματος στην υπηρεσία μας μπορεί συνήθως να μοιάζει κάπως έτσι. Έχουμε αφέντη. Υπάρχει ένα αντίγραφο που εκπέμπει ροές καταγραφής εγγραφής από αυτό. Και το αντίγραφο λέει στον κύριο σε ποιο LSN είναι αυτήν τη στιγμή. Και κάπου παράλληλα με αυτό, το αρχείο καταγραφής μπορεί να αρχειοθετηθεί. Και εκτός από την αρχειοθέτηση του αρχείου καταγραφής, τα αντίγραφα ασφαλείας αποστέλλονται επίσης στο cloud. Και αποστέλλονται αντίγραφα ασφαλείας delta.

Τι θα μπορούσε να είναι το πρόβλημα; Όταν έχετε μια αρκετά μεγάλη βάση δεδομένων, μπορεί να αποδειχθεί ότι το αντίγραφό σας αρχίζει να υστερεί πολύ πίσω από το κύριο. Και υστερεί τόσο πολύ που δεν μπορεί να τον προλάβει ποτέ. Αυτό το πρόβλημα συνήθως πρέπει να λυθεί με κάποιο τρόπο.

Και ο πιο εύκολος τρόπος είναι να αφαιρέσετε το αντίγραφο και να το ανεβάσετε ξανά, γιατί δεν θα προλάβει ποτέ και το πρόβλημα πρέπει να αντιμετωπιστεί. Αλλά αυτό είναι πολύ μεγάλο χρονικό διάστημα, επειδή η επαναφορά ενός ολόκληρου αντιγράφου ασφαλείας βάσης δεδομένων 10 TB είναι πολύ, πολύ μεγάλος χρόνος. Και θέλουμε να τα κάνουμε όλα αυτά το συντομότερο δυνατό, εάν προκύψουν τέτοια προβλήματα. Και γι' αυτό ακριβώς είναι το catchup.

Το Catchup σάς επιτρέπει να χρησιμοποιείτε αντίγραφα ασφαλείας delta, τα οποία αποθηκεύονται στο cloud με αυτόν τον τρόπο. Λέτε σε ποιο LSN βρίσκεται αυτήν τη στιγμή η καθυστερημένη ρεπλίκα και το προσδιορίζετε στην εντολή catchup για να δημιουργήσετε ένα αντίγραφο ασφαλείας δέλτα μεταξύ αυτού του LSN και του LSN στο οποίο βρίσκεται αυτήν τη στιγμή το σύμπλεγμα σας. Και μετά από αυτό επαναφέρετε αυτό το αντίγραφο ασφαλείας στο αντίγραφο που υστερούσε.

Άλλες βάσεις

Οι μαθητές μας έφεραν επίσης πολλά χαρακτηριστικά ταυτόχρονα. Δεδομένου ότι στο Yandex μαγειρεύουμε όχι μόνο Postgres, έχουμε επίσης MySQL, MongoDB, Redis, ClickHouse, κάποια στιγμή χρειάστηκε να μπορέσουμε να δημιουργήσουμε αντίγραφα ασφαλείας με ανάκτηση σε χρόνο για MySQL, και έτσι υπήρχε η ευκαιρία να ανεβάσουμε τους στο σύννεφο.

Και θέλαμε να το κάνουμε με παρόμοιο τρόπο με αυτό που κάνει το WAL-G. Και αποφασίσαμε να πειραματιστούμε και να δούμε πώς θα ήταν όλα.

Και στην αρχή, χωρίς να μοιράζονται αυτή τη λογική με κανέναν τρόπο, έγραψαν τον κώδικα στο πιρούνι. Είδαν ότι έχουμε κάποιο μοντέλο εργασίας και μπορεί να πετάξει. Τότε σκεφτήκαμε ότι η κύρια κοινότητά μας είναι οι postgresists, χρησιμοποιούν το WAL-G. Και επομένως πρέπει με κάποιο τρόπο να διαχωρίσουμε αυτά τα μέρη. Δηλαδή, όταν επεξεργαζόμαστε κώδικα για το Postgres, δεν σπάμε τη MySQL· όταν επεξεργαζόμαστε τη MySQL, δεν σπάμε το Postgres.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Η πρώτη ιδέα σχετικά με τον τρόπο διαχωρισμού αυτού ήταν η ιδέα της χρήσης της ίδιας προσέγγισης που χρησιμοποιείται στις επεκτάσεις PostgreSQL. Και, στην πραγματικότητα, για να δημιουργήσετε ένα αντίγραφο ασφαλείας MySQL έπρεπε να εγκαταστήσετε κάποιο είδος δυναμικής βιβλιοθήκης.

Αλλά εδώ η ασυμμετρία αυτής της προσέγγισης είναι αμέσως ορατή. Όταν δημιουργείτε αντίγραφα ασφαλείας για το Postgres, βάζετε ένα κανονικό αντίγραφο ασφαλείας για το Postgres και όλα είναι καλά. Και για τη MySQL αποδεικνύεται ότι εγκαθιστάτε ένα αντίγραφο ασφαλείας για το Postgres και επίσης εγκαθιστάτε μια δυναμική βιβλιοθήκη για τη MySQL για αυτό. Ακούγεται κάπως περίεργο. Το σκεφτήκαμε κι εμείς και αποφασίσαμε ότι αυτή δεν ήταν η λύση που χρειαζόμασταν.

Διάφορες εκδόσεις για Postgres, MySQL, MongoDB, Redis

Αλλά αυτό μας επέτρεψε, μας φαίνεται, να καταλήξουμε στη σωστή απόφαση - να διαθέσουμε διαφορετικές συνελεύσεις για διαφορετικές βάσεις. Αυτό κατέστησε δυνατή την απομόνωση της λογικής που συνδέεται με τα αντίγραφα ασφαλείας διαφόρων βάσεων δεδομένων που θα έχουν πρόσβαση στο κοινό API που εφαρμόζει το WAL-G.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Αυτό είναι το μέρος που γράψαμε μόνοι μας - πριν δώσουμε στους μαθητές τα προβλήματα. Δηλαδή, αυτό είναι ακριβώς το μέρος όπου θα μπορούσαν να κάνουν κάτι λάθος, οπότε αποφασίσαμε ότι καλύτερα να κάνουμε κάτι τέτοιο και όλα θα πάνε καλά.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Μετά από αυτό δώσαμε προβλήματα. Αμέσως διαλύθηκαν. Οι μαθητές έπρεπε να υποστηρίξουν τρεις βάσεις.

Αυτή είναι η MySQL, την οποία έχουμε δημιουργήσει αντίγραφα ασφαλείας χρησιμοποιώντας το WAL-G με αυτόν τον τρόπο για περισσότερο από ένα χρόνο.

Και τώρα η MongoDB πλησιάζει την παραγωγή, όπου την ολοκληρώνουν με ένα αρχείο. Μάλιστα, γράψαμε το πλαίσιο για όλα αυτά. Έπειτα οι μαθητές έγραψαν κάποια πράγματα εφαρμόσιμα. Και μετά τα φέρνουμε σε μια κατάσταση που μπορούμε να δεχτούμε στην παραγωγή.

Αυτά τα προβλήματα δεν φαινόταν ότι οι μαθητές χρειάζονταν να γράψουν πλήρη εργαλεία δημιουργίας αντιγράφων ασφαλείας για καθεμία από αυτές τις βάσεις δεδομένων. Δεν είχαμε τέτοιο πρόβλημα. Το πρόβλημά μας ήταν ότι θέλαμε ανάκτηση σε χρόνο και θέλαμε να δημιουργήσουμε αντίγραφα ασφαλείας στο cloud. Και ζήτησαν από τους μαθητές να γράψουν κάποιο κώδικα που θα το έλυνε αυτό. Οι μαθητές χρησιμοποίησαν ήδη υπάρχοντα εργαλεία δημιουργίας αντιγράφων ασφαλείας, τα οποία με κάποιο τρόπο λαμβάνουν αντίγραφα ασφαλείας και στη συνέχεια τα κόλλησαν όλα μαζί με το WAL-G, το οποίο τα προώθησε όλα στο σύννεφο. Και πρόσθεσαν επίσης την ανάκτηση σημείου-σε-χρόνου σε αυτό.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Τι άλλο έφεραν οι μαθητές; Έφεραν υποστήριξη κρυπτογράφησης Libsodium στο WAL-G.

Έχουμε επίσης πολιτικές αποθήκευσης αντιγράφων ασφαλείας. Τώρα τα αντίγραφα ασφαλείας μπορούν να επισημανθούν ως μόνιμα. Και κατά κάποιο τρόπο είναι πιο βολικό για την υπηρεσία σας να αυτοματοποιεί τη διαδικασία αποθήκευσης τους.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Ποιο ήταν το αποτέλεσμα αυτού του πειράματος;

Περισσότερα από 100 άτομα εγγράφηκαν αρχικά για το μάθημα. Στην αρχή δεν είπα ότι το πανεπιστήμιο στο Αικατερινούπολη είναι το Ομοσπονδιακό Πανεπιστήμιο Ural. Τα ανακοινώσαμε όλα εκεί. Εγγράφηκαν 100 άτομα. Στην πραγματικότητα, πολύ λιγότεροι άνθρωποι άρχισαν να κάνουν κάτι, περίπου 30 άτομα.

Ακόμα λιγότεροι ολοκλήρωσαν το μάθημα, γιατί ήταν απαραίτητο να γραφτούν τεστ για τους ήδη υπάρχοντες κωδικούς. Επίσης, διορθώστε κάποιο σφάλμα ή δημιουργήστε κάποια δυνατότητα. Και κάποιοι φοιτητές εξακολουθούν να έκλεισαν το μάθημα.

Επί του παρόντος, κατά τη διάρκεια αυτού του μαθήματος, οι μαθητές έχουν επιδιορθώσει περίπου 14 ζητήματα και έχουν φτιάξει 10 χαρακτηριστικά διαφόρων μεγεθών. Και, μου φαίνεται, αυτή είναι μια πλήρης αντικατάσταση ενός ή δύο προγραμματιστών.

Μεταξύ άλλων, εκδώσαμε διπλώματα και μαθήματα. Και 12 πήραν διπλώματα. Οι 6 από αυτούς έχουν ήδη αμυνθεί στο «5». Όσοι έμειναν δεν είχαν ακόμη προστασία, αλλά νομίζω ότι όλα θα πάνε καλά και για αυτούς.

Σχέδια για το μέλλον

Τι σχέδια έχουμε για το μέλλον;

Τουλάχιστον εκείνα τα αιτήματα λειτουργιών που έχουμε ήδη ακούσει από χρήστες και θέλουμε να κάνουμε. Αυτό:

  • Παρακολούθηση της ορθότητας της παρακολούθησης της γραμμής χρόνου στο αρχείο αντιγράφων ασφαλείας συμπλέγματος HA. Μπορείτε να το κάνετε αυτό με το WAL-G. Και νομίζω ότι θα έχουμε μαθητές που θα ασχοληθούν με αυτό το θέμα.
  • Έχουμε ήδη ένα άτομο υπεύθυνο για τη μεταφορά αντιγράφων ασφαλείας και WAL μεταξύ των cloud.
  • Και πρόσφατα δημοσιεύσαμε μια ιδέα ότι μπορούμε να επιταχύνουμε το WAL-G ακόμη περισσότερο, αποσυσκευάζοντας σταδιακά αντίγραφα ασφαλείας χωρίς να ξαναγράψουμε σελίδες και βελτιστοποιώντας τα αρχεία που στέλνουμε εκεί.

Μπορείτε να τα μοιραστείτε εδώ

Προς τι αυτή η αναφορά; Επιπλέον, τώρα, εκτός από τα 4 άτομα που υποστηρίζουν αυτό το έργο, έχουμε επιπλέον χέρια, από τα οποία είναι αρκετά. Ειδικά αν τους γράψετε σε προσωπικό μήνυμα. Και αν δημιουργήσετε αντίγραφα ασφαλείας των δεδομένων σας και το κάνετε χρησιμοποιώντας το WAL-G ή θέλετε να μεταβείτε στο WAL-G, τότε μπορούμε πολύ εύκολα να ικανοποιήσουμε τις επιθυμίες σας.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

Αυτός είναι ένας κωδικός QR και ένας σύνδεσμος. Μπορείτε να τα διαβάσετε και να γράψετε όλες τις ευχές σας. Για παράδειγμα, δεν διορθώνουμε κάποιο σφάλμα. Ή θέλετε πραγματικά κάποια δυνατότητα, αλλά για κάποιο λόγο δεν υπάρχει ακόμα σε κανένα αντίγραφο ασφαλείας, συμπεριλαμβανομένου του δικού μας. Φροντίστε να γράψετε για αυτό.

WAL-G: νέες δυνατότητες και επέκταση της κοινότητας. Γκεόργκι Ρίλοφ

ερωτήσεις

Γειά σου! Ευχαριστώ για την αναφορά! Ερώτηση για το WAL-G, αλλά όχι για την Postgres. Το WAL-G δημιουργεί αντίγραφα ασφαλείας της MySQL και καλεί ένα επιπλέον αντίγραφο ασφαλείας. Εάν λάβουμε σύγχρονες εγκαταστάσεις στο CentOS και αν εγκαταστήσετε τη MySQL, θα εγκατασταθεί το MariDB. Από την έκδοση 10.3 δεν υποστηρίζεται επιπλέον αντίγραφο ασφαλείας, υποστηρίζεται το αντίγραφο ασφαλείας MariDB. Πώς τα πάτε με αυτό;

Προς το παρόν δεν έχουμε προσπαθήσει να δημιουργήσουμε αντίγραφα ασφαλείας του MariDB. Είχαμε αιτήματα για υποστήριξη του FoundationDB, αλλά γενικά, αν υπάρχει τέτοιο αίτημα, τότε μπορούμε να βρούμε άτομα που θα το κάνουν. Δεν είναι τόσο μακρύ ή δύσκολο όσο νομίζω.

Καλό απόγευμα Ευχαριστώ για την αναφορά! Ερώτηση σχετικά με πιθανές νέες δυνατότητες. Είστε έτοιμοι να κάνετε το WAL-G να λειτουργεί με κασέτες, ώστε να μπορείτε να δημιουργείτε αντίγραφα ασφαλείας σε κασέτες;

Δημιουργία αντιγράφων ασφαλείας σε αποθήκευση κασέτας προφανώς σημαίνει;

Ναι.

Υπάρχει ο Αντρέι Μποροντίν, που μπορεί να απαντήσει σε αυτή την ερώτηση καλύτερα από εμένα.

(Andrey) Ναι, ευχαριστώ για την ερώτηση! Είχαμε ένα αίτημα να μεταφέρουμε ένα αντίγραφο ασφαλείας σε κασέτα από την αποθήκευση cloud. Και για αυτό πριόνισμα μεταφορά ανάμεσα στα σύννεφα. Επειδή η μεταφορά από σύννεφο σε σύννεφο είναι μια γενικευμένη έκδοση της μεταφοράς ταινίας. Επιπλέον, έχουμε μια επεκτάσιμη αρχιτεκτονική όσον αφορά τους Αποθηκευτικούς χώρους. Παρεμπιπτόντως, πολλά Storoges γράφτηκαν από φοιτητές. Και αν γράψετε Αποθήκευση για κασέτα, τότε, φυσικά, θα υποστηρίζεται. Είμαστε έτοιμοι να εξετάσουμε τα αιτήματα έλξης. Εκεί πρέπει να γράψετε ένα αρχείο, να διαβάσετε ένα αρχείο. Εάν κάνετε αυτά τα πράγματα στο Go, συνήθως καταλήγετε με 50 γραμμές κώδικα. Στη συνέχεια, η ταινία θα υποστηρίζεται στο WAL-G.

Ευχαριστώ για την αναφορά! Ενδιαφέρουσα διαδικασία ανάπτυξης. Η δημιουργία αντιγράφων ασφαλείας είναι ένα σοβαρό κομμάτι λειτουργικότητας που πρέπει να καλύπτεται καλά από δοκιμές. Όταν εφαρμόσατε τη λειτουργικότητα για νέες βάσεις δεδομένων, οι μαθητές έγραψαν και τα τεστ ή τα γράψατε μόνοι σας και μετά δώσατε την υλοποίηση στους μαθητές;

Οι μαθητές έγραψαν επίσης τεστ. Αλλά οι μαθητές έγραψαν περισσότερα για χαρακτηριστικά όπως νέες βάσεις δεδομένων. Έγραψαν τεστ ένταξης. Και έγραψαν μοναδιαίες δοκιμές. Εάν η ενσωμάτωση περάσει, δηλαδή αυτή τη στιγμή, αυτό είναι ένα σενάριο που εκτελείτε χειροκίνητα ή έχετε το cron να το κάνει, για παράδειγμα. Δηλαδή το σενάριο εκεί είναι πολύ ξεκάθαρο.

Οι μαθητές δεν έχουν μεγάλη εμπειρία. Η αναθεώρηση απαιτεί πολύ χρόνο;

Ναι, οι κριτικές χρειάζονται πολύ χρόνο. Δηλαδή, συνήθως, όταν πολλοί committers έρχονται ταυτόχρονα και λένε ότι έκανα αυτό, έκανα εκείνο, τότε πρέπει να σκεφτείς και να αφιερώσεις περίπου μισή μέρα για να καταλάβεις τι έγραψαν εκεί. Γιατί ο κώδικας πρέπει να διαβαστεί προσεκτικά. Δεν είχαν συνέντευξη. Δεν τα γνωρίζουμε πολύ καλά, οπότε χρειάζεται σημαντικός χρόνος.

Ευχαριστώ για την αναφορά! Προηγουμένως, ο Andrey Borodin δήλωσε ότι το archive_command στο WAL-G θα πρέπει να κληθεί απευθείας. Αλλά στην περίπτωση κάποιου είδους κασέτας συστάδας, χρειαζόμαστε πρόσθετη λογική για να προσδιορίσουμε τον κόμβο από τον οποίο θα στείλουμε τους άξονες. Πώς λύνετε μόνοι σας αυτό το πρόβλημα;

Ποιο είναι το πρόβλημά σου εδώ; Ας υποθέσουμε ότι έχετε ένα σύγχρονο αντίγραφο με το οποίο κάνετε ένα αντίγραφο ασφαλείας; Ή τι?

(Andrey) Το γεγονός είναι ότι πράγματι το WAL-G προορίζεται να χρησιμοποιηθεί χωρίς σενάρια κελύφους. Αν κάτι λείπει, τότε ας προσθέσουμε τη λογική που πρέπει να υπάρχει μέσα στο WAL-G. Όσο για το από πού πρέπει να προέρχεται η αρχειοθέτηση, πιστεύουμε ότι η αρχειοθέτηση πρέπει να προέρχεται από τον τρέχοντα κύριο στο σύμπλεγμα. Η αρχειοθέτηση από ένα αντίγραφο είναι κακή ιδέα. Υπάρχουν διάφορα πιθανά σενάρια με προβλήματα. Ειδικότερα, προβλήματα με την αρχειοθέτηση χρονοδιαγραμμάτων και τυχόν πρόσθετες πληροφορίες. Ευχαριστώ για την ερώτηση!

(Διευκρίνιση: Ξεφορτωθήκαμε τα σενάρια του κελύφους σε αυτό το θέμα)

Καλό απόγευμα! Ευχαριστώ για την αναφορά! Με ενδιαφέρει η λειτουργία catchup για την οποία μιλήσατε. Βρεθήκαμε αντιμέτωποι με μια κατάσταση όπου ένα αντίγραφο ήταν πίσω και δεν μπορούσε να προλάβει. Και δεν βρήκα περιγραφή αυτού του χαρακτηριστικού στα έγγραφα WAL-G.

Το Catchup εμφανίστηκε κυριολεκτικά στις 20 Ιανουαρίου 2020. Η τεκμηρίωση ίσως χρειάζεται περισσότερη δουλειά. Το γράφουμε μόνοι μας και δεν το γράφουμε πολύ καλά. Και ίσως θα έπρεπε να αρχίσουμε να απαιτούμε από τους μαθητές να το γράψουν.

Έχει κυκλοφορήσει ήδη;

Το αίτημα έλξης είναι ήδη νεκρό, δηλαδή το έλεγξα. Το δοκίμασα σε ένα δοκιμαστικό σύμπλεγμα. Μέχρι στιγμής δεν είχαμε μια κατάσταση όπου θα μπορούσαμε να το δοκιμάσουμε σε ένα παράδειγμα μάχης.

Πότε να περιμένουμε;

Δεν γνωρίζω. Περίμενε ένα μήνα, θα το ελέγξουμε σίγουρα.

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο