MySQL och MariaDB inkluderar themysqldump-verktyget för att förenkla processen för att skapa en säkerhetskopia av en databas eller system med databaser. Använder mysqldump
skapar en logisk säkerhetskopia . Du kan bara använda det här verktyget om din databasprocess är tillgänglig och körs.
Om din databas av någon anledning inte är tillgänglig kan du istället skapa enfysisk säkerhetskopia , som är en kopia av filsystemstrukturen som innehåller dina data.
Instruktionerna i den här guiden gäller både MySQL och MariaDB. För att förenkla, kommer namnet MySQL att användas för att gälla för antingen.
Innan du börjar
-
Du behöver en fungerande MySQL- eller MariaDB-installation och en databasanvändare för att köra säkerhetskopieringen. För hjälp med installationen, se Linode MySQL-dokumentationen.
-
Du behöver root-åtkomst till systemet, eller ett användarkonto med
sudo
privilegier.
Säkerhetskopiera en databas
mysqldump
kommandots allmänna syntax är:
mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
mysqldump
frågar efter ett lösenord innan den startar säkerhetskopieringsprocessen.- Beroende på databasens storlek kan det ta ett tag att slutföra.
- Säkerhetskopieringen av databasen kommer att skapas i den katalog som kommandot körs.
-$(date +%F)
lägger till en tidsstämpel till filnamnet.
Exempel på användningsfall inkluderar:
-
Skapa en säkerhetskopia av ett helt databashanteringssystem (DBMS):
mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
-
Säkerhetskopiera en specifik databas. Ersätt
db1
med namnet på databasen du vill säkerhetskopiera:mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
-
Säkerhetskopiera en enda tabell från valfri databas. I exemplet nedan,
table1
exporteras från databasendb1
:mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
Här är en uppdelning av mysqldump
kommandoalternativ som används ovan:
--single-transaction
:Utfärda en BEGIN SQL-sats innan du dumpar data från servern.--quick
:Genomför dumpningstabeller rad för rad. Detta ger extra säkerhet för system med lite RAM och/eller stora databaser där det kan bli problematiskt att lagra tabeller i minnet.--lock-tables=false
:Lås inte tabeller för säkerhetskopieringssessionen.
Automatisera säkerhetskopior med cron
Poster kan läggas till i /etc/crontab
för att regelbundet schemalägga säkerhetskopiering av databas.
-
Skapa en fil med inloggningsuppgifterna för MySQL-rotanvändaren som kommer att utföra säkerhetskopieringen. Observera att systemanvändaren vars hemkatalog den här filen är lagrad i inte kan vara relaterad till någon MySQL-användare.
- Fil:/ home/example_user/.mylogin.cnf
1 2 3
[client] user = root password = MySQL root user's password
-
Begränsa behörigheter för autentiseringsfilen:
chmod 600 /home/example_user/.mylogin.cnf
-
Skapa cron-jobbfilen. Nedan är ett exempel på ett cron-jobb för att säkerhetskopiera hela databashanteringssystemet varje 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
För mer information om cron, se manualsidorna för thecron(8) ochcron(5).
Återställ en säkerhetskopia
Återställningskommandots allmänna syntax är:
mysql -u [username] -p [databaseName] < [filename].sql
-
Återställ en hel DBMS-säkerhetskopia. Du kommer att bli ombedd att ange MySQL root-användarens lösenord:
Detta kommer att skriva över alla aktuella data i MySQL-databassystemetmysql -u root -p < full-backup.sql
-
Återställ en enda databasdump. En tom eller gammal måldatabas måste redan finnas för att importera data till, och MySQL-användaren som du kör kommandot måste ha skrivåtkomst till databasen:
mysql -u [username] -p db1 < db1-backup.sql
-
Återställ en enda tabell, du måste ha en destinationsdatabas redo för att ta emot data:
mysql -u dbadmin -p db1 < db1-table1.sql
Mer information
Du kanske vill konsultera följande resurser för ytterligare information om detta ämne. Även om dessa tillhandahålls i hopp om att de kommer att vara användbara, vänligen observera att vi inte kan garantera noggrannheten eller aktualiteten hos externt värdmaterial.
- sidan MySQL Databas Backup Methods
- mysqldump - Ett program för säkerhetskopiering av databas, MySQL Reference Manual