sql >> Databasteknik >  >> RDS >> Mysql

Använd mysqldump för att säkerhetskopiera MySQL eller MariaDB

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 databasen db1 :

      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.

  1. 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
  2. Begränsa behörigheter för autentiseringsfilen:

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. 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-databassystemet

      mysql -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

  1. Rotera/pivotera tabell med aggregering i Oracle

  2. Hur COUNT() fungerar i SQL Server

  3. Batch Mode Bitmaps i SQL Server

  4. Tips för att migrera från proprietära till öppen källkodsdatabaser