How to backup a MySQL database using mysqldump, SSH and SCP

Learn how to backup a MySQL database using mysqldump and SSH and download the dump file to your local machine using SCP.

How to backup a MySQL database using mysqldump, SSH and SCP
Picture by Sergei Starostin, Pexels.
3 minutes to read

If you need to create a backup of a remote MySQL database, you can use the mysqldump command. The mysqldump application is known as a client utility and installed alongside MySQL itself.

When executed, mysqldump will create a dump file of the database that includes all the data and the structure of the database in INSERT statements that you can run on your local machine to create a local copy of the remote database.

In this tutorial, I’ll work through a simple example of using mysqldump to create a local copy of a remote database. I’ll be connecting to a remote server running Ubuntu Server via SSH, running the mysqldump command to backup the database to a file, and then downloading that file to my local machine using SCP.

1. Login to the remote server using SSH

First, open a terminal and use SSH to login to the remote server hosting your MySQL database. You will need to enter your remote server username before the server IP address using the @ symbol. After running the command enter your password to login.

ssh matt@123.456.789.123

2. Use mysqldump to create a backup of your MySQL database

Next, on the remote server, run the mysqldump command to create a backup of your MySQL database. Modify the command below and replace your_mysql_username with your MySQL username, and replace your_database_name with the name of your database. Then run the command.

It may take a few minutes depending on the size of your database. The mysqldump command will export the entire MySQL database and write the contents to a .sql file that you can download. This can then be used to create a new instance of your MySQL database on another server.

mysqldump -u your_mysql_username --password='xxxxxxxxxxx' your_database_name > your_database_name.sql

For the next step you’ll need the full path to the backup file, so enter pwd to obtain your present working directory. For example, mine is /home/matt.


3. Logout of the SSH connection

Logout of the SSH connection to your remote machine and return to the shell on your local machine by entering logout. This will return you to the shell on your local machine.


4. Use SCP to download the SQL backup to your local machine

Finally, on your local machine, we’ll use the SCP or secure copy application to download the MySQL backup file from the server via SSH.

In the command below we’re starting scp and creating an SSH connection for the user matt on the IP address 123.456.789.123.

Once logged in, SCP will look for the file at /home/matt/your_database_name.sql on the remote server and download it to /home/work/backups/your_database_name.sql on the local machine. It will give you a useful progress bar, so you can track how much of the database has been downloaded.

scp matt@123.456.789.123:/home/matt/your_database_name.sql /home/work/backups/your_database_name.sql

Creating a local copy of your MySQL database is a good idea for several reasons. Firstly, it keeps your data backed up. Secondly, it allows you to create your own development environment where you can safely run complex MySQL queries against your database without the risk of slowing down your production database.

To create a local development environment for data science projects running on MySQL databases my preferred approach is to run MySQL in a Docker container. This is a great way to create a development environment for data science projects that can be run on a local machine without the need to install a full-blown server.

Matt Clarke, Saturday, December 04, 2021

Matt Clarke Matt is an Ecommerce and Marketing Director who uses data science to help in his work. Matt has a Master's degree in Internet Retailing (plus two other Master's degrees in different fields) and specialises in the technical side of ecommerce and marketing.