Skip to main content

MariaDB Backup Compression

Database dumps are text-heavy and compress extremely well. The best practice is to stream the dump directly into a compressor so you avoid writing an uncompressed intermediate file.

Quick Summary
  • Stream dump to compressed file: mariadb-dump | zstd -o dump.sql.zst.
  • Verify with zstd -t / gzip -t.
  • Restore by streaming decompression into mysql.

Choose a compression tool

Common choices:

  • gzip: widely available, good compatibility.
  • zstd: usually faster, good compression.

Streamed dump + compression

mariadb-dump-to-gzip.sh
mariadb-dump --single-transaction --quick wordpress \
| gzip -9 > "/backups/wp-db-$(date +%F).sql.gz"
mariadb-dump-to-zstd.sh
mariadb-dump --single-transaction --quick wordpress \
| zstd -3 -T0 -o "/backups/wp-db-$(date +%F).sql.zst"

If mariadb-dump is not present on your system, use mysqldump.

fallback-to-mysqldump.sh
mysqldump --single-transaction --quick wordpress \
| zstd -3 -T0 -o "/backups/wp-db-$(date +%F).sql.zst"

Verification

verify-compressed-db-dump.sh
gzip -t "/backups/wp-db-$(date +%F).sql.gz" 2>/dev/null || true
zstd -t "/backups/wp-db-$(date +%F).sql.zst" 2>/dev/null || true

ls -lh /backups/wp-db-*.sql.* | tail -n 10

Restore

restore-db-from-gzip.sh
gunzip -c /backups/wp-db-2026-03-01.sql.gz | mysql wordpress_restore
restore-db-from-zstd.sh
zstd -dc /backups/wp-db-2026-03-01.sql.zst | mysql wordpress_restore
warning

Importing a dump overwrites data in the target database. Restore into a staging database first.

Next steps

  • Automation patterns: opt/docker-data/apps/docusaurus/site/docs/server/linux-server/10-backup-disaster-recovery/automating-db-dump-daily.mdx.