Hero Image

MySQL Backup and Restore on OpenBSD 7.5

MySQL Backup and Restore on OpenBSD 7.5

Logical backup with mysqldump

Single database

mysqldump -u root -p appdb > /backups/appdb_$(date +%F).sql

All databases

mysqldump -u root -p --all-databases > /backups/all_$(date +%F).sql

Compressed

mysqldump -u root -p appdb | gzip > /backups/appdb_$(date +%F).sql.gz

Restore

mysql -u root -p appdb < /backups/appdb_2026-05-07.sql
# or compressed:
gunzip < /backups/appdb_2026-05-07.sql.gz | mysql -u root -p appdb

Physical backup with XtraBackup (Percona)

# Full backup
xtrabackup --backup --target-dir=/backups/full_$(date +%F)

# Prepare (apply logs)
xtrabackup --prepare --target-dir=/backups/full_2026-05-07

# Restore (MySQL must be stopped)
systemctl stop mysql
rsync -avrP /backups/full_2026-05-07/ /var/lib/mysql/
chown -R mysql:mysql /var/lib/mysql
systemctl start mysql

Automated daily script

#!/bin/bash
BACKUP_DIR="/backups/mysql"
RETENTION=7
mkdir -p "$BACKUP_DIR"
mysqldump -u root -p"$MYSQL_ROOT_PASS" --all-databases \
    | gzip > "$BACKUP_DIR/all_$(date +%F_%H%M).sql.gz"
find "$BACKUP_DIR" -name '*.sql.gz' -mtime +$RETENTION -delete

Store the password in /root/.my.cnf:

[client]
user     = root
password = YourRootPassword
chmod 600 /root/.my.cnf