sql >> Database teknologi >  >> RDS >> Mysql

Brug mysqldump til at sikkerhedskopiere MySQL eller MariaDB

MySQL og MariaDB inkluderer værktøjet themysqldump til at forenkle processen til at oprette en sikkerhedskopi af en database eller et system af databaser. Brug af mysqldump opretter en logisk sikkerhedskopi . Du kan kun bruge dette værktøj, hvis din databaseproces er tilgængelig og kører.

Hvis din database af en eller anden grund ikke er tilgængelig, kan du i stedet oprette enfysisk backup , som er en kopi af filsystemstrukturen, som indeholder dine data.

Instruktionerne i denne vejledning gælder for både MySQL og MariaDB. For forenkling vil navnet MySQL blive brugt til at gælde for enten.

Før du begynder

  • Du skal bruge en fungerende MySQL- eller MariaDB-installation og en databasebruger til at køre sikkerhedskopien. For hjælp til installationen, se Linode MySQL-dokumentationen.

  • Du skal bruge root-adgang til systemet eller en brugerkonto med sudo privilegier.

Sikkerhedskopiér en database

mysqldump kommandoens generelle syntaks er:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
  • mysqldump beder om en adgangskode, før den starter sikkerhedskopieringsprocessen.
  • Afhængigt af størrelsen på databasen kan det tage et stykke tid at fuldføre.
  • Sikkerhedskopieringen af ​​databasen vil blive oprettet i den mappe, kommandoen køres.
  • -$(date +%F) tilføjer et tidsstempel til filnavnet.

Eksempler på brug omfatter:

  • Opret en sikkerhedskopi af et helt Database Management System (DBMS):

      mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
    
  • Sikkerhedskopier en specifik database. Erstat db1 med navnet på den database, du vil sikkerhedskopiere:

      mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
    
  • Sikkerhedskopier en enkelt tabel fra enhver database. I eksemplet nedenfor, table1 er eksporteret fra databasen db1 :

      mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
    

Her er en oversigt over mysqldump kommandoindstillinger brugt ovenfor:

  • --single-transaction :Udsted en BEGIN SQL-sætning, før du dumper data fra serveren.
  • --quick :Gennemtving dumpingtabeller række for række. Dette giver ekstra sikkerhed for systemer med lidt RAM og/eller store databaser, hvor lagring af tabeller i hukommelsen kan blive problematisk.
  • --lock-tables=false :Lås ikke tabeller til sikkerhedskopieringssessionen.

Automatiser sikkerhedskopier med cron

Indgange kan tilføjes til /etc/crontab til regelmæssigt at planlægge databasesikkerhedskopiering.

  1. Opret en fil til at opbevare loginoplysningerne for MySQL root-brugeren, som skal udføre sikkerhedskopieringen. Bemærk, at den systembruger, hvis hjemmemappe denne fil er gemt i, ikke kan være relateret til nogen MySQL-bruger.

    Fil:/ home/example_user/.mylogin.cnf
    1
    2
    3
    
    [client]
    user = root
    password = MySQL root user's password
  2. Begræns tilladelserne til legitimationsfilen:

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. Opret cron-jobfilen. Nedenfor er et eksempel på et cron-job til at sikkerhedskopiere hele databasestyringssystemet hver dag kl. 01:00:

    Fil:/ etc/cron.daily/mysqldump
    1
    
    0 1 * * * /usr/bin/mysqldump --defaults-extra-file=/home/example_user/.my.cnf -u root --single-transaction --quick --lock-tables=false --all-databases > full-backup-$(date +\%F).sql

    For mere information om cron, se manualsiderne for thecron(8) ogcron(5).

Gendan en sikkerhedskopi

Gendannelseskommandoens generelle syntaks er:

mysql -u [username] -p [databaseName] < [filename].sql
  • Gendan en hel DBMS-sikkerhedskopi. Du vil blive bedt om MySQL root-brugerens adgangskode:
    Dette vil overskrive alle aktuelle data i MySQL-databasesystemet

      mysql -u root -p < full-backup.sql
    
  • Gendan en enkelt databasedump. En tom eller gammel destinationsdatabase skal allerede eksistere for at importere dataene til, og den MySQL-bruger, du kører kommandoen som skal have skriveadgang til denne database:

      mysql -u [username] -p db1 < db1-backup.sql
    
  • Gendan en enkelt tabel, du skal have en destinationsdatabase klar til at modtage dataene:

      mysql -u dbadmin -p db1 < db1-table1.sql
    

Flere oplysninger

Du ønsker måske at konsultere følgende ressourcer for yderligere oplysninger om dette emne. Selvom disse leveres i håb om, at de vil være nyttige, bemærk venligst, at vi ikke kan stå inde for nøjagtigheden eller aktualiteten af ​​eksternt hostede materialer.

  • Siden MySQL Database Backup Methods
  • mysqldump - Et Database Backup Program, MySQL Reference Manual

  1. Hvordan bruger jeg variabler i Oracle SQL Developer?

  2. Kom godt i gang med Shareplex på Windows på AWS, del 2

  3. Sådan opretter du sekvens i MySQL

  4. sqlite returnerede:fejlkode =1, msg =ingen sådan kolonne:køkken1