DOCS-1: Init document work
This commit is contained in:
119
content/getting-started/mysql-backup.md
Normal file
119
content/getting-started/mysql-backup.md
Normal file
@@ -0,0 +1,119 @@
|
||||
---
|
||||
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 50–100 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.
|
||||
Reference in New Issue
Block a user