Android

Cum să faceți o copie de rezervă și să restaurați bazele de date mysql cu mysqldump

PHP, MySQL - Formular de inregistrare a utilizatorilor

PHP, MySQL - Formular de inregistrare a utilizatorilor

Cuprins:

Anonim

Acest tutorial explică cum să faceți backup și să restaurați bazele de date MySQL sau MariaDB din linia de comandă folosind utilitarul mysqldump.

Fișierele de rezervă create de utilitatea mysqldump sunt practic un set de instrucțiuni SQL care pot fi utilizate pentru a recrea baza de date originală. Comanda mysqldump poate genera și fișiere în format CSV și XML.

De asemenea, puteți utiliza utilitarul mysqldump pentru a transfera baza de date MySQL pe un alt server MySQL.

Sintaxa comenzii Mysqldump

Înainte de a intra în modul de utilizare a comenzii mysqldump, să începem prin revizuirea sintaxei de bază.

Expresiile de utilitate mysqldump iau următoarea formă:

mysqldump > file.sql

  • options - options mysqldump file.sql - Fișierul dump (backup)

Pentru a utiliza comanda mysqldump, serverul MySQL trebuie să fie accesibil și să funcționeze.

Backup-ul unei baze de date MySQL unice

Cel mai obișnuit caz de utilizare al instrumentului mysqldump este să faceți backup unei baze de date unice.

De exemplu, pentru a crea o copie de rezervă a bazei de date numită database_name folosind root utilizatorului și a o salva într-un fișier numit database_name.sql ar trebui să executați următoarea comandă:

mysqldump -u root -p database_name > database_name.sql

Vi se va solicita să introduceți parola rădăcină. După autentificarea cu succes, procesul de descărcare va începe. În funcție de dimensiunea bazei de date, procesul poate dura ceva timp.

mysqldump database_name > database_name.sql

Backup Multe baze de date MySQL

Pentru a face backup la mai multe baze de date MySQL cu o singură comandă, trebuie să utilizați opțiunea --database urmată de lista bazelor de date pe care doriți să o faceți backup. Fiecare nume de bază de date trebuie separat prin spațiu.

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

Comanda de mai sus va crea un fișier dump care conține ambele baze de date.

Backup Toate bazele de date MySQL

Folosiți opțiunea - all --all-databases pentru a face o copie de siguranță a tuturor bazelor de date MySQL:

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

La fel ca în exemplul precedent, comanda de mai sus va crea un singur fișier dump care conține toate bazele de date.

Backup toate bazele de date MySQL pentru fișiere separate

Utilitarul mysqldump nu oferă o opțiune de rezervă a tuturor bazelor de date pentru fișiere separate, dar realizăm cu ușurință asta cu o buclă simplă bash FOR :

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

Comanda de mai sus va crea un fișier dump separat pentru fiecare bază de date folosind numele bazei de date ca nume de fișier.

Creați o copie de rezervă comprimată a bazei de date MySQL

Dacă dimensiunea bazei de date este foarte mare, este bine să comprimați ieșirea. Pentru a face acest lucru, pur și simplu conductați ieșirea la utilitatea gzip și o redirecționați către un fișier așa cum se arată mai jos:

mysqldump database_name | gzip > database_name.sql.gz

Creați o copie de siguranță cu Timestamp

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

Comanda de mai sus va crea un fișier cu următorul format database_name-20180617.sql

Restaurarea unei descărcări MySQL

Puteți restaura o descărcare MySQL folosind instrumentul mysql . Sintaxa generală a comenzii este următoarea:

mysqld database_name < file.sql

În cele mai multe cazuri, va trebui să creați o bază de date în care să o importați. Dacă baza de date există deja, mai întâi trebuie să o ștergeți.

În următorul exemplu, prima comandă va crea o bază de date numită database_name și apoi va importa dump database_name.sql în ea:

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

Restaurați o singură bază de date MySQL dintr-o descărcare completă MySQL

mysql --one-database database_name < all_databases.sql

Exportați și importați o bază de date MySQL într-o singură comandă

În loc să creați un fișier dump dintr-o bază de date și apoi să importați backup-ul într-o altă bază de date MySQL, puteți utiliza următoarea linie:

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

Comanda de mai sus va remote_database_name ieșirea către un client mysql de pe gazda de la distanță și o va importa într-o bază de date denumită remote_database_name . Înainte de a rula comanda, asigurați-vă că baza de date există deja pe serverul de la distanță.

Automatizarea copiilor de siguranță cu Cron

Automatizarea procesului de rezervă a bazelor de date este la fel de simplă precum crearea unui job cron ce va rula comanda mysqldump la ora specificată.

Pentru a configura copii de rezervă automate ale unei baze de date MySQL folosind cronjob, urmați pașii de mai jos:

  1. Creați un fișier numit .my.cnf în directorul de acasă al utilizatorului:

    sudo nano ~/.my.cnf

    Copiați și inserați următorul text în fișierul.my.cnf.

    user = dbuser password = dbpasswd

    Nu uitați să înlocuiți dbuser și dbpasswd cu parola utilizatorului bazei de date și parola utilizatorului.

    Limitați permisiunile fișierului de acreditări, astfel încât numai utilizatorul dvs. să aibă acces la acesta:

    chmod 600 ~/.my.cnf

    Creați un director pentru stocarea copiilor de rezervă:

    mkdir ~/db_backups

    Deschideți fișierul dvs. crontab de utilizator:

    crontab -e

    Adăugați următorul job cron care va crea o copie de rezervă a unui nume de bază de date mydb fiecare zi la mydb :

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

    Nu uitați să înlocuiți username cu username real.

De asemenea, puteți crea un alt cronjob pentru a șterge orice copie de rezervă mai veche de 30 de zile:

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

Desigur, trebuie să ajustați comanda în funcție de locația de rezervă și numele fișierelor. Pentru a afla mai multe despre comanda find, verificați Cum să găsiți fișiere în Linux folosind ghidul liniei de comandă.

Concluzie

Acest tutorial acoperă doar elementele de bază, dar ar trebui să fie un bun început pentru oricine dorește să învețe cum să creeze și să restaureze baze de date MySQL de pe linia de comandă folosind utilitarul mysqldump.

Puteți verifica, de asemenea, tutorialul despre cum puteți reseta o parolă rădăcină MySQL în cazul în care ați uitat-o.

mysql mariadb backup mysqldump