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.
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
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
.
pwd
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.
logout
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