Android

Πώς να δημιουργήσετε αντίγραφα ασφαλείας και να επαναφέρετε τις βάσεις δεδομένων mysql με το mysqldump

Building Dynamic Web Apps with Laravel by Eric Ouyang

Building Dynamic Web Apps with Laravel by Eric Ouyang

Πίνακας περιεχομένων:

Anonim

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

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

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

Σύνταξη εντολών Mysqldump

Πριν πάτε στον τρόπο χρήσης της εντολής mysqldump, ας αρχίσουμε αναθεωρώντας τη βασική σύνταξη.

Οι εκφράσεις χρησιμότητας mysqldump λαμβάνουν την ακόλουθη μορφή:

mysqldump > file.sql

  • options - Οι επιλογές mysqldump file.sql - Το αρχείο σφαλμάτων (backup)

Για να χρησιμοποιήσετε την εντολή mysqldump, ο διακομιστής MySQL πρέπει να είναι προσβάσιμος και να εκτελείται.

Δημιουργία αντιγράφων ασφαλείας μιας ενιαίας βάσης δεδομένων MySQL

Η πιο κοινή περίπτωση χρήσης του εργαλείου mysqldump είναι η δημιουργία αντιγράφων ασφαλείας μιας ενιαίας βάσης δεδομένων.

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

mysqldump -u root -p database_name > database_name.sql

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

mysqldump database_name > database_name.sql

Δημιουργία αντιγράφων ασφαλείας πολλαπλών βάσεων δεδομένων MySQL

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

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

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

Δημιουργία αντιγράφων ασφαλείας όλων των βάσεων δεδομένων MySQL

Χρησιμοποιήστε την επιλογή --all-databases για να δημιουργήσετε αντίγραφα ασφαλείας όλων των βάσεων δεδομένων MySQL:

mysqldump -u root -p --all-databases > all_databases.sql

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

Δημιουργήστε αντίγραφα ασφαλείας όλων των βάσεων δεδομένων MySQL για να διαχωρίσετε αρχεία

Το βοηθητικό πρόγραμμα mysqldump δεν παρέχει τη δυνατότητα δημιουργίας αντιγράφων ασφαλείας όλων των βάσεων δεδομένων σε ξεχωριστά αρχεία, αλλά το επιτυγχάνουμε εύκολα με ένα απλό βρόχο FORh:

for DB in $(mysql -e 'show databases' -s --skip-column-names); do mysqldump $DB > "$DB.sql"; done

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

Δημιουργήστε μια συμπιεσμένη βάση δεδομένων MySQL Backup

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

mysqldump database_name | gzip > database_name.sql.gz

Δημιουργήστε ένα αντίγραφο ασφαλείας με χρονική σήμανση

mysqldump database_name > database_name-$(date +%Y%m%d).sql

Η παραπάνω εντολή θα δημιουργήσει ένα αρχείο με την ακόλουθη μορφή database_name-20180617.sql

Επαναφορά μνήμης MySQL

Μπορείτε να επαναφέρετε μια απόρριψη MySQL χρησιμοποιώντας το εργαλείο mysql . Η γενική σύνταξη της εντολής έχει ως εξής:

mysqld database_name < file.sql

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

Στο ακόλουθο παράδειγμα, η πρώτη εντολή θα δημιουργήσει μια βάση δεδομένων με όνομα database_name και στη συνέχεια θα εισάγει το dump database_name.sql σε αυτό:

mysql -u root -p -e "create database database_name"; mysql -u root -p database_name < database_name.sql

Επαναφέρετε μια ενιαία βάση δεδομένων MySQL από μια πλήρη βάση δεδομένων MySQL

mysql --one-database database_name < all_databases.sql

Εξαγωγή και εισαγωγή βάσης δεδομένων MySQL σε μία εντολή

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

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

Η παραπάνω εντολή θα διοχετεύσει την έξοδο σε πελάτη mysql στον απομακρυσμένο κεντρικό υπολογιστή και θα την εισαγάγει σε μια βάση δεδομένων που ονομάζεται remote_database_name . Πριν εκτελέσετε την εντολή, βεβαιωθείτε ότι η βάση δεδομένων υπάρχει ήδη στον απομακρυσμένο διακομιστή.

Αυτοματοποιήστε τα αντίγραφα ασφαλείας με το Cron

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

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

  1. Δημιουργήστε ένα αρχείο με όνομα .my.cnf στον οικείο κατάλογο χρηστών:

    sudo nano ~/.my.cnf

    Αντιγράψτε και επικολλήστε το ακόλουθο κείμενο στο αρχείο.my.cnf.

    user = dbuser password = dbpasswd

    Μην ξεχάσετε να αντικαταστήσετε το dbuser και το dbpasswd με τον κωδικό πρόσβασης του χρήστη και του χρήστη.

    Περιορίστε τα δικαιώματα του αρχείου διαπιστευτηρίων, ώστε μόνο ο χρήστης να έχει πρόσβαση σε αυτό:

    chmod 600 ~/.my.cnf

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

    mkdir ~/db_backups

    Ανοίξτε το αρχείο crontab του χρήστη:

    crontab -e

    Προσθέστε την ακόλουθη εργασία cron που θα δημιουργήσει ένα αντίγραφο ασφαλείας ενός ονόματος βάσης δεδομένων mydb κάθε μέρα στις 3 mydb .:

    0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +%Y%m%d).sql

    Μην ξεχάσετε να αντικαταστήσετε το username με το πραγματικό σας όνομα χρήστη.

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

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

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

συμπέρασμα

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

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

mysql mariadb backup mysqldump