> ## Knowledge Base Index
> Fetch the complete knowledge base index at: https://wiki.leviia.com/sitemap.xml
> Use this file to discover available pages before exploring further.
> Pure-Markdown content can be obtained by appending a '.md' suffix to the content URLs listed in the sitemap (without the trailing slash).

# S3cmd: back up databases on your Leviia object storage space (S3 compatible)

# Prerequisites
* [Have created your identifier](https://wiki.leviia.com/en/article/create-object-storage-identifier-in-your-leviia-dashboard-1as7ljn/)
* [Have configured and installed s3cmd](https://wiki.leviia.com/en/article/s3cmd-configuration-and-use-hiwyiq/)


# Command table
| Step | PostgreSQL | MariaDB | MySQL |
|-----------------------|--------------------------------------------------|--------------------------------------------------|------------------------------------------------|
| Backup | `pg_dump -U <username> -d <database> > backup.sql` | `mysqldump -u <username> -p <database> > backup.sql` | `mysqldump -u <username> -p <database> > backup.sql` |
| Send to S3 | `s3cmd put backup.sql s3://<bucket-name>/backup.sql` | `s3cmd put backup.sql s3://<bucket-name>/backup.sql` | `s3cmd put backup.sql s3://<bucket-name>/backup.sql` |
| S3 recovery | `s3cmd get s3://<bucket-name>/backup.sql backup.sql` | `s3cmd get s3://<bucket-name>/backup.sql backup.sql` | `s3cmd get s3://<bucket-name>/backup.sql backup.sql` |
| `psql -U <username> -d <database> < backup.sql` | `mysql -u <username> -p <database> < backup.sql` | `mysql -u <username> -p <database> < backup.sql` |


# Script for automation
## PostgreSQL
* Backup and upload to S3
```bash
#!/bin/bash

# Variables to modify
username="your_username"
database="your_database"
bucket_name="your_bucket_name"

# Backup PostgreSQL database
pg_dump -U $username -d $database > backup.sql

# Send to S3
s3cmd put backup.sql s3://$bucket_name/backup.sql
```
* Retrieve from S3 and restore
```bash
#!/bin/bash

# Variables to modify
bucket_name="your_bucket_name"
username="your_username"
database="your_database"

# Recovery from S3
s3cmd get s3://$bucket_name/backup.sql /tmp/backup.sql

# Restore PostgreSQL database
psql -U $username -d $database < /tmp/backup.sql
```

## MariaDB
* Backup and upload to S3
```bash
#!/bin/bash

# Variables to modify
username="your_username"
database="your_database"
bucket_name="your_bucket_name"

# Backup MariaDB database
mysqldump -u $username -p $database > backup.sql

# Send to S3
s3cmd put backup.sql s3://$bucket_name/backup.sql

# Delete backup file
rm backup.sql
```
* Recover from S3 and restore
```bash
#!/bin/bash

# Variables to modify
bucket_name="your_bucket_name"
username="your_username"
database="your_database"

# Retrieve from S3
s3cmd get s3://$bucket_name/backup.sql /tmp/backup.sql

# Restore MariaDB database
mysql -u $username -p $database < /tmp/backup.sql
```
## MySQL
* Backup and upload to S3
```bash
#!/bin/bash

# Variables to modify
username="your_username"
database="your_database"
bucket_name="your_bucket_name"

# MySQL database backup
mysqldump -u $username -p $database > backup.sql

# Send to S3
s3cmd put backup.sql s3://$bucket_name/backup.sql
```
* Retrieve from S3 and restore
```bash
#!/bin/bash

# Variables to modify
bucket_name="your_bucket_name"
username="your_username"
database="your_database"

# Retrieve from S3
s3cmd get s3://$bucket_name/backup.sql /tmp/backup.sql

# Restore MySQL database
mysql -u $username -p $database < /tmp/backup.sql
```

