Ως μια από τις κορυφαίες ελεύθερα διαθέσιμες βάσεις δεδομένων, η MySQL είναι μια δημοφιλής επιλογή για πολλές εφαρμογές web. Όντας εκτεθειμένη στο διαδίκτυο, η εφαρμογή σας εκτίθεται σε κακόβουλες επιθέσεις. Εάν ο διακομιστής σας έχει παραβιαστεί, στην καλύτερη περίπτωση, θα πρέπει να επανεγκαταστήσετε την εφαρμογή. Στη χειρότερη περίπτωση, μπορεί να χάσετε τα δεδομένα σας. Επιπλέον, μπορεί να βρεθείτε σε μια κατάσταση όπου πρέπει να μετεγκαταστήσετε μια βάση δεδομένων από έναν διακομιστή σε άλλο.
Γιατί χρησιμοποιείται το mysqldump;
Το εργαλείο mysqldump σάς καλύπτει τόσο για τις καταστάσεις παραβίασης διακομιστή όσο και για καταστάσεις μετεγκατάστασης. Η βασική του λειτουργία είναι να παίρνει μια βάση δεδομένων MySQL και να την απορρίπτει ως αρχείο κειμένου. Αλλά όχι οποιοδήποτε αρχείο κειμένου. το αρχείο είναι ένα σύνολο εντολών SQL. Αυτές οι δηλώσεις, όταν εκτελούνται, ανακατασκευάζουν τη βάση δεδομένων στην ακριβή κατάσταση στην οποία βρισκόταν όταν εκτελέστηκε η ένδειξη dump.
Χρησιμοποιήστε το mysqldump για να δημιουργήσετε εξαγωγές μιας βάσης δεδομένων ως αντίγραφα ασφαλείας ή όταν μετακινείτε τη βάση δεδομένων σε νέο κεντρικό υπολογιστή. Και στις δύο περιπτώσεις, το αρχείο κειμένου θα εισαχθεί ξανά σε έναν διακομιστή βάσης δεδομένων MySQL. Θα εκτελέσει όλες τις εντολές SQL στο αρχείο, το οποίο επαναφέρει τη βάση δεδομένων στην αρχική της κατάσταση. Αυτό το τμήμα δεν χρησιμοποιεί την εντολή mysqldump, αλλά δεν θα ήταν δυνατό χωρίς αυτό το βοηθητικό πρόγραμμα.
Τα έγγραφα MySQL παραθέτουν άλλες μεθόδους δημιουργίας αντιγράφων ασφαλείας, αλλά αυτές έχουν μειονεκτήματα:
- Η άμεση αντιγραφή μιας βάσης δεδομένων από το MySQL Enterprise είναι ένας πολύ καλός τρόπος για να επιτύχετε αυτά τα αντίγραφα ασφαλείας - αν δεν σας πειράζει η τιμή Enterprise.
- Η αντιγραφή των καταλόγων δεδομένων της βάσης δεδομένων μπορεί να είναι δύσκολη όταν μετακινείστε σε λειτουργικά συστήματα, καθώς οι προορισμοί θα είναι διαφορετικοί.
- Η εξαγωγή σε ένα οριοθετημένο αρχείο κειμένου θα σας δώσει το περιεχόμενο, αλλά θα πρέπει να αναδημιουργήσετε τη δομή.
- Μπορείτε συχνά να δημιουργήσετε αντίγραφα ασφαλείας βάσεων δεδομένων από προγράμματα GUI όπως το MySQL Workbench. Αλλά αυτή είναι μια χειροκίνητη διαδικασία. δεν είναι κάτι που μπορείτε να γράψετε ή να συμπεριλάβετε σε μια μαζική εργασία.
Εγκατάσταση του εργαλείου mysqldump
Για Windows, ελέγξτε τις οδηγίες μας για να εγκαταστήσετε το MySQL στα Windows 7 (η διαδικασία εγκατάστασης είναι η ίδια για τα Windows 10). Στο macOS, ανατρέξτε στις οδηγίες μας για την εγκατάσταση της MySQL στο macOS 10.7 (και πάλι, παλαιότερο αλλά εξακολουθεί να ισχύει). Οι χρήστες συστημάτων Linux που βασίζονται στο Ubuntu μπορούν να χρησιμοποιήσουν την ακόλουθη εντολή για να εγκαταστήσουν τον πελάτη MySQL και τα βοηθητικά προγράμματα:
sudo apt install mysql-client
Εξαγωγή ενός MySQL Dump
Μόλις εγκατασταθεί, χρησιμοποιήστε το mysqldump για να λάβετε ένα πλήρες αντίγραφο ασφαλείας μιας βάσης δεδομένων.
mysqldump -h [το όνομα ή η IP του κεντρικού υπολογιστή DB σας] -u [το όνομα χρήστη του DB] -p [το όνομα της βάσης δεδομένων] > db_backup.sql
Ακολουθεί μια περιγραφή των σημαιών που χρησιμοποιούνται σε αυτήν την εντολή:
- - h: Αυτή η σημαία είναι ο κεντρικός υπολογιστής της βάσης δεδομένων. Μπορεί να είναι ένα πλήρες όνομα κεντρικού υπολογιστή (για παράδειγμα, myhost.domain.com) ή μια διεύθυνση IP. Αφήστε αυτό το κενό εάν εκτελείτε την εντολή στον ίδιο κεντρικό υπολογιστή με τον διακομιστή MySQL.
- - u: Το όνομα χρήστη σας.
- - p: Εάν ασφαλίσατε σωστά την εγκατάσταση της MySQL, θα χρειαστείτε έναν κωδικό πρόσβασης για να συνδεθείτε. Αυτή η σημαία χωρίς όρισμα σας ζητά έναν κωδικό πρόσβασης όταν εκτελείτε την εντολή. Μερικές φορές είναι χρήσιμο να παρέχετε τον κωδικό πρόσβασης απευθείας ως όρισμα σε αυτήν τη σημαία, για παράδειγμα, σε ένα εφεδρικό σενάριο. Αλλά όταν σας ζητηθεί, δεν πρέπει, γιατί εάν κάποιος αποκτούσε πρόσβαση στον υπολογιστή σας, θα μπορούσε να λάβει αυτόν τον κωδικό πρόσβασης στο ιστορικό εντολών.
- > db_backup.sql: Αυτό το τμήμα λέει στο mysqldump να κατευθύνει την έξοδο του σε ένα αρχείο. Κανονικά, η εντολή εξάγει τα πάντα στην κονσόλα, που σημαίνει ότι θα δείτε πολλές δηλώσεις SQL στην οθόνη. Το σύμβολο > διοχετεύει την έξοδο στο ονομαζόμενο αρχείο κειμένου. Εάν αυτό το αρχείο δεν υπάρχει, δημιουργείται αυτόματα.
Όταν τελειώσει, θα έχετε ένα αρχείο. SQL. Αυτό είναι ένα αρχείο κειμένου που περιέχει δηλώσεις SQL. Μπορείτε να το ανοίξετε σε οποιοδήποτε πρόγραμμα επεξεργασίας κειμένου για να ελέγξετε τα περιεχόμενα. Ακολουθεί μια εξαγωγή από μια βάση δεδομένων WordPress που δείχνει πώς συναρμολογούνται αυτά τα αρχεία.
Το αρχείο χωρίζεται σε ενότητες. Η πρώτη ενότητα δημιουργεί τον πίνακα για τα σχόλια του WordPress. Η δεύτερη ενότητα αναδημιουργεί το περιεχόμενο σε αυτούς τους πίνακες (σε αυτό το παράδειγμα, οι εγγραφές σχολίων). Όταν επανεισάγετε την ένδειξη MySQL dump, η εντολή λειτουργεί μέσω του αρχείου, εκτελεί τις δηλώσεις και δημιουργεί ξανά τη βάση δεδομένων όπως ήταν.
Εισαγωγή ενός αρχείου Dump MySQL
Πριν εισαγάγετε το αρχείο ένδειξης σφαλμάτων, θα χρειαστείτε μια βάση δεδομένων που έχει ήδη δημιουργηθεί και το έγκυρο όνομα χρήστη και τον κωδικό πρόσβασής της. Θα πρέπει επίσης να έχετε όλα τα δικαιώματα για τη βάση δεδομένων. Δεν χρειάζεστε την άδεια GRANT, αλλά είναι πιο εύκολο να τα παραχωρήσετε όλα.
Μάθετε περισσότερα σχετικά με τα δικαιώματα βάσης δεδομένων προτού αλλάξετε ρόλους ασφαλείας στη βάση δεδομένων σας.
Για να εισαγάγετε ξανά τα δεδομένα σας, συνδεθείτε στον διακομιστή MySQL με την εντολή mysql. Πληκτρολογήστε use [όνομα βάσης δεδομένων] στη γραμμή εντολών και αντικαταστήστε το όνομα της βάσης δεδομένων. Εισαγάγετε source [filename] και αντικαταστήστε το όνομα του αρχείου ένδειξης σφαλμάτων που πήρατε προηγουμένως.
Όταν τελειώσετε, εμφανίζεται μια λίστα μηνυμάτων που επισημαίνουν ότι εκτελούνται εντολές SQL. Προσέξτε για σφάλματα, αλλά αν έχετε τα σωστά δικαιώματα, θα πρέπει να είστε εντάξει.
Όταν ολοκληρωθεί η διαδικασία, θα έχετε ένα αντίγραφο της αρχικής βάσης δεδομένων. Για να επαληθεύσετε την ομοιότητα μεταξύ των βάσεων δεδομένων, εκτελέστε μια άλλη ένδειξη και, στη συνέχεια, συγκρίνετε τις δύο εξόδους. Χρησιμοποιήστε ένα πρόγραμμα επεξεργασίας κειμένου ή ένα ειδικό εργαλείο διαφορών για να συγκρίνετε τα δύο αρχεία.
Υπάρχουν δύο διαφορές μεταξύ αυτών των αρχείων, όπως αντιπροσωπεύονται από κόκκινες γραμμές στο επάνω και στο κάτω μέρος της δεξιάς γραμμής κύλισης. Η πρώτη είναι η γραμμή που περιέχει το όνομα της βάσης δεδομένων και αυτό είναι διαφορετικό επειδή τα αρχεία ονομάστηκαν διαφορετικά. Το δεύτερο είναι η χρονική σήμανση για το αρχείο ένδειξης σφαλμάτων. Αυτό είναι διαφορετικό επειδή η δεύτερη βάση δεδομένων αναδημιουργήθηκε μετά την πρώτη. Διαφορετικά, τα αρχεία είναι ακριβώς τα ίδια, δηλαδή οι βάσεις δεδομένων που τα δημιούργησαν είναι επίσης.
Συχνές Ερωτήσεις
Πώς διορθώνετε το σφάλμα mysqldump: Δεν επιτρέπεται η πρόσβαση όταν χρησιμοποιείτε πίνακες κλειδώματος;
Ζητήστε από τον διαχειριστή της βάσης δεδομένων σας να σας παραχωρήσει το δικαίωμα LOCK. Εάν αυτό δεν επιλύσει το πρόβλημα, δοκιμάστε να εκτελέσετε την ίδια εντολή mysqldump προσθέτοντας τη σημαία - -single-transaction, όπως [ $ mysqldump --single-transaction] [-u χρήστης] [-p DBNAME] > backup.sql
Μπορείτε να χρησιμοποιήσετε μια ρήτρα "where" με το mysqldump;
Χρησιμοποιήστε μια ρήτρα WHERE όταν δημιουργείτε ένα αντίγραφο ασφαλείας που περιλαμβάνει μόνο τις σειρές που πληρούν τη δεδομένη συνθήκη. Για παράδειγμα, για να απορρίψετε δεδομένα μόνο από σειρές με στήλη αναγνωριστικού μεγαλύτερη από 100, πληκτρολογήστε "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql".