Android

Kuinka varmuuskopioida ja palauttaa mysql-tietokannat mysqldumpilla

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

Sisällysluettelo:

Anonim

Tämä opetusohjelma selittää, kuinka varmuuskopioida ja palauttaa MySQL- tai MariaDB-tietokannat komentoriviltä mysqldump-apuohjelman avulla.

Mysqldump-apuohjelman luomat varmuuskopiot ovat pohjimmiltaan joukko SQL-lauseita, joita voidaan käyttää alkuperäisen tietokannan luomiseen. Mysqldump-komento voi myös luoda tiedostoja CSV- ja XML-muodossa.

Voit käyttää mysqldump-apuohjelmaa myös MySQL-tietokannan siirtämiseen toiseen MySQL-palvelimeen.

Mysqldump-komennon syntaksi

Ennen kuin aloitamme mysqldump-komennon käytön, aloittakaamme tarkistamalla perussintaksi.

Mysqldump-apulausekkeet ovat seuraavassa muodossa:

mysqldump > file.sql

  • options - mysqldump options file.sql - dump (varmuuskopiotiedosto)

MySQL-palvelimen on oltava käytettävissä ja käynnissä, jotta voit käyttää mysqldump-komentoa.

Varmuuskopioi yksi MySQL-tietokanta

Mysqldump-työkalun yleisin käyttötapa on yhden tietokannan varmuuskopiointi.

Esimerkiksi, jos haluat luoda varmuuskopion tietokannasta nimeltä database_name käyttäjän root käyttämällä ja tallentaa sen tiedostoon nimeltä database_name.sql suorita seuraava komento:

mysqldump -u root -p database_name > database_name.sql

Sinua pyydetään antamaan pääsalasana. Onnistuneen todennuksen jälkeen dumppausprosessi alkaa. Tietokannan koosta riippuen prosessi voi viedä jonkin aikaa.

mysqldump database_name > database_name.sql

Varmuuskopioi useita MySQL-tietokantoja

Varmuuskopioidaksesi useita MySQL-tietokantoja yhdellä komennolla sinun on käytettävä --database vaihtoehtoa ja sen jälkeen luetteloa tietokannoista, jotka haluat varmuuskopioida. Jokainen tietokannan nimi on erotettava välilyönnillä.

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

Yllä oleva komento luo dump-tiedoston, joka sisältää molemmat tietokannat.

Varmuuskopioi kaikki MySQL-tietokannat

Käytä - --all-databases -vaihtoehtoa kaikkien MySQL-tietokantojen varmuuskopiointiin:

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

Kuten edellisessä esimerkissä, yllä oleva komento luo yhden dump-tiedoston, joka sisältää kaikki tietokannat.

Varmuuskopioi kaikki MySQL-tietokannat tiedostojen erottamiseksi

mysqldump apuohjelma ei tarjoa mahdollisuutta varmuuskopioida kaikki tietokannat erillisiksi tiedostoiksi, mutta saavutamme sen helposti yksinkertaisella bash FOR -silmukalla:

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

Yllä oleva komento luo erillisen dump-tiedoston jokaiselle tietokannalle käyttämällä tietokannan nimeä tiedostonimellä.

Luo pakattu MySQL-tietokannan varmuuskopio

Jos tietokannan koko on erittäin suuri, on hyvä idea pakkaa tuotos. Voit tehdä tämän yksinkertaisesti liittämällä tulosteen gzip apuohjelmaan ja ohjaamalla sen tiedostoon alla olevan kuvan mukaisesti:

mysqldump database_name | gzip > database_name.sql.gz

Luo varmuuskopio aikaleiman avulla

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

Yllä oleva komento luo tiedoston, jonka muoto on database_name-20180617.sql

MySQL-dumpin palauttaminen

Voit palauttaa MySQL-dumpin mysql työkalulla. Komennon yleinen syntaksi on seuraava:

mysqld database_name < file.sql

Useimmissa tapauksissa sinun on luotava tietokanta tuotavaksi. Jos tietokanta on jo olemassa, sinun on ensin poistettava se.

Seuraavassa esimerkissä ensimmäinen komento luo tietokannan nimeltä database_name ja sitten se tuo dump- database_name.sql siihen:

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

Palauta yksi MySQL-tietokanta kokonaisesta MySQL-lähteestä

mysql --one-database database_name < all_databases.sql

Vie ja tuo MySQL-tietokanta yhdessä komennossa

Sen sijaan, että luisit dump-tiedoston yhdestä tietokannasta ja sitten tuotavat varmuuskopion toiseen MySQL-tietokantaan, voit käyttää seuraavaa yhden linjan:

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

Yllä oleva komento siirtää lähdön mysql-asiakasohjelmaan etäkoneella ja tuo sen tietokantaan, jonka nimi on remote_database_name . Varmista ennen komennon suorittamista, että tietokanta on jo olemassa etäpalvelimella.

Automatisoi varmuuskopiot Cronilla

Tietokantojen varmuuskopiointiprosessin automatisointi on yhtä helppoa kuin cron-työn luominen, joka suorittaa mysqldump-komennon määritettyyn aikaan.

Asenna MySQL-tietokannan automatisoidut varmuuskopiot cronjob-sovelluksella seuraavien vaiheiden avulla:

  1. Luo käyttäjän .my.cnf tiedosto nimeltä .my.cnf :

    sudo nano ~/.my.cnf

    Kopioi ja liitä seuraava teksti.my.cnf-tiedostoon.

    user = dbuser password = dbpasswd

    Älä unohda korvata dbuser ja dbpasswd tietokannan käyttäjällä ja käyttäjän salasanalla.

    Rajoita käyttöoikeustiedoston käyttöoikeuksia siten, että vain käyttäjällä on pääsy siihen:

    chmod 600 ~/.my.cnf

    Luo hakemisto varmuuskopioiden tallentamiseksi:

    mkdir ~/db_backups

    Avaa käyttäjän crontab-tiedosto:

    crontab -e

    Lisää seuraava cron-työ, joka luo varmuuskopion tietokannan nimestä mydb joka päivä kello 3.00:

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

    Älä unohda korvata username todellisella käyttäjänimellä.

Voit myös luoda uuden cronjob-poiston yli 30 päivää vanhoista varmuuskopioista:

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

Tietysti sinun täytyy säätää komento varmuuskopion sijainnin ja tiedostonimien mukaan. Lisätietoja löytää -komennosta on artikkelissa Kuinka löytää tiedostoja Linuxista komentorivin avulla.

johtopäätös

Tämä opetusohjelma kattaa vain perusteet, mutta sen pitäisi olla hyvä aloitus kaikille, jotka haluavat oppia luomaan ja palauttamaan MySQL-tietokannat komentoriviltä mysqldump-apuohjelman avulla.

Voit myös tarkistaa opetusohjelman siitä, kuinka MySQL-pääsalasana voidaan nollata, jos olet unohtanut sen.

mysql mariadb varmuuskopio mysqldump