Android

Kako izraditi sigurnosnu kopiju i vratiti mysql baze podataka s mysqldump

How to Get Back Deleted Data in SQL Server Using Transaction Log LSNs

How to Get Back Deleted Data in SQL Server Using Transaction Log LSNs

Sadržaj:

Anonim

Ovaj vodič objašnjava kako sigurnosnu kopiju i vraćanje MySQL ili MariaDB baza podataka iz naredbenog retka pomoću uslužnog programa mysqldump.

Datoteke sigurnosnih kopija koje je stvorio uslužni program mysqldump u osnovi su skup SQL izraza koji se mogu koristiti za ponovno stvaranje izvorne baze podataka. Naredba mysqldump također može generirati datoteke u CSV i XML formatu.

Pomoću uslužnog programa mysqldump možete prenijeti svoju MySQL bazu podataka na drugi MySQL poslužitelj.

Mysqldump sintaksa naredbe

Prije nego što razmotrimo kako koristiti naredbu mysqldump, započnimo s pregledom osnovne sintakse.

Izrazi uslužnog programa mysqldump imaju sljedeći oblik:

mysqldump > file.sql

  • options - mysqldump opcije file.sql - Dump (sigurnosna kopija) datoteka

Za upotrebu naredbe mysqldump MySQL poslužitelj mora biti dostupan i pokrenut.

Izrada sigurnosne kopije jedne MySQL baze podataka

Najčešći slučaj upotrebe alata mysqldump je izrada sigurnosne kopije jedne baze podataka.

Na primjer, da biste stvorili sigurnosnu kopiju baze podataka s imenom database_name koristeći korisnički root i spremili ga u datoteku pod nazivom database_name.sql , pokrenuli biste sljedeću naredbu:

mysqldump -u root -p database_name > database_name.sql

Od vas će se tražiti da unesete root lozinku. Nakon uspješne provjere autentičnosti započet će se postupak dump. Ovisno o veličini baze podataka, postupak može potrajati neko vrijeme.

mysqldump database_name > database_name.sql

Izrada sigurnosnih kopija više MySQL baza podataka

Za sigurnosno kopiranje više MySQL baza podataka s jednom naredbom trebate koristiti opciju --database nakon čega slijedi popis baza podataka koje želite sigurnosno kopirati. Svako ime baze podataka mora biti odvojeno razmakom.

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

Gornja naredba stvorit će dump datoteku koja sadrži obje baze podataka.

Izrada sigurnosne kopije svih MySQL baza podataka

Upotrijebite opciju --all-databases za sigurnosnu kopiju svih MySQL baza podataka:

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

Kao i u prethodnom primjeru, gornja naredba će stvoriti jednu dump datoteku koja sadrži sve baze podataka.

Izrada sigurnosne kopije svih MySQL baza podataka u zasebne datoteke

Uslužni program mysqldump ne nudi mogućnost sigurnosnog kopiranja svih baza podataka u odvojene datoteke, ali to jednostavno postižemo jednostavnim bash FOR petljem:

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

Gornja naredba stvorit će zasebnu dump datoteku za svaku bazu podataka koristeći naziv baze podataka kao naziv datoteke.

Napravite komprimiranu sigurnosnu kopiju MySQL baze podataka

Ako je veličina baze podataka vrlo velika, dobra je ideja komprimirati izlaz. Da biste to učinili, jednostavno dodajte izlaz na uslužni program gzip i preusmjerite ga u datoteku kao što je prikazano u nastavku:

mysqldump database_name | gzip > database_name.sql.gz

Napravite sigurnosnu kopiju s vremenskom oznakom

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

Gornja naredba stvorit će datoteku sa sljedećim formatom database_name-20180617.sql

Obnavljanje deponije MySQL

MySQL ispis možete vratiti pomoću alata mysql . Opća sintaksa naredbe je sljedeća:

mysqld database_name < file.sql

U većini slučajeva trebat ćete stvoriti bazu podataka u koju želite uvesti. Ako baza podataka već postoji, prvo je morate izbrisati.

U sljedećem primjeru prva naredba će stvoriti bazu podataka s imenom database_name a zatim će u nju izvesti dump database_name.sql :

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

Vratite jednu MySQL bazu podataka s cijelog MySQL odlagališta

mysql --one-database database_name < all_databases.sql

Izvoz i uvoz MySQL baze podataka u jednoj naredbi

Umjesto stvaranja dump datoteke iz jedne baze podataka i uvoza sigurnosne kopije u drugu MySQL bazu podataka, možete upotrijebiti sljedeći jedan povez:

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

Gornja naredba će izlaz izvesti na mysql klijent na udaljenom hostu i uvest će ga u bazu podataka pod nazivom remote_database_name . Prije pokretanja naredbe provjerite da li baza podataka već postoji na udaljenom poslužitelju.

Automatizirajte sigurnosne kopije pomoću Cron-a

Automatiziranje procesa izrade sigurnosnih kopija podataka tako je jednostavno kao i stvaranje cron posla što će izvesti naredbu mysqldump u određeno vrijeme.

Da biste postavili automatizirane sigurnosne kopije MySQL baze podataka pomoću cronjoba, slijedite korake u nastavku:

  1. Napravite datoteku s imenom .my.cnf u vašem direktoriju korisnika:

    sudo nano ~/.my.cnf

    Kopirajte i zalijepite sljedeći tekst u.my.cnf datoteku.

    user = dbuser password = dbpasswd

    Ne zaboravite zamijeniti dbuser i dbpasswd korisnikom i korisničkom lozinkom baze podataka.

    Ograničite dozvole datoteke vjerodajnica tako da samo vaš korisnik ima pristup njoj:

    chmod 600 ~/.my.cnf

    Izradite direktorij za pohranu sigurnosnih kopija:

    mkdir ~/db_backups

    Otvorite svoju korisničku crontab datoteku:

    crontab -e

    Dodajte sljedeći posao cron koji će stvoriti sigurnosnu kopiju imena baze podataka mydb svaki dan u 3 sata:

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

    Ne zaboravite zamijeniti username sa stvarnim korisničkim imenom.

Možete također stvoriti još jedan cronjob za brisanje svih sigurnosnih kopija starijih od 30 dana:

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

Naravno, naredbu trebate prilagoditi prema vašem mjestu sigurnosne kopije i nazivima datoteka. Da biste saznali više o naredbi pronađite provjerite naše Kako pronaći datoteke u Linuxu pomoću vodiča naredbenog retka.

Zaključak

Ovaj udžbenik pokriva samo osnove, ali to bi trebao biti dobar početak za sve koji žele naučiti kako stvoriti i obnoviti MySQL baze podataka iz naredbenog retka pomoću uslužnog programa mysqldump.

Također možete provjeriti udžbenik o tome kako resetirati MySQL root lozinku u slučaju da ste je zaboravili.

sigurnosna kopija mysql mariadb