YouTube Icon

Code Playground.

How to Back Up and Restore MySQL Databases with Mysqldump


How to Back Up and Restore MySQL Databases with Mysqldump

This instructional exercise discloses how to reinforcement and reestablish MySQL or MariaDB information bases from the order line utilizing the mysqldump utility. 

The reinforcement documents made by the mysqldump utility are fundamentally a bunch of SQL articulations that can be utilized to reproduce the first information base. The mysqldump order can likewise create records in CSV and XML design. 

You can likewise utilize the mysqldump utility to move your MySQL information base to another MySQL worker. 

In the event that you don't reinforcement your information bases, a product bug or a hard-drive disappointment could be tragic. To help save you loads of time and dissatisfaction, it is unequivocally suggested that you avoid potential risk of consistently backing up your MySQL information bases. 

Mysqldump Command Syntax

Prior to going into how to utilize the mysqldump order, how about we start by checking on the essential grammar. 

The mysqldump utility articulations take the accompanying structure: 

mysqldump [options] > file.sql

alternatives - The mysqldump choices 

file.sql - The landfill (reinforcement) document 

To utilize the mysqldump order the MySQL worker should be open and running. 

Backup a Single MySQL Database

The most widely recognized use instance of the mysqldump device is to reinforcement a solitary information base. 

For instance, to make a reinforcement of the information base named database_name utilizing the client root and save it to a record named database_name.sql you would run the accompanying order: 

mysqldump -u root -p database_name > database_name.sql

You will be incited to enter the root secret key. After effective verification, the landfill cycle will begin. Contingent upon the information base size, the cycle can take some time. 

On the off chance that you are signed in as the very client that you are utilizing to play out the fare and that the client doesn't need a secret phrase, you can preclude the - u and - p alternatives: 

mysqldump database_name > database_name.sql

Backup Multiple MySQL Databases

To reinforcement various MySQL information bases with one order you need to utilize the - information base alternative followed by the rundown of data sets you need to reinforcement. Every information base name should be isolated by space. 

mysqldump -u root -p --databases database_name_a database_name_b > databases_a_b.sql

The order above will make a dump document containing the two information bases. 

Backup All MySQL Databases

Utilize the - all-information bases alternative to back up all the MySQL information bases: 

mysqldump -u root -p --all-databases > all_databases.sql

Same similarly as with the past model the order above will make a solitary dump document containing all the information bases. 

Backup all MySQL databases to separate files

The mysqldump utility doesn't give a choice to reinforcement all information bases to isolate records yet we effectively accomplish that with a basic slam FOR circle : 

for DB in $(mysql -e 'show databases' -s --skip-column-names); do
    mysqldump $DB > "$DB.sql";

The order above will make a different dump record for every information base utilizing the data set name as the filename. 

Create a Compressed MySQL Database Backup

On the off chance that the information base size is enormous it is a smart thought to pack the yield. To do that essentially pipe the yield to the gzip utility, and divert it to a record as demonstrated as follows: 

mysqldump database_name | gzip > database_name.sql.gz

Create a Backup with Timestamp

In the event that you need to keep more than one reinforcement in a similar area, at that point you can add the current date to the reinforcement filename: 

mysqldump  database_name > database_name-$(date +%Y%m%d).sql

The order above will make a document with the accompanying organization database_name-20180617.sql 

Restoring a MySQL dump

You can reestablish a MySQL dump utilizing the mysql apparatus. The order general grammar is as per the following: 

mysql  database_name < file.sql

Much of the time you'll have to make an information base to bring into. In the event that the information base as of now exists, first you need to erase it. 

In the accompanying model the primary order will make an information base named database_name and afterward it will import the landfill database_name.sql into it: 

mysql -u root -p -e "create database database_name";
mysql -u root -p database_name < database_name.sql

Restore a Single MySQL Database from a Full MySQL Dump

In the event that you upheld up the entirety of your information bases utilizing the - all-data sets choice and you need to reestablish a solitary data set from a reinforcement document which contains various data sets utilize the - one-information base choice as demonstrated as follows: 

mysql --one-database database_name < all_databases.sql

Export and Import a MySQL Database in One Command

Rather than making a dump record from one information base and afterward import the reinforcement into another MySQL data set you can utilize the accompanying joke: 

mysqldump -u root -p database_name | mysql -h remote_host -u root -p remote_database_name

The order above will pipe the yield to a mysql customer on the far off host and it will bring it into an information base named remote_database_name. Prior to running the order, ensure the information base as of now exists on the distant worker. 

Automate Backups with Cron

Computerizing the way toward support up the information bases is as straightforward as making a cron work what will run the mysqldump order at indicated time. 

To set up computerized reinforcements of a MySQL information base utilizing cronjob, follow the means underneath: 

Make a document named .my.cnf in your client home index: 

sudo nano ~/.my.cnf

Reorder the accompanying content into the .my.cnf document. 

user = dbuser
password = dbpasswd

Remember to supplant dbuser and dbpasswdwith the information base client and client's secret word. 

Confine consents of the accreditations record with the goal that solitary your client approaches it: 

chmod 600 ~/.my.cnf

Make a registry to store the reinforcements: 

mkdir ~/db_backups

Open your client crontab record: 

crontab -e

Add the accompanying cron work that will make a reinforcement of an information base name mydb consistently at 3am: 

0 3 * * * /usr/bin/mysqldump -u dbuser mydb > /home/username/db_backups/mydb-$(date +\%Y\%m\%d).sql

Remember to supplant username with your genuine client name. We're likewise getting away from the percent-signs (%), on the grounds that they have uncommon significance in crontab. 

You can likewise make another cronjob to erase any reinforcements more seasoned than 30 days: 

find /path/to/backups -type f -name "*.sql" -mtime +30 -delete

Obviously, you need to change the order as per your reinforcement area and document names. To study the discover order check our How to Find Files in Linux Using the Command Line manage. 


This instructional exercise covers just the essentials, however it should be a decent beginning for any individual who needs to figure out how to make and reestablish MySQL information bases from the order line utilizing the mysqldump utility. 

On the off chance that you need to study working with MySQL from the order line, investigate our How to oversee MySQL client records and information bases control. 

You can likewise check the instructional exercise about how to reset a MySQL root secret key in the event that you have failed to remember it. 

In the event that you have any inquiries or input, don't hesitate to leave a remark.