sql >> Database >  >> RDS >> Mysql

Hoe een back-up te maken en te herstellen (exporteren en importeren) MySQL-databases Zelfstudie

phpMyAdmin kan worden gebruikt om eenvoudig MySQL- of MariaDB-databases te exporteren of te back-uppen. Als de database echter erg groot is, is dit waarschijnlijk geen goed idee. Met phpMyAdmin kunnen gebruikers de databasedump opslaan als bestand of op het scherm weergeven, waarbij SQL-instructies van de server worden geëxporteerd en de gegevens via een langzamere netwerkverbinding of internet naar de computer van de gebruiker worden verzonden. Dit proces vertraagt ​​het exportproces, verhoogt de vergrendelingstijd van de database en dus de onbeschikbaarheid van MySQL of MariaDB, vertraagt ​​de server en kan de Apache HTTPD-server eenvoudig laten crashen als te veel inkomende webverbindingen de systeembronnen in beslag nemen.

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.sql
Als 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.


  1. Problemen oplossen bij het werken met datum en tijd in SQL Server

  2. SQL IN-operator voor beginners

  3. SQL Server - Wat gebeurt er wanneer een rij in een tabel wordt bijgewerkt?

  4. Failovertijden vergelijken voor Amazon Aurora, Amazon RDS en ClusterControl