Avancerade säkerhetskopior för MySQL -databaser

När de är klara MySQL -databas -säkerhetskopior, det är vanligt att använda kommandot mysqldump inga alternativ. Detta kommando har dock många intressanta alternativ som gör att du kan utföra avancerade säkerhetskopior.

Som standard är kommandot mysqldump genererar en kopia av SQL -strukturen alla tabellerna i databasen anges, i en textfil sql. Om du bara vill inkludera en eller flera tabeller anger du deras namn efter databasnamnet.

Från terminalfönstret i mysql -katalogen:

 # Enkel tabell backup $ mysqldump -user = användare -passord = tabell databas nyckel> backup_sql
 # Säkerhetskopiera tre tabeller $ mysqldump -user = användare -passord = databasnyckeltabell1 tabell2 tabell3> backup_sql
Exempel på 1 eller 3 tabeller.

1. Exklusive några tabeller från backup


För att inte inkludera en specifik tabell i säkerhetskopian måste vi ange den med alternativet --ignore-table, vars värde måste anges

Om du till exempel gör en säkerhetskopia av en databas som heter handel men du inte vill att en tabell som heter försäljning ska inkluderas, kör följande kommando:

 $ mysqldump --user = användare -lösenord = lösenord --ignore -table = merchant.sales merchant> backup_back.sql 
Med andra ord, kopiera hela handelsdatabasen utom försäljningstabellen. Om vi ​​vill utesluta flera tabeller måste vi använda följande kommando:
 $ mysqldump --user = användare-lösenord = lösenord --ignore-table = commerce.sales --ignore-table = commerce.products --ignore-table = commerce. handelspriser> backup_copy.sql
(För att utesluta flera tabeller, ange deras namn med lika många --ignore-tabellalternativ)

2. Begränsa antalet poster i varje tabell


Som standard kopierar kommandot mysqldump alla poster från alla tabeller. Om du tidigare vill filtrera posterna lägger du till alternativet -where, som låter dig ange WHERE -typvillkoret som läggs till i SELECT -frågorna som görs för att extrahera alla poster:
 $ mysqldump --user = användare -lösenord = lösenord --where = "ålder> 18 OCH ålder backup_back.sql 
Om vi ​​bara vill extrahera några poster från databasen, till exempel de första 500
 $ mysqldump --user = user -password = lösenord --where = "1 gräns 500" databas> backup.sql
De skulle extraheras med en gräns på 500.

3. Kopiera endast tabellens struktur men inte deras data


Som standard är kommando mysqldump dumpar både tabellens struktur och all deras information. Om du bara är intresserad av att dumpa strukturen för tabellerna och kolumnerna, använd alternativet --no-data. Så du kan skapa en annan databas exakt samma men tom:
 $ mysqldump --user = användare-lösenord = lösenord-ingen databas> backup_sql
Normalt när insatserna genereras grupperas de i en enda sats för att spara kodrader enligt följande:
 SÄTT IN I tabellen VÄRDER (1, 'namn1'), (2, 'namn2'), (3, 'namn3');
Detta är beteende som kan orsaka fel med äldre system som inte kan behandla långa rader. På samma sätt kan du stöta på problem med din textredigerare när du försöker öppna en säkerhetskopia som innehåller dessa långa rader.

Om vi ​​står inför detta fall kan vi lägga till alternativet --extended-insert = false för att få varje INSERT att köra med sitt eget uttalande:

 $ mysqldump --user = user -password = lösenord --extended -insert = false database> backup_sql
Resultatet blir följande:
 SÄTT IN I tabellen VÄRDER (1, 'namn1'); SÄTT IN I tabellen VÄRDER (2, 'namn2'); SÄTT IN I tabellen VÄRDER (3, 'namn3'); 

Gillade du och hjälpte denna handledning?Du kan belöna författaren genom att trycka på den här knappen för att ge honom en positiv poäng
wave wave wave wave wave