Files
docs/content/getting-started/mysql-backup.md
2026-07-28 07:20:32 -05:00

120 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: "Back Up and Restore a MySQL Database"
description: "How to export and import MySQL databases on Arcline shared hosting using phpMyAdmin and the command line."
section: getting-started
order: 3
---
# Back Up and Restore a MySQL Database
Regular database backups are the most important thing you can do to protect your site. A file backup without a database backup is useless for dynamic sites like WordPress.
---
## Export via phpMyAdmin (easiest)
phpMyAdmin is available in cPanel → **Databases → phpMyAdmin**.
1. In the left sidebar, click the database name you want to export.
2. Click the **Export** tab at the top.
3. Leave the method as **Quick** and format as **SQL**.
4. Click **Go**.
The browser will download a `.sql` file. Store it somewhere safe — not on the same server.
For large databases (over 50 MB), use the **Custom** export method and enable **Add DROP TABLE** so the import won't fail on existing tables.
---
## Export via command line (mysqldump)
SSH into your server and run:
```bash
mysqldump -u username -p database_name > backup_$(date +%Y%m%d).sql
```
You'll be prompted for the MySQL password. On cPanel servers, the MySQL username is prefixed with your cPanel username:
```bash
mysqldump -u cpanelusername_dbusername -p cpanelusername_dbname > backup.sql
```
Check your cPanel → **Databases → MySQL Databases** for the exact username and database name.
To compress the backup immediately:
```bash
mysqldump -u username -p database_name | gzip > backup_$(date +%Y%m%d).sql.gz
```
---
## Download your backup via SFTP
After exporting from the command line, download the `.sql` or `.sql.gz` file to your local machine using FileZilla or Cyberduck (see [Upload Files via SFTP](/getting-started/sftp/)).
The file will be in your home directory: `/home/username/backup.sql`.
---
## Import a database
### phpMyAdmin
1. In cPanel → phpMyAdmin, click the target database in the left sidebar.
2. Click the **Import** tab.
3. Click **Choose File** and select your `.sql` file.
4. Click **Go**.
phpMyAdmin has a file size limit (usually 50100 MB). For larger databases, use the command line.
### Command line import
```bash
mysql -u username -p database_name < backup.sql
```
For a compressed backup:
```bash
gunzip < backup.sql.gz | mysql -u username -p database_name
```
> Make sure the target database already exists in cPanel before importing. Create it in cPanel → **Databases → MySQL Databases** if needed, and make sure the database user is assigned to it with all privileges.
---
## Automate daily backups with cron
SSH in and open your crontab:
```bash
crontab -e
```
Add this line to run a backup every day at 2 AM:
```
0 2 * * * mysqldump -u cpanelusername_dbuser -pYOURPASSWORD cpanelusername_dbname | gzip > ~/backups/db_$(date +\%Y\%m\%d).sql.gz
```
A few notes:
- Replace `YOURPASSWORD` with your actual MySQL password (no space after `-p`)
- `~/backups/` must exist: `mkdir ~/backups`
- The `\%` escaping is required in crontab
Also set up a cron to delete backups older than 30 days to avoid filling up disk space:
```
30 2 * * * find ~/backups -name "*.sql.gz" -mtime +30 -delete
```
cPanel also has a built-in cron interface under **Advanced → Cron Jobs** if you prefer a GUI.
---
## cPanel full backup
For a complete backup of files **and** databases together, use cPanel → **Files → Backup Wizard**. Choose **Back Up Your Website** and download the full backup. These can be large — only practical for occasional snapshots, not daily automation.