Δημιουργία αντιγράφου ασφαλείας MySQL χρησιμοποιώντας το βοηθητικό πρόγραμμα XtraBackup

Percona XtraBackup είναι ένα βοηθητικό πρόγραμμα για τη δημιουργία αντιγράφων ασφαλείας βάσεων δεδομένων MySQL.

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

XtraBackup 2.4 μπορεί να δημιουργήσει αντίγραφα ασφαλείας πινάκων InnoDBXtraDB и MyISAM σε διακομιστές MySQL 5.11, 5.5, 5.6 και 5.7, καθώς και στον διακομιστή Περόνα για MySQL с XtraDB.

Για να δουλέψω με MySQL 8.x θα πρέπει να χρησιμοποιηθεί η έκδοση XtraBackup 8.x. Αυτό το άρθρο θα μιλήσει μόνο για XtraBackup 2.4.

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

Εάν το συνολικό μέγεθος των βάσεων δεδομένων MySQL είναι σημαντικό (δεκάδες gigabyte), τότε το τυπικό βοηθητικό πρόγραμμα mysqldump δεν θα σας επιτρέψει να δημιουργήσετε γρήγορα ένα αντίγραφο ασφαλείας και η επαναφορά του dump θα πάρει πολύ χρόνο.

Εγκατάσταση

Εγκατάσταση XtraBackup από το αποθετήριο ικανός Περκόνα.

Εκτελέστε τις παρακάτω εντολές διαδοχικά:

wget https://repo.percona.com/apt/percona-release_latest.$(lsb_release -sc)_all.deb

sudo dpkg -i percona-release_latest.$(lsb_release -sc)_all.deb

sudo apt-get update 

sudo apt-get install percona-xtrabackup-24

2. Μετά την εγκατάσταση, εκτελέστε την εντολή xtrabackup -v. Επειδή, είναι σημαντικό να βεβαιωθείτε ότι το βοηθητικό πρόγραμμα λειτουργεί σωστά στον διακομιστή. Ως αποτέλεσμα, κάτι τέτοιο θα εμφανιστεί στην οθόνη:

xtrabackup: αναγνωρισμένα ορίσματα διακομιστή: - datadir=/var/lib/mysql - tmpdir=/tmp - server-id=1 - logbin=/var/log/mysql/mysql-bin.log - innodbbufferpoolsize=16384M - innodbfilepertable=1 - innodbflushmethod=Odirect — innodbflushlogattrxcommit=0xtrabackup έκδοση 2.4.20 βασισμένη στον διακομιστή MySQL 5.7.26 Linux (x8664) (αναγνωριστικό αναθεώρησης: c8b4056)

Δημιουργία αντιγράφου ασφαλείας MySQL χρησιμοποιώντας το βοηθητικό πρόγραμμα XtraBackup

Δικαιώματα πρόσβασης, δικαιώματα και προνόμια 

Το XtraBackup θα πρέπει να είναι σε θέση:

  • Συνδεθείτε στον διακομιστή MySQL.

  • Να έχετε δικαιώματα πρόσβασης στον κατάλογο datadir

  • Όταν δημιουργείτε ένα αντίγραφο ασφαλείας, έχετε δικαιώματα εγγραφής για την καθορισμένη παράμετρο στόχος-σκην κατάλογος.

Τι είναι το datadir;

datadir είναι ο κατάλογος όπου ο διακομιστής της βάσης δεδομένων MySQL αποθηκεύει δεδομένα. Όλες οι βάσεις δεδομένων, όλοι οι πίνακες είναι εκεί. Στις περισσότερες διανομές Linux, ο προεπιλεγμένος κατάλογος είναι / var / lib / mysql.

Τι είναι ο κατάλογος target-dir;

στόχος-σκην - Αυτός είναι ο κατάλογος όπου θα αποθηκευτεί το αντίγραφο ασφαλείας.

Ο χρήστης της βάσης δεδομένων χρειάζεται τα ακόλουθα δικαιώματα πρόσβασης στους πίνακες και τις βάσεις δεδομένων για δημιουργία αντιγράφων ασφαλείας:

  • ΕΠΑΝΑΦΟΡΤΩΣΗ και ΚΛΕΙΔΩΜΑ ΠΙΝΑΚΩΝ

  • ΠΕΛΑΤΗΣ ΑΝΑΠΑΡΑΓΩΓΗΣ

  • ΔΗΜΙΟΥΡΓΗΣΤΕ ΤΡΑΠΕΖΟΧΩΡΟ

  • ΔΙΑΔΙΚΑΣΙΑ

  • SUPER

  • ΔΗΜΙΟΥΡΓΩ

  • ΕΝΘΕΤΟ

  • SELECT

Διαμόρφωση 

Διαμόρφωση XtraBackup γίνεται χρησιμοποιώντας επιλογές που συμπεριφέρονται ίδια με τις τυπικές επιλογές MySQL.

Τι σημαίνει αυτό;

Οι παράμετροι διαμόρφωσης μπορούν να καθοριστούν είτε στη γραμμή εντολών είτε στο αρχείο διαμόρφωσης DBMS, για παράδειγμα στο /etc/my.cnf.

Το βοηθητικό πρόγραμμα XtraBackup διαβάζει κατατμήσεις μετά την εκκίνηση [Mysqld] и [xtrabackup] από αρχεία διαμόρφωσης MySQL. Αυτό γίνεται έτσι ώστε το βοηθητικό πρόγραμμα να μπορεί να χρησιμοποιήσει τις ρυθμίσεις του DBMS σας χωρίς να χρειάζεται να καθορίζει μη αυτόματα τις παραμέτρους κατά τη διάρκεια κάθε δημιουργίας αντιγράφων ασφαλείας.

Για παράδειγμα, η τιμή datadir και κάποιες παραμέτρους InnoDB Λαμβάνουμε XtraBackup από τη διαμόρφωση του DBMS σας.

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

Δεν χρειάζεται να προσθέσετε παραμέτρους my.cnf. Όλες οι απαιτούμενες παράμετροι μπορούν να καθοριστούν στη γραμμή εντολών. Συνήθως το μόνο πράγμα που μπορεί να τοποθετηθεί άνετα στο τμήμα [xtrabackup] σας my.cnf είναι μια παράμετρος target_dir, το οποίο από προεπιλογή καθορίζει τον κατάλογο όπου θα τοποθετηθούν τα αντίγραφα ασφαλείας. Αλλά αυτό είναι προαιρετικό.

Ένα παράδειγμα καθορισμού της διαδρομής προς τον κατάλογο με ένα αντίγραφο ασφαλείας my.cnf:

[xtrabackup]
target_dir = /data/backups/mysql/

Εφεδρικό σενάριο

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

#!/bin/bash

# Удаляем данные в каталоге бекапа
rm -rf /mysql/backup

# Cоздаём бекап
xtrabackup --user=xtrabackup 
 --password=xxxx_SECRET_xxxx 
 --backup 
 --target-dir=/mysql/backup

# Выполняем подготовку бекапа для развёртывания
xtrabackup --prepare --target-dir=/mysql/backup

# Создаём архив
tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-"$(date +%F-%H:%M:%S)".gz /mysql/backup

Τι συμβαίνει κατά την εκτέλεση του σεναρίου;

Πρώτα απ 'όλα, διαγράφουμε (διαγράφουμε) τον κατάλογο στον οποίο θα αποθηκεύσουμε το αντίγραφο ασφαλείας:

rm -rf /mysql/backup.

Στη συνέχεια, χρησιμοποιώντας το βοηθητικό πρόγραμμα XtraBackup δημιουργήστε ένα αντίγραφο ασφαλείας και αποθηκεύστε το /mysql/backup/:

xtrabackup --user=xtrabackup --password=xxxxz1cYf95550Gc6xxxxxxxpE3rB03xxxx --backup --target-dir=/mysql/backup

Προηγουμένως, δημιουργήσαμε έναν χρήστη στη MySQL xtrabackup με τα απαιτούμενα προνόμια. Χρησιμοποιώντας την παράμετρο target-dir καθορίζουμε τον κατάλογο όπου πρέπει να αποθηκευτεί το αντίγραφο ασφαλείας.

Важный момента!

Σημειώστε τη γραμμή του σεναρίου:

xtrabackup --prepare --target-dir=/mysql/backup

Δεδομένα καταλόγου /mysql/backup δεν είναι συνεπή μέχρι να ψηθούν. 

Το γεγονός είναι ότι ενδέχεται να προκύψουν αλλαγές κατά την αντιγραφή αρχείων. Λειτουργία xtrabackup --prepare --target-dir=/mysql/backup κάνει τα δεδομένα αντιγράφων ασφαλείας απόλυτα συνεπή με την πάροδο του χρόνου.

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

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

tar -zcvf /home/developer/dumps/xtrabackup-all-dbs-«$(date % F% H% M% S)».gz /mysql/backup

Επαναφορά αντιγράφου ασφαλείας 

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

Η διαδικασία ανάκτησης δεδομένων είναι πολύ απλή. Πρέπει να εξαγάγετε το αντίγραφο ασφαλείας από το αρχείο και να αντικαταστήσετε τα δεδομένα datadir.

Πώς να αντικαταστήσετε δεδομένα στο datadir;

Ας εξετάσουμε δύο επιλογές.

Επιλογή 1

Χρησιμοποιήστε το βοηθητικό πρόγραμμα XtraBackup. Πρέπει να ορίσετε μια επιλογή --αντιγραφή

Η παρακάτω εντολή θα μεταφέρει το αντίγραφο ασφαλείας στο datadir διακομιστής στόχος:

xtrabackup --copy-back --target-dir=/mysql/backup

Επιλογή 2

Μπορείτε να το κάνετε διαφορετικά, κάντε χωρίς το βοηθητικό πρόγραμμα XtraBackup.

Το μόνο που χρειάζεται να κάνετε είναι να αντιγράψετε το αντίγραφο ασφαλείας στο datadir. Μπορείτε να το κάνετε αυτό με cp ή rsync.

Είναι σημαντικό να κατανοήσετε ότι η διαδικασία για την επαναφορά ενός αντιγράφου ασφαλείας συνοψίζεται στην απλή αντικατάσταση των περιεχομένων του καταλόγου datadir.

Πριν ξεκινήσετε την επαναφορά ενός αντιγράφου ασφαλείας στον διακομιστή προορισμού, πρέπει:

  • Διακοπή διακομιστή MySQL.

  • Εκκαθάριση φακέλου datadir ή μετακινήστε το περιεχόμενό του σε άλλη τοποθεσία. Κατάλογος datadir πρέπει να είναι κενό.

Μετά την ολοκλήρωση της μεταφοράς δεδομένων σε datadir Ο διακομιστής MySQL μπορεί να ξεκινήσει.

Υλικά που χρησιμοποιούνται

Επίσημη τεκμηρίωση Περόνα XtraBackup.

Πηγή: www.habr.com

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