Wat is mysqldump en hoe gebruik ik het?

Inhoudsopgave:

Wat is mysqldump en hoe gebruik ik het?
Wat is mysqldump en hoe gebruik ik het?
Anonim

Als een van de toonaangevende vrij beschikbare databases, is MySQL een populaire keuze voor veel webapplicaties. Uw app wordt blootgesteld aan internet en wordt blootgesteld aan kwaadaardige aanvallen. Als uw server gecompromitteerd is, moet u in het beste geval de applicatie opnieuw installeren; in het slechtste geval kunt u uw gegevens kwijtraken. Bovendien kunt u in een situatie komen waarin u een database van de ene server naar de andere moet migreren.

Waar wordt mysqldump voor gebruikt?

De mysqldump-tool biedt u dekking voor zowel de servercompromis- als migratiesituaties. De basisfunctie is om een MySQL-database te nemen en deze als tekstbestand te dumpen. Maar geen tekstbestand; het bestand is een set SQL-instructies. Wanneer deze instructies worden uitgevoerd, wordt de database gereconstrueerd in de exacte staat waarin deze zich bevond toen de dump werd uitgevoerd.

Gebruik mysqldump om exports van een database te maken als back-up, of wanneer u de database naar een nieuwe host verplaatst. In beide gevallen wordt het tekstbestand weer geïmporteerd in een MySQL-databaseserver. Het voert alle SQL-instructies in het bestand uit, waardoor de database in de oorspronkelijke staat wordt hersteld. Dit deel gebruikt het mysqldump-commando niet, maar het zou ook niet mogelijk zijn zonder dit hulpprogramma.

De MySQL-documenten vermelden andere methoden om back-ups te maken, maar deze hebben nadelen:

  • Het hotcopy van een database van MySQL Enterprise is een geweldige manier om deze back-ups te maken - als u het Enterprise-prijskaartje niet erg vindt.
  • Het kopiëren van de databasegegevensmappen kan lastig zijn bij het verplaatsen van verschillende besturingssystemen, omdat de bestemmingen anders zullen zijn.
  • Exporteren naar een tekstbestand met scheidingstekens geeft je de inhoud, maar je moet de structuur opnieuw maken.
  • Je kunt vaak een back-up maken van databases van GUI-programma's zoals MySQL Workbench. Maar dit is een handmatig proces; niet iets dat u kunt scripten of opnemen in een batchtaak.

Installeer de mysqldump Tool

Voor Windows, bekijk onze instructies om MySQL te installeren op Windows 7 (het installatieproces is hetzelfde voor Windows 10). Zie op macOS onze instructies om MySQL te installeren op macOS 10.7 (opnieuw, ouder maar nog steeds van toepassing). Gebruikers van op Ubuntu gebaseerde Linux-systemen kunnen de volgende opdracht gebruiken om de MySQL-client en hulpprogramma's te installeren:

sudo apt install mysql-client

Een MySQL-dump uitpakken

Eenmaal geïnstalleerd, gebruik mysqldump om een volledige back-up van een database te krijgen.

mysqldump -h [de naam of het IP-adres van uw DB-host] -u [de gebruikersnaam van de DB] -p [de databasenaam] > db_backup.sql

Hier is een beschrijving van de vlaggen die in deze opdracht worden gebruikt:

  • - h: Deze vlag is de databasehost. Dit kan een volledige hostnaam zijn (bijvoorbeeld mijnhost.domein.com) of een IP-adres. Laat dit leeg als u de opdracht op dezelfde host uitvoert als de MySQL-server.
  • - u: Uw gebruikersnaam.
  • - p: Als je de MySQL-installatie goed hebt beveiligd, heb je een wachtwoord nodig om verbinding te maken. Deze vlag zonder argument vraagt u om een wachtwoord wanneer u de opdracht uitvoert. Soms is het handig om het wachtwoord rechtstreeks als argument voor deze vlag op te geven, bijvoorbeeld in een back-upscript. Maar bij de prompt zou u dat niet moeten doen, want als iemand toegang tot uw computer zou krijgen, zou hij dit wachtwoord in de opdrachtgeschiedenis kunnen krijgen.
  • > db_backup.sql: Dit deel vertelt mysqldump om de uitvoer naar een bestand te sturen. Normaal gesproken voert de opdracht alles uit naar de console, wat betekent dat u verschillende SQL-instructies op het scherm ziet. Het symbool > leidt de uitvoer naar het genoemde tekstbestand. Als dit bestand niet bestaat, wordt het automatisch aangemaakt.

Als het klaar is, heb je een. SQL-bestand. Dit is een tekstbestand met SQL-instructies. U kunt het in elke teksteditor openen om de inhoud te inspecteren. Hier is een export van een WordPress-database die laat zien hoe deze bestanden in elkaar zitten.

Image
Image

Het bestand is verdeeld in secties. Het eerste gedeelte stelt de tabel in voor WordPress-opmerkingen. In de tweede sectie wordt de inhoud in die tabellen opnieuw gemaakt (in dit voorbeeld de opmerkingenrecords). Wanneer u de MySQL-dump opnieuw importeert, werkt de opdracht door het bestand, voert de instructies uit en bouwt de database opnieuw op zoals deze was.

Importeer een MySQL-dumpbestand

Voordat u het dumpbestand importeert, heeft u een reeds aangemaakte database en een geldige gebruikersnaam en wachtwoord nodig. U moet ook alle machtigingen voor de database hebben. U hebt de GRANT-toestemming niet nodig, maar het is gemakkelijker om ze allemaal te verlenen.

Lees meer over databaserechten voordat u de beveiligingsrollen binnen uw database wijzigt.

Om uw gegevens opnieuw te importeren, logt u in op de MySQL-server met het mysql commando. Typ use [databasenaam] bij de prompt en vervang de naam van de database. Voer bron [bestandsnaam] in en vervang de naam van het dumpbestand dat u eerder nam.

Als je klaar bent, verschijnt er een lijst met berichten waarin staat dat SQL-instructies worden uitgevoerd. Let op fouten, maar als je de juiste rechten hebt, zou het goed moeten komen.

Image
Image

Als het proces is voltooid, heb je een duplicaat van de originele database. Om de overeenkomst tussen de databases te verifiëren, voert u nog een dump uit en vergelijkt u de twee outputs. Gebruik een teksteditor of een speciale diff-tool om de twee bestanden te vergelijken.

Image
Image

Er zijn twee verschillen tussen deze bestanden, zoals weergegeven door rode lijnen aan de boven- en onderkant van de rechter schuifbalk. De eerste is de regel die de databasenaam bevat, en dit is anders omdat de bestanden een andere naam hebben gekregen. De tweede is de tijdstempel voor het dumpbestand. Dit is anders omdat de tweede database na de eerste opnieuw is gemaakt. Anders zijn de bestanden precies hetzelfde, wat betekent dat de databases die ze hebben gegenereerd dat ook zijn.

FAQ

    Hoe los je de mysqldump-fout op: Toegang geweigerd bij gebruik van vergrendeltabellen?

    Vraag uw databasebeheerder om u het LOCK-privilege te verlenen. Als dit het probleem niet oplost, probeer dan hetzelfde mysqldump-commando uit te voeren door de - -single-transaction vlag toe te voegen, zoals [ $ mysqldump --single-transaction] [-u gebruiker] [-p DBNAME] > backup.sql

    Kun je een "waar"-clausule gebruiken met mysqldump?

    Gebruik een WHERE-clausule bij het maken van een back-up die alleen de rijen bevat die aan de gegeven voorwaarde voldoen. Als u bijvoorbeeld alleen gegevens wilt dumpen van rijen waarvan de id-kolom groter is dan 100, voert u "mysqldump my_db_name my_table_name --where="id > 100" > my_backup.sql". in

Aanbevolen: