Avanserte sikkerhetskopier for MySQL -databaser

Når de er ferdige Sikkerhetskopiering av MySQL -database, er det vanlig å bruke kommandoen mysqldump ingen alternativer. Denne kommandoen har imidlertid mange interessante alternativer som lar deg utføre avanserte sikkerhetskopier.

Som standard er mysqldump -kommandoen genererer en kopi av sql -strukturen alle tabellene i databasen angitt, i en tekstfil sql. Hvis du bare vil inkludere en eller flere tabeller, angir du navnene etter databasenavnet.

Fra terminalvinduet i mysql -katalogen:

 # Enkeltbord backup $ mysqldump -user = bruker -passord = tabelldatabasenøkkel> backup_sql
 # Sikkerhetskopier tre tabeller $ mysqldump -user = bruker -passord = database nøkkeltabell1 tabell2 tabell3> backup_sql
Eksempler på 1 eller 3 bord.

1. Ekskludert noen tabeller fra sikkerhetskopiering


For ikke å inkludere en bestemt tabell i sikkerhetskopien, må vi angi den med alternativet --ignore-table, hvis verdi må angis

Hvis du for eksempel gjør en sikkerhetskopi av en database som heter handel, men du ikke vil at en tabell med salg skal inkluderes, kjører du følgende kommando:

 $ mysqldump --user = bruker -passord = passord --ignore -table = merchant.sales selger> backup_back.sql 
Med andre ord, kopier hele handelsdatabasen unntatt salgstabellen. Hvis vi vil ekskludere flere tabeller, må vi bruke følgende kommando:
 $ mysqldump --bruker = bruker-passord = passord --ignore-table = commerce.sales --ignore-table = commerce.products --ignore-table = handel. handelspriser> backup_copy.sql
(Hvis du vil ekskludere flere tabeller, angir du navnene med så mange --ignore-tabellalternativer)

2. Begrensning av antall poster i hver tabell


Som standard vil mysqldump -kommandoen kopiere alle postene fra alle tabellene. Hvis du tidligere vil filtrere postene, kan du legge til alternativet -where, som lar deg angi HVOR type betingelse som er lagt til SELECT -spørringene som er laget for å trekke ut alle postene:
 $ mysqldump --user = bruker -passord = passord --where = "alder> 18 OG alder backup_back.sql 
Hvis vi bare vil trekke ut noen poster fra databasen, for eksempel de første 500
 $ mysqldump --user = bruker -passord = passord --where = "1 grense 500" database> backup.sql
De ville bli trukket ut med en grense på 500.

3. Kopier bare strukturen til tabellene, men ikke dataene deres


Som standard er kommando mysqldump dumper både strukturen i tabellene og all informasjonen deres. Hvis du bare er interessert i å dumpe strukturen i tabellene og kolonnene, bruker du alternativet --no-data. Så du kan lage en annen database nøyaktig det samme, men tomt:
 $ mysqldump --user = bruker-passord = passord-ingen data database> backup_sql
Normalt når innsatsene genereres, grupperes de i en enkelt setning for å lagre kodelinjer som følger:
 Sett inn i tabellen VERDIER (1, 'navn1'), (2, 'navn2'), (3, 'navn3');
Dette er atferd som kan forårsake feil med eldre systemer som ikke kan behandle lange linjer. På samme måte kan du få problemer med tekstredigereren når du prøver å åpne en sikkerhetskopifil som inneholder disse lange linjene.

Hvis vi står overfor denne saken, kan vi legge til alternativet --extended-insert = false for å få hvert INSERT til å kjøre med sin egen uttalelse:

 $ mysqldump --user = bruker -passord = passord --extended -insert = false database> backup_sql
Resultatet blir følgende:
 Sett inn i tabellen VERDIER (1, 'navn1'); Sett inn i tabellen VERDIER (2, 'navn2'); Sett inn i tabellen VERDIER (3, 'navn3'); 

Likte og hjalp du denne opplæringen?Du kan belønne forfatteren ved å trykke på denne knappen for å gi ham et positivt poeng
wave wave wave wave wave