# create the percona-server container
podman volume create percona-apiprejobs-data
podman volume create percona-apiprejobs-logs
podman run --replace --name percona-apiprejobs -p 3306:3306 -v percona-apiprejobs-data:/var/lib/mysql -v percona-apiprejobs-logs:/var/log/mysql -e MYSQL_ROOT_PASSWORD=zzzzzzzz -e MYSQL_USER=user -e MYSQL_PASSWORD=xxxxxxx -d percona/percona-server:8.0 --bind-address=0.0.0.0
You will need a user with some special permissions:
CREATE USER 'backupuser'@'%' IDENTIFIED BY WITH mysql_native_password 'strong_password';
GRANT RELOAD, PROCESS, LOCK TABLES, BACKUP_ADMIN, REPLICATION CLIENT ON *.* TO 'backupuser'@'%';
GRANT SELECT ON performance_schema.replication_group_members TO 'backupuser'@'%';
GRANT SELECT ON performance_schema.keyring_component_status TO 'backupuser'@'%';
GRANT SELECT ON performance_schema.log_status TO 'backupuser'@'%';
FLUSH PRIVILEGES;After that:
# create a backup
podman run --rm -it --volumes-from percona-apiprejobs -v percona-apiprejobs-backup:/backup percona/percona-xtrabackup:8.0.35-33 bash -c 'xtrabackup --backup --compress --stream=xbstream --user=backupuser --password=xxxxxxx --datadir=/var/lib/mysql --target-dir=/backup > /backup/$(date +"%Y-%m-%d-%H-%M")-backup-full.xbstream'
cp /home/<user>/.local/share/containers/storage/volumes/percona-apiprejobs-backup/_data/$(date +"%Y-%m-%d-%H-%M")-backup-full.xbstream /home/<user>/percona-backup/$(date +"%Y-%m-%d-%H-%M")-backup-full.xbstream
# prepare the backup
xbstream -x --decompress < $(date +"%Y-%m-%d-%H-%M")-backup-full.xbstream
xtrabackup --prepare --target-dir=/home/<user>/percona-backup/
# restore the backup
sudo xtrabackup -u root -p --move-back --target-dir=/home/<user>/percona-backup/ --datadir=/home/<user>/.local/share/containers/storage/volumes/percona-apiprejobs-data/_data/
sudo chown -R 101000:101000 /home/<user>/.local/share/containers/storage/volumes/percona-apiprejobs-data/_data/*
podman run --replace --restart=always --name percona-apiprejobs -p 3306:3306 -v percona-apiprejobs-data:/var/lib/mysql -v percona-apiprejobs-logs:/var/log/mysql -d percona/percona-server:8.0 --bind-address=0.0.0.0
# -----------------------------------------------
# NOTE:
# if container doesn't stop
podman inspect percona-apiprejobs | grep Pid
kill -9 <PID>
podman container rm percona-apiprejobs -f