User Tools

Site Tools


backup:mariadb

MariaDB backup initiated form another host (VM host, Backup storage mounted)

The script is an adapted version of the script used by the mariadb operator on kubernetes. It runs in a container. The container is created using the podman quadlet container configuration file /etc/containers/systemd/users/1000/mariadb-www-backup.container:

[Unit]
Description=Backup MariaDB on VM www
OnFailure=status_email_simar@%n.service
 
[Container]
Image=docker.io/mariadb:10.11
Environment=MARIADB_OPERATOR_USER=root
Environment=MARIADB_OPERATOR_PASSWORD=[...]
Environment=MARIADB_SERVER=192.168.1.[...]
Volume=$PATH_TO_BACKUP_STORAGE:/backup
Exec=/bin/bash -c "set -euo pipefail; \
echo 💾 Exporting env; \
export BACKUP_FILE=backup.$(date -u +'%%Y-%%m-%%dT%%H:%%M:%%SZ').sql.zstd; \
echo 💾 Writing target file: /backup/0-backup-target.txt; \
printf \"$${BACKUP_FILE}\" > /backup/0-backup-target.txt; \
echo 💾 Setting target file permissions; \
chmod 777 /backup/0-backup-target.txt; \
echo 💾 Taking backup: /backup/$(cat '/backup/0-backup-target.txt'); \
mariadb-dump --user=$${MARIADB_OPERATOR_USER} \
             --password=$${MARIADB_OPERATOR_PASSWORD} \
             --host=$${MARIADB_SERVER} --port=3306 \
             --single-transaction --events --routines --all-databases \
             --skip-add-locks --ignore-table=mysql.global_priv \
| zstd --no-progress -19 -T0 -f -o /backup/$(cat '/backup/0-backup-target.txt')"

/etc/systemd/users/status_email_xyz@.service

[Unit]
Description=status email for %i to xyz
 
[Service]
Type=oneshot
ExecStart=/usr/local/bin/systemd-email xyz@mou.servants.priv %i

/usr/local/bin/systemd-email

#!/bin/sh
 
/usr/sbin/sendmail -t <<ERRMAIL
To: $1
From: systemd <root@$(hostname --fqdn)>
Subject: $2
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
 
$(systemctl --user status --full "$2")
ERRMAIL
backup/mariadb.txt · Last modified: by admin