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