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 databasendb1
: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.
-
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
-
Begræns tilladelserne til legitimationsfilen:
chmod 600 /home/example_user/.mylogin.cnf
-
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-databasesystemetmysql -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