sql >> Database >  >> RDS >> Mysql

MySQL- of MariaDB-database exporteren

Het regelmatig maken van een databaseback-up is een van de cruciale stappen nadat het project live is gemaakt. De back-upfrequentie kan één keer per dag of week zijn. De dagelijkse back-up heeft de voorkeur voor de toepassingen waarin databasewijzigingen vaker voorkomen. In het geval van databases met hoge beschikbaarheid, moet een geschikte clusterconfiguratie worden overwogen in plaats van verticale schaling. Deze tutorial legt het gebruik uit van de mysqldump opdracht om de databaseback-up te maken. Dezelfde opdracht kan worden geautomatiseerd om geplande back-ups te maken.

Opmerkingen :Deze tutorial behandelt alleen de meest voorkomende opties die worden gebruikt met de mysqldump opdracht. U kunt ook de officiële documentatie raadplegen om alle mogelijke opties te verkennen. Dezelfde opdrachten kunnen worden gebruikt om een ​​back-up te maken van zowel MySQL- als MariaDB-databaseservers.

Lokale back-up

Back-up - In dit gedeelte wordt uitgelegd hoe u een lokale back-up in een bestand kunt maken door één of meerdere databases te exporteren.

Machtigingen - mysqldump vereist onderstaande privileges om de database te exporteren. De juiste rechten moeten worden toegewezen aan het gebruikersaccount dat wordt gebruikt om de database te exporteren.

  • SELECT - om tabellen te dumpen
  • WEERGAVE TONEN - om weergaven te dumpen
  • TRIGGER - om triggers te dumpen
  • VERGRENDEL TABELLEN - in het geval dat de optie --single-transactie niet wordt gebruikt

Opdracht - Hieronder staat het gebruik van mysqldump opdracht om lokale back-up te maken voor zowel Windows- als Linux-gebaseerde systemen, waaronder Ubuntu. De drievoudige punten betekenen dat meerdere waarden kunnen worden opgegeven.

# Regular command - Usage - Windows, Linux
mysqldump [options] db_name [tbl_name ...] > <file path>
mysqldump [options] --databases db_name ... > <file path>
mysqldump [options] --all-databases > <file path>

De voorbeelden om het reguliere commando te gebruiken zijn zoals hieronder vermeld. Deze voorbeeldopdrachten gebruiken de gebruiker enterprise om back-ups te maken van de database enterprise . Het is niet nodig om een ​​gebruiker en wachtwoord op te geven als het gebruikersaccount auth_socket gebruikt algoritme om in te loggen op de MySQL-server. De systeemgebruiker heeft direct toegang tot de database. U kunt verwijzen naar Hoe u een native wachtwoord gebruikt met MySQL 5.7 en hoe u MySQL 8 op Ubuntu installeert voor meer informatie over wachtwoordalgoritmen.

Opmerkingen :Het is niet nodig om de optie -p te gebruiken als er geen wachtwoord aan de gebruiker is toegewezen.

Hieronder staan ​​de voorbeelden om een ​​back-up te maken van een enkele database met gebruikersnaam, host en poort. Het wachtwoord mag niet worden opgegeven met deze commando's voor veiligheidsdoeleinden. U kunt het wachtwoord opgeven voor mysqldump in het configuratiebestand dat wordt beschouwd als een veilige optie voor cron banen. Een andere optie is om het cat-commando te gebruiken om een ​​gecodeerd wachtwoord te gebruiken (vergelijkbaar met hoe Plesk gebruikt), zoals weergegeven in de voorbeelden. Het systeem zal om een ​​wachtwoord vragen als dit niet in de opdracht is opgegeven. Deze commando's kunnen worden gebruikt om de hele database of enkele of meerdere tabellen te exporteren.

# All tables - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise > enterprise.sql

# All tables - with username, with password - insecure
mysqldump -u enterprise -p'mypwd' enterprise > enterprise.sql

# All tables - with username, with password - Plesk way
mysqldump -u enterprise -p`cat /etc/psa/.psa.shadow` dbname > dbname.sql

# All tables - with host, with port, with username, without password - prompts for password
mysqldump -h localhost -p 3306 -u enterprise -p enterprise > enterprise.sql

# Single table(user) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise [user] > enterprise.sql

# Multiple tables(user, profile) - with username, without password - prompts for password
mysqldump -u enterprise -p enterprise user profile > enterprise.sql

Hieronder staan ​​de voorbeelden om een ​​back-up te maken van meerdere databases met gebruikersnaam, host en poort.

# Multiple databases - with username, without password - prompts for password
mysqldump -u enterprise -p --databases enterprise vblog mshop > mydbs.sql

# Multiple databases - with username, with password
mysqldump -u enterprise -p'mypwd' --databases enterprise vblog mshop > mydbs.sql

Hieronder staat het voorbeeld om een ​​back-up te maken van alle databases met gebruikersnaam, host en poort.

# All databases - with username, without password - prompts for password
mysqldump -u enterprise -p --all-databases > mydbs.sql

# All databases - with username, with password
mysqldump -u enterprise -p'mypwd' --all-databases > mydbs.sql

De PowerShell-gebruikers op Windows hebben een ander commando nodig, zoals hieronder vermeld.

# PowerShell on Windows
shell> mysqldump [options] db_name [tbl_name ...] --result-file=<file path>
shell> mysqldump [options] --databases db_name ... --result-file=<file path>
shell> mysqldump [options] --all-databases --result-file=<file path>

# Example
shell> mysqldump -u enterprise -p enterprise --result-file=mydump.sql

De bovengenoemde opdrachten zullen de geselecteerde database en tabellen exporteren naar de bestandslocatie die in de opdracht is gespecificeerd.

Databaseback-up

In dit gedeelte wordt uitgelegd hoe u de databaseback-up kunt maken naar een andere database die voor back-updoeleinden wordt gebruikt met behulp van de Shell Pipes. We kunnen de database naar het lokale bestand exporteren en dit bestand vervolgens gebruiken om naar een andere database te importeren of rechtstreeks naar een andere database exporteren met behulp van shell-pipes.

De onderstaande opdracht kan worden gebruikt om de database rechtstreeks naar een andere database te exporteren. Zorg er ook voor dat u toegang hebt tot beide servers voordat u de opdracht uitvoert.

# Export database to another database - Same server
mysqldump -u enterprise -p enterprise | mysql enterprise_backup

# Export database to another database - Different server
mysqldump -u enterprise -p enterprise | mysql -h host.example.com -p 3306 enterprise

Dit is hoe we een database kunnen exporteren of back-uppen.


  1. sqlite:hoe voeg ik de totale tijd toe uu:mm:ss waarbij het kolomgegevenstype DATETIME is?

  2. Mysql 1050 Error Table bestaat al, terwijl dat in feite niet het geval is

  3. SQLAlchemy func.count op booleaanse kolom

  4. Hoe opmerkingen van een kolom te tonen met desc-bewerking