sql >> Database >  >> RDS >> Mysql

Maak een back-up van uw MySQL-databases

MySQL is een open source relationeel databasebeheersysteem (DBMS) dat vaak wordt ingezet in een breed scala aan contexten. Meestal wordt het ingezet als onderdeel van theLAMP Stack. Het databasesysteem is ook gemakkelijk te gebruiken en zeer draagbaar en is, in de context van vele toepassingen, uiterst efficiënt. Aangezien MySQL vaak een gecentraliseerde gegevensopslag is voor grote hoeveelheden bedrijfskritieke gegevens, is het maken van regelmatige back-ups van uw MySQL-database een van de belangrijkste hersteltaken die een systeembeheerder kan uitvoeren. Deze handleiding behandelt een aantal verschillende methoden voor het maken van back-ups van uw database en het herstellen van databases vanaf back-ups.

Voordat u met het installatieproces begint, gaan we ervan uit dat u de stappen hebt gevolgd die zijn beschreven in onze Een computerinstantie instellen en beveiligen. Bovendien moet u de MySQL-database installeren. Alle configuratie wordt uitgevoerd in een terminalsessie; zorg ervoor dat je via SSH als root op je Linode bent ingelogd. Als Linux-serverbeheer nieuw voor u is, bent u wellicht geïnteresseerd in onze introductie tot de Linux-conceptengids, de beginnershandleiding en de basisgids voor het beheer.

Back-upmethodologie

De meeste back-ups van MySQL-databases in deze handleiding worden uitgevoerd met de mysqldump tool, die wordt gedistribueerd met de standaard MySQL-serverinstallatie. We raden u aan mysqldump . te gebruiken waar mogelijk, omdat dit vaak de gemakkelijkste en meest efficiënte manier is om databaseback-ups te maken. Andere methoden die in deze handleiding worden beschreven, zijn bedoeld voor situaties waarin u geen toegang hebt tot de mysqldump tool, zoals in een herstelomgeving zoals Finnix of in situaties waarin de lokale instantie van de MySQL-server niet start.

Desalniettemin biedt deze handleiding slechts een overzicht van de mysqldump tool, aangezien er veel opties en gebruiksmogelijkheden zijn voor mysqldump die buiten het bestek van dit document vallen. We raden u aan om vertrouwd te raken met alle procedures die in dit document worden behandeld en om door te gaan met uw verkenning van mysqldump buiten de hier beschreven gevallen. Let op het volgende:

  • De *.sql bestanden gemaakt met mysqldump kan op elk moment worden hersteld. U kunt zelfs de database .sql bewerken bestanden handmatig (met grote zorg!) met uw favoriete teksteditor.
  • Als uw databases alleen gebruikmaken van de MyISAM-opslagengine, kunt u de mysqldump vervangen commando met de snellere mysqlhotcopy .

Back-ups maken van het gehele databasebeheersysteem (DBMS)

Het is vaak nodig om een ​​back-up (of "dump") te maken van een volledig databasebeheersysteem samen met alle databases en tabellen, inclusief de systeemdatabases die de gebruikers, machtigingen en wachtwoorden bevatten.

Optie 1:maak back-ups van een volledig databasebeheersysteem met behulp van het mysqldump-hulpprogramma

De meest ongecompliceerde methode voor het maken van een enkele coherente back-up van het volledige MySQL-databasebeheersysteem maakt gebruik van de mysqldump hulpprogramma vanaf de opdrachtregel. De syntaxis voor het maken van een databasedump met een huidige tijdstempel is als volgt:

mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -p

Met deze opdracht wordt u om een ​​wachtwoord gevraagd voordat de databaseback-up in de huidige map wordt gestart. Dit proces kan enkele seconden tot enkele uren duren, afhankelijk van de grootte van uw databases.

Automatiseer dit proces door een regel toe te voegen aan crontab :

0 1 * * * /usr/bin/mysqldump --all-databases > dump-$( date '+%Y-%m-%d_%H-%M-%S' ).sql -u root -pPASSWORD

Gebruik voor het bovenstaande voorbeeld which mysqldump om het juiste pad naar de opdracht te bevestigen, en vervang root met de mysql-gebruiker die u wilt back-uppen als, en PASSWORD met het juiste wachtwoord voor die gebruiker.

Opmerking Zorg er in het crontab-voorbeeld voor dat er geen spatie is tussen de vlag -P en uw wachtwoordinvoer.

Optie 2:maak back-ups van een volledig DBMS met behulp van kopieën van de MySQL-gegevensmap

Terwijl de mysqldump tool de geprefereerde back-upmethode is, zijn er een aantal gevallen die een andere aanpak vereisen. mysqldump werkt alleen als de databaseserver toegankelijk is en actief is. Als de database niet kan worden gestart of het hostsysteem niet toegankelijk is, kunnen we de database van MySQL rechtstreeks kopiëren. Deze methode is vaak nodig in situaties waarin u alleen toegang hebt tot een herstelomgeving zoals Finnix met de schijven van uw systeem in dat bestandssysteem. Als u deze methode op uw systeem zelf probeert, zorg er dan voor dat de database niet . is rennen. Geef een opdracht die lijkt op het volgende:

/etc/init.d/mysqld stop

Op de meeste distributieversies van MySQL bevindt de gegevensmap zich in de /var/lib/mysql/ map. Als deze map niet bestaat, onderzoekt u de /etc/mysql/my.cnf bestand voor een pad naar de gegevensmap. Als alternatief kunt u in uw bestandssysteem zoeken naar de gegevensmap door het volgende commando uit te voeren:

find / -name mysql

Zodra u uw MySQL-gegevensmap hebt gevonden, kunt u deze naar een back-uplocatie kopiëren. In het volgende voorbeeld wordt ervan uitgegaan dat de MySQL-gegevensdirectory zich bevindt op /var/lib/mysql/ :

cp -R /var/lib/mysql/* /opt/database/backup-1266871069/

In dit geval hebben we de inhoud van de gegevensmap recursief gekopieerd (bijv. /var/lib/mysql/ ) naar een map binnen de /opt/ hiërarchie (bijv. /opt/database/backup-1266871069/ ). Deze map moet bestaan ​​voordat de kopieerbewerking wordt gestart. Overweeg de volgende volgorde van bewerkingen:

/etc/init.d/mysql stop
mkdir -p /opt/database/backup-1266872202/
cp -R /var/lib/mysql/* /opt/database/backup-1266872202/

Deze opdrachten beginnen met het stoppen van de MySQL-serverdaemon en het maken van een map met de naam /opt/database/backup-1266872202/ , en het uitvoeren van een recursieve kopie van de gegevensmap. Merk op dat we ervoor hebben gekozen om de backup-[time_t] . te gebruiken naamgevingsconventie voor onze voorbeelden. Vervang de bovenstaande paden door uw voorkeursorganisatie en naamgevingsschema. De cp opdracht produceert geen uitvoer en kan enige tijd duren om te voltooien, afhankelijk van de grootte van uw database. Schrik niet als het even duurt voordat het klaar is. Wanneer de kopieerbewerking is voltooid, wilt u misschien de gegevensmap archiveren in een "tar"-archief om het gemakkelijker te kunnen beheren en verplaatsen tussen machines. Geef de volgende opdrachten om het archief te maken:

cd /opt/database/backup-1266872202
tar -czfv * > /opt/mysqlBackup-1266872202.tar.gz

Zodra de tarball is gemaakt, kunt u het bestand eenvoudig overbrengen op de manier die voor u het handigst is. Vergeet niet de MySQL-serverdaemon opnieuw te starten indien nodig:

/etc/init.d/mysql start

Back-ups maken van een enkele database

In veel gevallen is het maken van een back-up van de gehele databaseserver niet vereist. In sommige gevallen, zoals het upgraden van een webtoepassing, kan het installatieprogramma aanbevelen een back-up van de database te maken voor het geval de upgrade de database nadelig beïnvloedt. Evenzo, als u een "dump" van een specifieke database wilt maken om die database naar een andere server te verplaatsen, kunt u de volgende methode overwegen.

Gebruik indien mogelijk de mysqldump tool om een ​​"dump" van een enkele database te exporteren. Deze opdracht ziet er als volgt uit:

mysqldump -u username -ps3cr1t -h localhost danceLeaders > 1266861650-danceLeaders.sql

Het bovenstaande voorbeeld is zoals het voorbeeld in de vorige sectie, behalve in plaats van het gebruik van de --all-databases optie specificeert dit voorbeeld een bepaalde databasenaam. In dit geval maken we een back-up van de danceLeaders databank. De vorm van dit commando, in een meer duidelijke notatie is als volgt:

mysqldump -u [username] -p[password] -h [host] [databaseName] > [backup-name].sql

Voor een extra voorbeeld maken we een back-up van de database met de naam customer met behulp van de root-database-account door de volgende opdracht te geven:

mysqldump -u root -p -h localhost customer > customerBackup.sql

U wordt om een ​​wachtwoord gevraagd voordat mysqldump begint het back-upproces. Zoals altijd het back-upbestand, in dit geval customerBackup.sql , wordt gemaakt in de map waarin u deze opdracht geeft. De mysqldump opdracht kan binnen een paar seconden of een paar uur worden voltooid, afhankelijk van de grootte van de database en de belasting van de host bij het uitvoeren van de back-up.

Back-ups maken van een enkele tabel

Optie 1:maak back-ups van een enkele tabel met behulp van het mysqldump-hulpprogramma

Deze bewerking, zoals eerder gebruik van de mysqldump hulpprogramma in dit document, kunt u een back-up maken van een enkele databasetabel. Als vervolg op onze eerdere voorbeelden, kunt u met het volgende voorbeeld een back-up maken van de tabel usernameRecords in de danceLeaders database.

 mysqldump -u username -ps3cr1t -h localhost danceLeaders usernameRecords \> 1266861650-danceLeaders-usernameRecords.sql

Het bovenstaande voorbeeld lijkt op het voorbeeld in de vorige sectie, behalve dat we een tabelnaamspecificatie hebben toegevoegd aan de opdracht om de naam op te geven van de tabel waarvan we een back-up willen maken. De vorm van dit commando in een meer duidelijke notatie is als volgt:

mysqldump -u [username] -p[password] -h [host] [databaseName] [tableName] > [backup-name].sql

Voor een extra voorbeeld maken we een back-up van de tabel met de naam "bestelling" uit de database met de naam customer met behulp van de root-database-account door de volgende opdracht te geven:

mysqldump -u root -p -h localhost customer order > customerBackup-order.sql

U wordt om een ​​wachtwoord gevraagd voordat mysqldump begint het back-upproces. Zoals altijd is het back-upbestand (in dit geval customerBackup.sql ) wordt gemaakt in de map waarin u deze opdracht geeft. De mysqldump opdracht kan binnen een paar seconden of een paar uur worden voltooid, afhankelijk van de grootte van de database en de belasting van de host bij het uitvoeren van de back-up.

Optie 2:maak back-ups van een enkele tabel met behulp van de MySQL-client en een OUTFILE-verklaring

De MySQL-client zelf heeft enige back-upmogelijkheden. Het is handig wanneer u al bent ingelogd en u de huidige sessie niet wilt verlaten. Als u een live-systeem gebruikt en u zich geen downtime kunt veroorloven, kunt u overwegen de tafel waarvan u een back-up maakt tijdelijk te vergrendelen.

Houd er rekening mee dat bij het maken van een back-up van een enkele tabel met behulp van de MySQL-client, de structuur van die tabel niet behouden blijft in de back-up. Bij gebruik van deze methode worden alleen de gegevens zelf opgeslagen.

  1. Voordat we beginnen, raden we aan om een ​​LOCK TABLES . uit te voeren op de tafels waarvan u een back-up wilt maken, gevolgd door FLUSH TABLES om ervoor te zorgen dat de database zich in een consistente ruimte bevindt tijdens de back-upbewerking. Je hebt alleen een leesslot nodig. Hierdoor kunnen andere clients de tabellen blijven doorzoeken terwijl u een kopie maakt van de bestanden in de MySQL-gegevensdirectory. Voor een “lees” slot, de syntax van LOCK TABLES ziet er als volgt uit:

    1
    
    LOCK TABLES tableName READ;

    Een LOCK TABLES uitvoeren op de order tabel van de customer database, geef het volgende commando:

    mysql -u root -p -h localhost
    

    U wordt dan gevraagd om het root-wachtwoord. Nadat u de databasereferenties hebt ingevoerd, komt u bij de mysql-clientprompt. Geef de volgende opdracht om de order te vergrendelen tabel in de customer database (de achterliggende ; is vereist voor MySQL-opdrachten):

    1
    2
    3
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
  2. We kunnen nu beginnen met de back-upbewerking. Om een ​​back-up van een enkele tabel te maken met behulp van de MySQL-client, moet u zijn aangemeld bij uw MySQL DBMS. Als u momenteel niet bent ingelogd, kunt u inloggen met het volgende commando:

    mysql -u root -p -h localhost
    

    U wordt gevraagd om een ​​wachtwoord. Nadat u het juiste wachtwoord hebt ingevoerd en bij de MySQL-clientprompt bent, kunt u een SELECT * INTO OUTFILE gebruiken uitspraak. De syntaxis van deze verklaring ziet er als volgt uit:

    1
    
    SELECT * INTO OUTFILE 'file_name' FROM tbl_name;

    In dit voorbeeld maken we een back-up van de gegevens van de order tabel van de customer databank. Geef de volgende opdracht om de back-upprocedure te starten (de volgende ; is vereist voor MySQL-opdrachten):

    1
    2
    3
    4
    5
    
    USE customer;
    LOCK TABLES order READ;
    FLUSH TABLES;
    SELECT * INTO OUTFILE 'customerOrderBackup.sql' FROM order;
    UNLOCK TABLES;

    De customerOrderBackup.sql bestand wordt gemaakt in de juiste gegevenssubmap in de gegevensmap van MySQL. De MySQL-gegevensdirectory is gewoonlijk /var/lib/mysql/ . In dit voorbeeld is de OUTFILE zal zijn /var/lib/mysql/customer/customerOrderBackup.sql . De locatie van deze map en dit bestand kan echter variëren tussen Linux-distributies. Als u uw back-upbestand niet kunt vinden, kunt u ernaar zoeken met de volgende opdracht:

    find / -name customerOrderBackup.sql
    
  3. Nadat u de back-upbewerking hebt voltooid, wilt u de tabellen ontgrendelen met de volgende opdracht in de MySQL-client. Hierdoor keert uw database terug naar de normale werking. Log in op de MySQL-client met het eerste commando als je nog niet bent ingelogd en geef dan het tweede commando:

    mysql -uroot -p -h localhost
    
    1
    
    UNLOCK TABLES;

U kunt uw database vanaf dit punt gewoon blijven gebruiken.

Overwegingen voor een effectieve back-upstrategie

Het maken van back-ups van uw MySQL-database zou een regelmatige en geplande taak moeten zijn. U kunt overwegen om periodieke back-ups te plannen met behulp van cron , mysqldump en/of mail . Bekijk onze documentatie voor meer informatie overcron. Het implementeren van een geautomatiseerde back-upoplossing kan de uitvaltijd in een noodherstelsituatie helpen minimaliseren.

U hoeft niet als root in te loggen bij het maken van back-ups van databases. Een MySQL-gebruiker met lezen (bijv. SELECT ) toestemming kan zowel de mysqldump en mysql (bijv. de MySQL-client) tools om back-ups te maken, zoals hieronder beschreven. Het is gebruikelijk dat u de MySQL root niet gebruikt gebruiker waar mogelijk om veiligheidsrisico's te minimaliseren.

U kunt incrementele back-ups overwegen als onderdeel van een langetermijnplan voor databaseback-ups. Hoewel dit proces hier niet wordt behandeld, raden we u aan de bron MySQL Database Backup Methods te raadplegen voor meer informatie.

Een volledig DBMS herstellen vanaf een back-up

Een back-up die niet kan worden hersteld, is van minimale waarde. We raden aan om uw back-ups regelmatig te testen om er zeker van te zijn dat ze kunnen worden teruggezet in het geval dat u een back-up moet herstellen. Wanneer u back-ups van uw MySQL-database terugzet, hangt de methode die u gebruikt af van de methode die u hebt gebruikt om de betreffende back-up te maken.

Optie 1:een volledige DBMS herstellen met behulp van de MySQL-client en back-ups gemaakt door mysqldump

Voordat u met het herstelproces begint, wordt in deze sectie aangenomen dat uw systeem een ​​nieuw geïnstalleerde versie van MySQL gebruikt zonder bestaande databases of tabellen. Als u al databases en tabellen in uw MySQL DBMS heeft, maak dan een back-up voordat u doorgaat, aangezien dit proces huidige MySQL-gegevens zal overschrijven.

U kunt eenvoudig uw volledige DBMS herstellen met behulp van de mysql opdracht. De syntaxis hiervoor ziet er als volgt uit:

mysql -u [username] -p [password] < backupFile.sql

In dit geval herstellen we gewoon het volledige DBMS. De opdracht ziet er als volgt uit:

mysql -u root -p < 1266861650-backup-all.sql

U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Zodra de juiste inloggegevens zijn opgegeven, begint het herstelproces. Aangezien dit proces een volledig DBMS herstelt, kan het enkele seconden tot vele uren duren.

Optie 2:een volledig DBMS herstellen met behulp van MySQL-gegevensbestanden die rechtstreeks zijn gekopieerd van MySQL's gegevensmap

Voordat u met het herstelproces begint, wordt in deze sectie aangenomen dat uw systeem een ​​nieuw geïnstalleerde versie van MySQL gebruikt zonder bestaande databases of tabellen. Als u al databases en tabellen in uw MySQL DBMS heeft, maak dan een back-up voordat u doorgaat, aangezien dit proces huidige MySQL-gegevens zal overschrijven.

  1. Als u een volledige back-up hebt van uw MySQL-gegevensmap (gewoonlijk /var/lib/mysql ), kunt u het herstellen vanaf de opdrachtregel. Om een ​​succesvol herstel te verzekeren, moet u eerst de MySQL-serverdaemon stoppen en de huidige gegevens in de MySQL-gegevensdirectory verwijderen.

    /etc/init.d/mysql stop
    rm -R /var/lib/mysql/*
    
  2. In het volgende voorbeeld bevindt de back-up van de MySQL-gegevensdirectory zich in de /opt/database/backup-1266872202 map. Als u een tarball van de datadirectory hebt gemaakt toen u een back-up van uw DBMS-datadirectory maakte, moet u de bestanden uit de tarball halen voordat u ze kopieert met de volgende opdrachten:

     cp mysqlBackup-1266872202.tar.gz /var/lib/mysql/
     cd /var/lib/mysql
     tar xzvf mysqlBackup-1266872202.tar.gz
    
  3. Voordat we het MySQL-databaseproces opnieuw kunnen starten, moeten we ervoor zorgen dat de machtigingen correct zijn ingesteld op de /var/lib/mysql/ map. Voor dit voorbeeld nemen we aan dat de MySQL-serverdaemon wordt uitgevoerd als de gebruiker mysql met de groep mysql . Voer de volgende opdracht uit om de machtigingen voor de gegevensmap te wijzigen:

    chown -R mysql:mysql /var/lib/mysql
    
  4. Wijzig de mysql:mysql deel van deze opdracht als uw MySQL-instantie wordt uitgevoerd met verschillende gebruikers- en groepsmachtigingen. De vorm van dit argument is [user]:[group] . Eindelijk kunnen we de MySQL-serverdaemon starten met het volgende commando:

    /etc/init.d/mysql start
    

    Als u een foutmelding krijgt die lijkt op de volgende:

    /usr/bin/mysqladmin: connect to server at 'localhost' failed
        error: 'Access denied for user 'debian-sys-maint'@'localhost' (using password: YES)'
    

    U moet de oude debian-sys-maint . vinden gebruikerswachtwoord in de /etc/mysql/debian.cnf en verander dan de nieuwe debian-sys-maint gebruikerswachtwoord ervoor. U kunt het oude wachtwoord bekijken met cat :

    cat /etc/mysql/debian.cnf | grep password
    

    Kopieer (of onthoud) het wachtwoord. Dan moet u de nieuwe debian-sys-maint . wijzigen gebruikerswachtwoord. U kunt dit doen door in te loggen als de MySQL-rootgebruiker en het volgende commando uit te voeren (waarbij het wachtwoord is van het oude debian-sys-maint gebruiker):

    1
    
    GRANT ALL PRIVILEGES ON *.* TO 'debian-sys-maint'@'localhost' IDENTIFIED BY '<password>' WITH GRANT OPTION;
  5. Vervolgens moet u MySQL opnieuw starten met het volgende commando:

    /etc/init.d/mysql restart
    

Nadat de MySQL-server met succes is gestart, wilt u uw MySQL DBMS testen en ervoor zorgen dat alle databases en tabellen correct worden hersteld. We raden u ook aan uw logboeken te controleren op mogelijke fouten. In sommige gevallen kan MySQL ondanks databasefouten succesvol starten.

Een enkele database herstellen vanaf een back-up

In gevallen waarin u slechts een back-up voor één database hebt gemaakt, of slechts één database hoeft te herstellen, is het herstelproces enigszins anders.

Voordat u met het herstelproces begint, wordt in deze sectie aangenomen dat uw systeem een ​​nieuw geïnstalleerde versie van MySQL gebruikt zonder bestaande databases of tabellen. Als u al databases en tabellen in uw MySQL DBMS heeft, maak dan een back-up voordat u doorgaat, aangezien dit proces huidige MySQL-gegevens zal overschrijven.

  1. Om een ​​enkele database te herstellen met behulp van de mysql opdracht, bereidt u eerst de doeldatabase voor. Log in op uw (nieuwe) MySQL-databaseserver met behulp van de MySQL-client:

    mysql -u root -p -h localhost
    
  2. U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Nadat u de juiste referenties hebt opgegeven, moet u de doeldatabase maken. In dit geval de customer database wordt hersteld:

    1
    
    CREATE DATABASE customer;
  3. Zoals bij alle MySQL-instructies, laat de laatste puntkomma niet weg (bijv. ; ) aan het einde van elke opdracht. Afhankelijk van uw implementatie moet u mogelijk een nieuwe MySQL-gebruiker maken of een eerdere gebruiker opnieuw maken met toegang tot de nieuw gemaakte database. De opdracht voor het maken van een nieuwe MySQL-gebruiker heeft de volgende vorm:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  4. In het volgende voorbeeld maken we een gebruiker aan met de naam customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  5. Nu geven we customeradmin toegangsrechten voor de customer databank. De opdracht voor het verlenen van privileges aan een database voor een specifieke gebruiker heeft de volgende vorm:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'
  6. Voor de doeleinden van het volgende voorbeeld geven we customeradmin volledige toegang tot de customer databank. Geef de volgende opdracht in de MySQL-client:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  7. Mogelijk moet u verschillende toegangsverleningen opgeven, afhankelijk van de vereisten van uw implementatie. Raadpleeg de officiële documentatie voor de GRANT-verklaring van MySQL. Nadat de doeldatabase en de MySQL-gebruiker zijn gemaakt, kunt u de MySQL-client sluiten met de volgende opdracht:

     quit
    
  8. U kunt nu de mysql . gebruiken commando om uw SQL-bestand te herstellen. De vorm van dit commando lijkt op het volgende:

     mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    

In het volgende voorbeeld herstellen we de customer database uit een SQL-back-upbestand met de naam customerBackup.sql (let vooral op de < symbool in dit commando):

mysql -u root -p -h localhost customer < customerBackup.sql

U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Zodra de juiste inloggegevens zijn opgegeven, begint het herstelproces. De duur van deze bewerking hangt af van de belasting van uw systeem en de grootte van de database die u herstelt. Het kan in een paar seconden voltooid zijn, of het kan vele uren duren.

Een enkele tabel herstellen vanuit een back-up

Optie 1:een enkele tabel herstellen met behulp van de MySQL en back-ups gemaakt door mysqldump

  1. Voordat we met het herstelproces beginnen, gaan we ervan uit dat uw MySQL-instantie al een bestaande database heeft die de tabel kan ontvangen die u wilt herstellen. Als uw MySQL-instantie niet over de vereiste database beschikt, moeten we deze maken voordat we verder gaan. Log eerst in op uw MySQL-instantie met het volgende commando:

    mysql -u root -p -h localhost
    
  2. U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Nadat u de juiste referenties hebt opgegeven, moet u de doeldatabase maken. Voor dit voorbeeld maken we de customer database.

    1
    
    CREATE DATABASE customer;

    Sluit vervolgens de mysql prompt:

    quit
    

    Als u al over de vereiste database beschikt, kunt u bovenstaande stap gerust overslaan. Geef een opdracht in de volgende vorm om door te gaan met het herstellen van de tabel:

    mysql -u [username] -p[password] -h [host] [databaseName] < [filename].sql
    
  3. Voor het volgende voorbeeld herstellen we de order tabel in de bestaande customer database uit een SQL-back-upbestand met de naam customerOrderBackup.sql . Wees zeer voorzichtig bij het gebruik van de < operator in de volgende opdracht:

    mysql -u root -p -h localhost customer < customerOrderBackup.sql
    

U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Zodra de juiste inloggegevens zijn opgegeven, begint het herstelproces. De duur van deze bewerking hangt af van de belasting van uw systeem en de grootte van de tabel die u herstelt. Het kan in een paar seconden voltooid zijn, of het kan vele uren duren.

Optie 2:een enkele tabel herstellen met de MySQL-client en een INFILE-verklaring voor back-ups gemaakt met OUTFILE

  1. Voordat we met het herstelproces beginnen, gaan we ervan uit dat uw MySQL-instantie al een bestaande database heeft die de tabel kan ontvangen die u wilt herstellen. Als uw MySQL-instantie niet over de vereiste database beschikt, moeten we deze maken voordat we verder gaan. Log eerst in op uw MySQL-instantie met het volgende commando:

    mysql -u root -p -h localhost
    
  2. U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Nadat u de juiste referenties hebt opgegeven, moet u de doeldatabase maken. Voor dit voorbeeld maken we de customer database.

    1
    
    CREATE DATABASE customer;

    Sluit vervolgens de mysql prompt:

    quit
    
  3. De gegevensback-up die in dit geval werd gebruikt, is gemaakt met de SELECT * INTO OUTFILE 'backupFile.sql' FROM tableName opdracht. Dit type back-up behoudt alleen de gegevens zelf, dus de tabelstructuur moet opnieuw worden gemaakt. Om een ​​enkele tabel vanuit de MySQL-client te herstellen, moet u eerst de doeldatabase en -tabel voorbereiden. Log in op uw (nieuwe) MySQL-instantie met behulp van de MySQL-client:

    mysql -u root -p -h localhost
    
  4. U wordt gevraagd om het wachtwoord van de root MySQL-gebruiker. Zodra de juiste referenties zijn opgegeven, moet u de doeldatabase maken. In dit geval maken we de customer . aan databank. Geef de volgende verklaring af:

    1
    
    CREATE DATABASE customer;
  5. Onthoud dat de puntkomma's (bijv. ; ) na elke verklaring zijn vereist. Nu moet u de bestemmingstabel met de juiste structuur maken. De gegevenstypen van de velden van de tabel moeten overeenkomen met die van de tabel waarin de back-up is gemaakt. In dit voorbeeld herstellen we de order tabel van de customer databank. Er zijn 2 velden in de order tabel, custNum met gegevenstype INT en orderName met gegevenstype VARCHAR(20); uw tafelstructuur zal anders zijn:

    1
    2
    
    USE customer;
    CREATE TABLE order (custNum INT, orderName VARCHAR(20));
  6. Afhankelijk van uw implementatie moet u mogelijk een nieuwe MySQL-gebruiker maken of een eerdere gebruiker opnieuw maken met toegang tot de nieuw gemaakte database. De opdracht voor het maken van een nieuwe MySQL-gebruiker heeft de volgende vorm:

    1
    
    CREATE USER '[username]'@'[host]' IDENTIFIED BY '[password]';
  7. In het volgende voorbeeld maken we een gebruiker aan met de naam customeradmin :

    1
    
    CREATE USER 'customeradmin'@'localhost' IDENTIFIED BY 's3cr1t';
  8. Nu geven we customeradmin toegangsrechten voor de customer databank. De opdracht voor het verlenen van privileges aan een database voor een specifieke gebruiker heeft de volgende vorm:

    1
    
    GRANT [privilegeType] ON [databaseName].[tableName] TO '[username]'@'[host]'

    Voor de doeleinden van het volgende voorbeeld geven we customeradmin volledige toegang tot de customer databank. Geef de volgende opdracht in de MySQL-client:

    1
    
    GRANT ALL ON customer.* TO 'customeradmin'@'localhost';
  9. Mogelijk moet u verschillende toegangsverleningen opgeven, afhankelijk van de vereisten van uw implementatie. Raadpleeg de officiële documentatie voor de GRANT-verklaring van MySQL. Nadat de tabel en gebruiker zijn gemaakt, kunnen we de back-upgegevens importeren uit het back-upbestand met behulp van de LOAD DATA opdracht. De syntaxis lijkt op het volgende:

    1
    
    LOAD DATA INFILE '[filename]' INTO TABLE [tableName];

    In het volgende voorbeeld herstellen we gegevens uit een tabel uit een bestand met de naam customerOrderBackup.sql . Wanneer MySQL-client pad en bestandsnaam krijgt na INFILE , zoekt het in de MySQL-gegevensmap naar dat bestand. Als de bestandsnaam customerOrderBackup.sql werd gegeven, zou het pad /var/lib/mysql/customerOrderBackup.sql zijn . Zorg ervoor dat het bestand waaruit u probeert te herstellen bestaat, vooral als MySQL File not found genereert fouten.

  10. De gegevens importeren uit de customerOrderBackup.sql bestand in /var/lib/mysql/ , geef het volgende commando:

    1
    
    LOAD DATA INFILE 'customerOrderBackup.sql' INTO TABLE order;

    Dit proces kan enkele seconden tot vele uren duren, afhankelijk van de grootte van uw tafel. De duur van deze bewerking hangt af van de belasting van uw systeem en de grootte van de tabel die u herstelt. Het kan in een paar seconden worden voltooid, of het kan vele uren duren. Nadat u heeft geverifieerd dat uw gegevens met succes zijn geïmporteerd, kunt u uitloggen:

    quit
    

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.

  • De officiële MySQL-website
  • pagina MySQL-databaseback-upmethoden
  • mysqldump handleiding pagina
  • Taken plannen met Cron
  • MySQL's subsidieverklaring, officiële documentatie

  1. Fix Toegang geweigerd voor gebruiker 'root'@'localhost' voor phpMyAdmin

  2. Records met maximale waarde ophalen voor elke groep gegroepeerde SQL-resultaten

  3. Oracle PL/SQL:hoe de stacktracering, pakketnaam en procedurenaam te verkrijgen?

  4. Getallen opmaken in PostgreSQL