Android

Sådan sikkerhedskopieres og gendannes mysql-databaser med 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

Indholdsfortegnelse:

Anonim

Denne tutorial forklarer, hvordan man sikkerhedskopierer og gendanner MySQL- eller MariaDB-databaser fra kommandolinjen ved hjælp af mysqldump-værktøjet.

Backupfilerne oprettet af mysqldump-værktøjet er dybest set et sæt SQL-sætninger, der kan bruges til at genskabe den originale database. Mysqldump-kommandoen kan også generere filer i CSV- og XML-format.

Du kan også bruge mysqldump-værktøjet til at overføre din MySQL-database til en anden MySQL-server.

Mysqldump kommandosyntax

Før vi går ind på, hvordan man bruger kommandoen mysqldump, lad os starte med at gennemgå den grundlæggende syntaks.

Mysqldump-værktøjsudtrykket har følgende form:

mysqldump > file.sql

  • options - Mysqldump-indstillingsfilen.sql - Dump-filen (backup)

For at bruge mysqldump-kommandoen skal MySQL-serveren være tilgængelig og køre.

Sikkerhedskopier en enkelt MySQL-database

Det mest almindelige brug af mysqldump-værktøjet er at tage backup af en enkelt database.

For eksempel at oprette en sikkerhedskopi af databasen med navnet database_name ved hjælp af brugerroten og gemme den i en fil med navnet database_name.sql kører du følgende kommando:

mysqldump -u root -p database_name > database_name.sql

Du bliver bedt om at indtaste root-adgangskoden. Efter vellykket godkendelse starter dump-processen. Afhængig af databasestørrelsen kan processen tage nogen tid.

mysqldump database_name > database_name.sql

Sikkerhedskopier flere MySQL-databaser

For at tage backup af flere MySQL-databaser med en kommando skal du bruge indstillingen - database efterfulgt af listen over databaser, du vil tage backup af. Hvert databasenavn skal adskilles med mellemrum.

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

Kommandoen ovenfor opretter en dump-fil, der indeholder begge databaser.

Sikkerhedskopier alle MySQL-databaser

Brug muligheden - --all-databases til at tage backup af alle MySQL-databaser:

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

Samme som med det foregående eksempel vil kommandoen ovenfor oprette en enkelt dump-fil, der indeholder alle databaserne.

Sikkerhedskopier alle MySQL-databaser for at adskille filer

mysqldump værktøjet giver ikke en mulighed for at tage backup af alle databaser for at adskille filer, men vi opnår det let med en simpel bash FOR loop:

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

Kommandoen ovenfor opretter en separat dump-fil for hver database ved hjælp af databasenavnet som filnavn.

Opret en komprimeret MySQL-database-sikkerhedskopi

Hvis databasestørrelsen er meget stor, er det en god ide at komprimere output. For at gøre det skal du bare rute output til gzip værktøjet og omdirigere det til en fil som vist nedenfor:

mysqldump database_name | gzip > database_name.sql.gz

Opret en sikkerhedskopi med tidsstempel

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

Kommandoen ovenfor opretter en fil med følgende format database_name-20180617.sql

Gendannelse af en MySQL dump

Du kan gendanne et MySQL-dump ved hjælp af mysql værktøjet. Kommandoen generel syntaks er som følger:

mysqld database_name < file.sql

I de fleste tilfælde skal du oprette en database, du kan importere til. Hvis databasen allerede findes, skal du først slette den.

I det følgende eksempel opretter den første kommando en database med navnet database_name og derefter importerer den dump database_name.sql til den:

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

Gendan en enkelt MySQL-database fra en fuld MySQL-dump

mysql --one-database database_name < all_databases.sql

Eksporter og importer en MySQL-database i én kommando

I stedet for at oprette en dump-fil fra en database og derefter importere sikkerhedskopien til en anden MySQL-database, kan du bruge følgende one-liner:

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

Kommandoen ovenfor vil føre output til en mysql-klient på den eksterne vært, og den vil importere den til en database ved navn remote_database_name . Inden du kører kommandoen, skal du sikre dig, at databasen allerede findes på fjernserveren.

Automatiser sikkerhedskopier med Cron

Automatisering af sikkerhedskopieringen af ​​databaserne er så simpelt som at oprette et cron-job, hvad der vil køre mysqldump-kommandoen på et bestemt tidspunkt.

Følg nedenstående trin for at konfigurere automatiserede sikkerhedskopier af en MySQL-database ved hjælp af cronjob:

  1. Opret en fil med navnet .my.cnf i dit brugerhjemskatalog:

    sudo nano ~/.my.cnf

    Kopier og indsæt følgende tekst i.my.cnf-filen.

    user = dbuser password = dbpasswd

    Glem ikke at udskifte dbuser og dbpasswd med databasebrugeren og brugerens adgangskode.

    Begræns tilladelser til legitimationsfilen, så kun din bruger har adgang til den:

    chmod 600 ~/.my.cnf

    Opret et bibliotek til at gemme sikkerhedskopierne:

    mkdir ~/db_backups

    Åbn din bruger crontab fil:

    crontab -e

    Tilføj følgende cron-job, der opretter en sikkerhedskopi af et databasenavn mydb hver dag kl. 3:

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

    Glem ikke at udskifte username med dit faktiske brugernavn.

Du kan også oprette endnu en cronjob for at slette eventuelle sikkerhedskopier, der er ældre end 30 dage:

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

Naturligvis skal du justere kommandoen i henhold til din backupplacering og filnavne. Hvis du vil lære mere om find-kommandoen, skal du se vores Sådan finder du filer i Linux ved hjælp af kommandolinjeguiden.

Konklusion

Denne tutorial dækker kun det grundlæggende, men det skal være en god start for alle, der ønsker at lære, hvordan man opretter og gendanner MySQL-databaser fra kommandolinjen ved hjælp af mysqldump-værktøjet.

Du kan også kontrollere selvstudiet om, hvordan du nulstiller en MySQL-root-adgangskode, hvis du har glemt det.

mysql mariadb backup mysqldump