Updated May 17, 2023
Introduction to MySQL Dump
In case the system’s database is corrupted, crashed, or lost, we should be able to restore the data in the database. For this reason, MySQL provides us with a facility to dump the database using mysqldump utility. You can use this utility only if you have access to your database, you have been assigned the select privilege on the tables of that database, and the database is currently running. The utility creates a logical backup and generates a flat file containing SQL statements. Later on, you can execute these SQL statements to restore the database to the same state it was in when the backup file was created. This utility supports both single and multiple database backups. Additionally, the mysqldump utility has the capability to export the data in XML, CSV, or any other delimited text format.
We must dump our database frequently to have the updated backup of the database available to us. Whenever the backup is restored the database will be back to the state when that dump file was being created using mysqldump.
There are certain privileges on the tables, views, triggers, and transactions that we should have to use the mysqldump utility. It depends on the content that we are backing up. If we are backing up the database that contains tables then you should have select privilege, for views it is necessary to have SHOW VIEW privilege, for triggers TRIGGER privilege and if we use –the single-transaction option while dumping the database then the LOCK TABLES privilege should be there with us.
Similarly, while reloading or restoring the dumped data, we must possess the privilege such as CREATE, INSERT, and ALTER privileges that might be present in your dumped flat file that will be executed. The ALTER statements may be present in the dumped file sometimes when stored programs are dumped for encoded character preservations. To execute this ALTER command and modify the database collation, the user must have the ALTER privilege assigned to them.
Syntax of MySQL Dump
We can create the backup by dumping one or more of the selected tables or by dumping a set of one or more databases or we can dump the entire MySQL server that will contain all databases and tables in it along with other objects. You can utilize the mysqldump command to perform all three functionalities. However, the syntax for each of them varies, as outlined below:
Dumping one or more of the selected tables:
mysqldump [specified_options] name_of_database [name_of_table ...] > nameOfBackupFile.sql
Dumping one or more of the selected databases:
mysqldump [specified_options] --databases name_of_database ... > nameOfBackupFile.sql
Dumping Complete MySql Server
Syntax of dumping complete mysql server are:
mysqldump [specified_options] --all-databases > nameOfBackupFile.sql
Many options we can use to specify the behavior or values of some of the objects like -u for the username using which we will login -p to mention the password and other options related to defining the behavior of dumping. There are many different types of options that can be specified. We categorize them into the following types: –
- Connection Options
- Option-File Options
- DDL Options
- Debug Options
- Help Options
- Internationalization Options
- Replication Options
- Format Options
- Filtering Options
- Performance Options
- Transactional Options
To see a complete list of the options that are available and can be used, we can execute the following command –
mysqldump -u root p –help
that gives the following output displaying all the options and usage of the same:
as the list is too big, you can export it tho the file and then open the file to view the options and search for options that can be used in your context and use case. You can export the output to a file by executing the following command:
mysqldump -u root p --help > temp
And the temp file when opened on an editor looks like the following:
Examples of MySQL Dump
Let us consider one example, we will firstly query on my database server to display all databases –
Now, we will use educba database and check the tables present in it.
Let us now see all the records present in the developers table.
select * from developers;
Now, let us export the educba database using the mysqldump command –
mysqldump -u root -p --databases educba > backupOfEducba.sql
Note that we will have to exit from the MySQL command shell and then execute the above command. After, a file named backupOfEducba.sql file will be created on the same path. After opening the file, we will see that it contains all the commands of SQL that will recreate the educba database in case if we restore this file to a certain database. Here’s how that file will look like:
This is the dumped flat-file that was created after performing a dump of the ‘educba’ database. The file consists of commands to create the database, create a table, and insert queries to populate the table with records.
Restoring the Database
Let us now drop the database educba using the following command –
DROP DATABASE educba;
And now confirm the available databases by using the command –
We can see that the educba database does not exist in our database server of MySQL. Now, we will restore the educba database from the backup file backupOfEducba.sql that we created by dumping the educba database previously.
You can restore the database using the following command:
sudo mysql -u root -p < backupOfEducba.sql
Let us check the contents of the backup_educba database
select * from developers;
Upon restoration, it becomes evident that the database named ‘educba’ is reestablished, and it encompasses identical content as that of the ‘developer’ table, including all the records within.
We hope that this EDUCBA information on “MySQL Dump” was beneficial to you. You can view EDUCBA’s recommended articles for more information.