De betere manier om een MySQL- of MariaDB-database te back-uppen en te exporteren, is door de taak lokaal op de server uit te voeren, zodat de gegevens van de tabellen onmiddellijk en zonder vertraging op de lokale schijf kunnen worden gedumpt. De exportsnelheid zal dus sneller zijn en de tijd verkorten dat MySQL of MariaDB-database of -tabel is vergrendeld voor toegang. Deze tutorial is de gids voor het back-uppen (exporteren) en herstellen (importeren) van MySQL- of MariaDB-database(s) op de databaseserver zelf met behulp van de mysqldump en mysql Gereedschap. Er zijn in principe twee methoden om een back-up van MySQL of MariaDB te maken, één is door alle tabelbestanden (*.frm-, *.MYD- en *.MYI-bestanden) te kopiëren of door mysqlhotcopy te gebruiken hulpprogramma, maar het werkt alleen voor MyISAM-tabellen. Onderstaande tutorial zal zich concentreren op mysqldump die werkt voor zowel MyISAM- als InnoDB-tabellen.
Een MySQL- of MariaDB-database exporteren of back-uppen of dumpen
Om een MySQL- of MariaDB-database naar een dumpbestand te exporteren, typt u eenvoudig de volgende opdrachtsyntaxis in de shell. U kunt Telnet of SSH gebruiken om op afstand in te loggen op de machine als u geen toegang heeft tot de fysieke box.
mysqldump -u username -ppassword database_name > dump.sql
Vervang gebruikersnaam met een geldig MySQL- of MariaDB-gebruikers-ID, wachtwoord met het geldige wachtwoord voor de gebruiker (BELANGRIJK:geen spatie na -p en het wachtwoord, anders zal mysqldump u om een wachtwoord vragen, maar zal het wachtwoord als databasenaam behandelen, dus de back-up zal mislukken) en database_name met de werkelijke naam van de database die u wilt exporteren. Ten slotte kunt u elke gewenste naam voor het uitvoer-SQL-dumpbestand plaatsen, hier is dump.sql .
De hele data, tabellen, structuren en database van database_name wordt geback-upt in een SQL-tekstbestand met de naam dump.sql met het bovenstaande commando.
Alleen een MySQL- of MariaDB-databasestructuren exporteren
Als u de gegevens in de tabellen van de database niet langer nodig heeft (onwaarschijnlijk), voegt u gewoon –no-data toe schakel over om alleen de structuren van de tabellen te exporteren. De syntaxis is bijvoorbeeld:
mysqldump -u username -ppassword --no-data database_name > dump.sql
Alleen een back-up maken van gegevens van een MySQL- of MariaDB-database
Als u alleen een back-up van de gegevens wilt maken, gebruikt u –no-create-info optie. Met deze instelling maakt de dump de database, tabellen, velden en andere structuren niet opnieuw tijdens het importeren. Gebruik dit alleen als u er vrij zeker van bent dat u dubbele databases heeft met dezelfde structuur, waarbij u alleen de gegevens hoeft te vernieuwen.
mysqldump -u username -ppassword --no-create-info database_name > dump.sql
Hoe meerdere MySQL- of MariaDB-databases in een tekstbestand te dumpen
–databases optie kunt u meer dan 1 database specificeren. Voorbeeld syntaxis:
mysqldump -u username -ppassword --databases db_name1 [db_name2 ...] > dump.sql
Hoe alle databases in MySQL of MariaDB Server te dumpen
Om alle databases te dumpen, gebruikt u de –all-databases optie, en er hoeft geen databasenaam meer te worden opgegeven.
mysqldump -u username -ppassword --all-databases > dump.sql
Online back-up maken van InnoDB-tabellen
Maak een back-up van de database, waardoor MySQL- of MariaDB-server niet beschikbaar is voor applicaties, omdat bij het exporteren alle tabellen een globale leesvergrendeling hebben gekregen met behulp van FLUSH TABLES WITH READ LOCK aan het begin van de dump tot het einde. Dus hoewel READ-instructies kunnen doorgaan, zullen alle INSERT-, UPDATE- en DELETE-instructies in de wachtrij moeten staan vanwege vergrendelde tabellen, alsof MySQL of MariaDB niet werkt of vastloopt. Als u InnoDB gebruikt, –single-transactie is de manier om deze vergrendelingstijd te minimaliseren tot bijna onbestaande, alsof u een online back-up uitvoert. Het werkt door de binaire log-coördinaten te lezen zodra het slot is verkregen, en het slot wordt dan onmiddellijk vrijgegeven.
Syntaxis:
mysqldump -u username -ppassword --all-databases --single-transaction > dump.sql
Hoe MySQL- of MariaDB-database herstellen en importeren
U kunt herstellen vanuit phpMyAdmin, met behulp van het tabblad Importeren. Upload voor een snellere manier het dumpbestand naar de MySQL- of MariaDB-server en gebruik de volgende opdracht om de databases weer in de MySQL- of MariaDB-server te importeren.
mysql -u username -ppassword database_name < dump.sqlAls u op afstand verbinding wilt maken met MySQL- of MariaDB-servers op een andere server, voegt u -h server-name-or-IP-address toe naar de opdracht.
Het importeren en exporteren van de MySQL- of MariaDB-database is niet alleen belangrijk om de gegevens te herstellen wanneer zich een ramp voordoet, maar biedt ook een gemakkelijke manier om te migreren of naar een andere server te verhuizen, zoals bij het wisselen van webhostingprovider. Houd er echter rekening mee dat er één veelvoorkomend probleem is:codering van tekensets. Een nieuwere versie van mysqldump gebruikt UTF8 als standaardtekenset als er niets is gespecificeerd, terwijl oudere versies (ouder dan 4.1 doorgaans) Latin1 gebruiken als standaardtekenset. Als je database-tekenset Latin1 is en in UTF8-sortering wordt gedumpt, kunnen de gegevens uiteindelijk gewoon onzin, onleesbaar of onleesbaar worden (komt vaak voor met WordPress-blog). Gebruik in dit geval –default-character-set=charset_name optie om de tekenset te specificeren of de database naar UTF8 te converteren.