sql >> Database >  >> RDS >> Mysql

Gebruik mysqldump om een ​​back-up te maken van MySQL of MariaDB

MySQL en MariaDB bevatten het hulpprogramma mysqldump om het proces voor het maken van een back-up van een database of een systeem van databases te vereenvoudigen. mysqldump gebruiken maakt een logische back-up . U kunt deze tool alleen gebruiken als uw databaseproces toegankelijk is en actief is.

Als uw database om welke reden dan ook niet toegankelijk is, kunt u in plaats daarvan eenfysieke back-up maken , wat een kopie is van de structuur van het bestandssysteem die uw gegevens bevat.

De instructies in deze handleiding zijn van toepassing op zowel MySQL als MariaDB. Ter vereenvoudiging wordt de naam MySQL gebruikt om op beide van toepassing te zijn.

Voordat u begint

  • U hebt een werkende MySQL- of MariaDB-installatie nodig en een databasegebruiker om de back-up uit te voeren. Zie de Linode MySQL-documentatie voor hulp bij de installatie.

  • Je hebt root-toegang tot het systeem nodig, of een gebruikersaccount met sudo privileges.

Back-up van een database

De mysqldump de algemene syntaxis van het commando is:

mysqldump -u [username] -p [databaseName] > [filename]-$(date +%F).sql
  • mysqldump vraagt ​​om een ​​wachtwoord voordat het back-upproces wordt gestart.
  • Afhankelijk van de grootte van de database, kan het even duren om te voltooien.
  • De databaseback-up wordt gemaakt in de map waarin de opdracht wordt uitgevoerd.
  • -$(date +%F) voegt een tijdstempel toe aan de bestandsnaam.

Voorbeelden van gebruiksscenario's zijn:

  • Maak een back-up van een volledig Database Management Systeem (DBMS):

      mysqldump --all-databases --single-transaction --quick --lock-tables=false > full-backup-$(date +%F).sql -u root -p
    
  • Maak een back-up van een specifieke database. Vervang db1 met de naam van de database waarvan u een back-up wilt maken:

      mysqldump -u username -p db1 --single-transaction --quick --lock-tables=false > db1-backup-$(date +%F).sql
    
  • Maak een back-up van een enkele tabel uit een willekeurige database. In het onderstaande voorbeeld, table1 wordt geëxporteerd uit de database db1 :

      mysqldump -u username -p --single-transaction --quick --lock-tables=false db1 table1 > db1-table1-$(date +%F).sql
    

Hier is een overzicht van de mysqldump hierboven gebruikte commando-opties:

  • --single-transaction :geef een BEGIN SQL-instructie uit voordat gegevens van de server worden gedumpt.
  • --quick :Dwing tabellen rij voor rij af. Dit biedt extra veiligheid voor systemen met weinig RAM en/of grote databases waar het opslaan van tabellen in het geheugen problematisch kan worden.
  • --lock-tables=false :vergrendel geen tabellen voor de back-upsessie.

Automatiseer back-ups met cron

Inzendingen kunnen worden toegevoegd aan /etc/crontab om regelmatig databaseback-ups te plannen.

  1. Maak een bestand met de inloggegevens van de MySQL-rootgebruiker die de back-up zal uitvoeren. Houd er rekening mee dat de systeemgebruiker in wiens thuismap dit bestand is opgeslagen, geen verband kan houden met MySQL-gebruikers.

    Bestand:/ home/example_user/.mylogin.cnf
    1
    2
    3
    
    [client]
    user = root
    password = MySQL root user's password
  2. Beperk de rechten van het inloggegevensbestand:

    chmod 600 /home/example_user/.mylogin.cnf
    
  3. Maak het cron-jobbestand aan. Hieronder ziet u een voorbeeld van een cron-taak om elke dag om 01:00 uur een back-up te maken van het volledige databasebeheersysteem:

    Bestand:/ 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

    Voor meer informatie over cron, zie de handleidingen van decron(8) encron(5).

Een back-up herstellen

De algemene syntaxis van het herstelcommando is:

mysql -u [username] -p [databaseName] < [filename].sql
  • Herstel een volledige DBMS-back-up. U wordt gevraagd om het wachtwoord van de MySQL-rootgebruiker:
    Hiermee worden alle huidige gegevens in het MySQL-databasesysteem overschreven

      mysql -u root -p < full-backup.sql
    
  • Herstel een enkele databasedump. Er moet al een lege of oude doeldatabase bestaan ​​om de gegevens in te importeren, en de MySQL-gebruiker die u de opdracht uitvoert, moet schrijftoegang hebben tot die database:

      mysql -u [username] -p db1 < db1-backup.sql
    
  • Herstel een enkele tabel, u moet een doeldatabase gereed hebben om de gegevens te ontvangen:

      mysql -u dbadmin -p db1 < db1-table1.sql
    

Meer informatie

U kunt de volgende bronnen raadplegen voor aanvullende informatie over dit onderwerp. Hoewel deze worden verstrekt in de hoop dat ze nuttig zullen zijn, houd er rekening mee dat we niet kunnen instaan ​​voor de nauwkeurigheid of tijdigheid van extern gehost materiaal.

  • pagina MySQL-databaseback-upmethoden
  • mysqldump - Een databaseback-upprogramma, MySQL-referentiehandleiding

  1. Bulk invoegen met SQLAlchemy ORM

  2. Spreadsheets versus databases:is het tijd om over te stappen? Deel 2

  3. De EXECUTE-toestemming is geweigerd voor het object 'xxxxxxx', database 'zzzzzzz', schema 'dbo'

  4. UNPIVOT op een onbepaald aantal kolommen