Automated MySQL Backups and Restore on Debian/Ubuntu
In this tutorial, you will learn how to create automated MySQL backups on a Debian/Ubuntu server using a script and schedule them with cron jobs. The backups will be stored in a named folder, and we will also cover how to restore a backup. The backup files will be named based on the date and time.
What You Need
- A Debian / Ubuntu server with MySQL or MariaDB installed.
- SSH access to your server.
Step-by-Step Guide
Step 1: SSH Access to Your Server
Connect to your Debian / Ubuntu server via SSH using the following command, replacing username
and server-IP
with your own information:
1ssh username@server-IP
Enter your SSH password when prompted.
Step 2: Create a Backup Script
Create a backup script that will automatically back up your MySQL databases. Create a file named backup.sh
and add the following content:
1#!/bin/bash
2
3# Define the backup directory
4backup_dir="/path/to/backup/folder"
5
6# Define MySQL credentials
7mysql_user="root"
8mysql_password="your-password"
9
10# List of databases to back up
11databases=("mydb1" "mydb2")
12
13# Current date and time
14current_datetime=$(date +"%Y%m%d%H%M%S")
15
16# Loop through databases and create backups
17for db in "${databases[@]}"; do
18 mysqldump -u "$mysql_user" -p"$mysql_password" "$db" > "$backup_dir/$db-$current_datetime.sql"
19done
20
21# Compress the backup files
22tar -czvf "$backup_dir/backups-$current_datetime.tar.gz" -C "$backup_dir" .
23
24# Remove individual SQL backup files
25rm -f "$backup_dir"/*.sql
Make sure to replace /path/to/backup/folder
, your-password
, and the database names in the databases
array with your actual information.
Step 3: Make the Script Executable
Make the script executable with the following command:
1chmod +x backup.sh
Step 4: Schedule Backups with Cron Jobs
Now, let's create cron jobs to schedule regular backups. Use the crontab -e
command to edit your cron jobs:
1crontab -e
Add the following lines to create two example cron jobs. These examples schedule daily and weekly backups:
1# Daily backup at midnight (00:00)
20 0 * * * /path/to/backup.sh
3
4# Weekly backup on Sunday at 2:00 AM
50 2 * * 0 /path/to/backup.sh
Replace /path/to/backup.sh
with the actual path to your backup script.
Step 5: Restore MySQL Backup
To restore a MySQL backup, navigate to the folder where your backup is stored and use the following command:
1mysql -u root -p mydb < mydb-YYYYMMDDHHMMSS.sql
Replace mydb-YYYYMMDDHHMMSS.sql
with the actual filename of your backup. You will be prompted for the MySQL password.
Step 6: Summary
You have successfully set up automated MySQL backups using a script and scheduled them with cron jobs. Remember to customize the script with your database names, paths, and credentials. Automated backups help protect your data and ensure you can quickly restore it when needed.
Conclusion
Regular automated backups are crucial for data protection and disaster recovery. This tutorial enables you to create and schedule MySQL backups with ease. Adjust the cron job schedules according to your backup frequency requirements.