Create a physical hot backup of a MariaDB database without interrupting operations.
Prerequisites
- MariaDB installed (version 10.1 or later).
- MariaBackup installed (
mariadb-backuppackage). - User with
RELOAD,BACKUP_ADMIN, andSELECTprivileges. - Terminal access.
- Sufficient disk space for backup.
Procedure
1.Open terminal
-
Create Backup Directory:
mkdir /backup/mariadb chmod 700 /backup/mariadb -
Run MariaBackup Command:
mariadb-backup --backup --user=[username] --password=[password] --target-dir=/backup/mariadb- Replace
[username]with your MariaDB username. - Replace
[password]with your password. --target-dir: Specifies backup location.
- Replace
-
Prepare Backup (make it consistent):
mariadb-backup --prepare --target-dir=/backup/mariadb -
Verify Backup: Check
/backup/mariadbfor data files and logs. -
Optionally, secure backup by moving it to a safe location and restrict file permissions (
chmod 600 backup.sql)
Optional Flags
--compress: Compress backup files.--incremental: Create an incremental backup (requires a full backup first).--stream=xbstream: Stream backup to another server or file.--use-memory=[MB]: Set memory for preparing backup (e.g.,1GB).
Notes
- Use for InnoDB and Aria tables; minimal locking for hot backups.
- Schedule with
cronfor automation (e.g.,0 2 * * *for daily at 2 AM). - Test restore process:
- Stop MariaDB:
systemctl stop mariadb. - Copy backup to data directory:
mariadb-backup --copy-back --target-dir=/backup/mariadb. - Fix permissions:
chown -R mysql:mysql /var/lib/mysql. - Start MariaDB:
systemctl start mariadb.
- Stop MariaDB:
- Monitor disk space and backup duration for large databases.