Files
backup-agent/old/maria.sh
T
kbe d6f30c506e chore: initial import of backup scripts and design docs
Existing borg-backup.sh/dump_db.sh, old/ reference scripts, and the
brainstormed design spec for restore tooling + runbook.
2026-07-25 18:51:38 +02:00

37 lines
1.3 KiB
Bash

root@chaudron:/home/srv/files/content/mariadb# cat dump_db.sh
#!/bin/bash
# Load configuration from environment variables
MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-MySuperDatabase}
DUMP_DIR=${DUMP_DIR:-dump}
DOCKER_CONTAINER_NAME=${DOCKER_CONTAINER_NAME:-mariadb}
# Check dependencies
if ! command -v docker &>/dev/null; then
echo "Docker is not installed or not in the PATH"
exit 1
fi
if ! docker ps -q -f name=$DOCKER_CONTAINER_NAME; then
echo "Docker container '$DOCKER_CONTAINER_NAME' is not running"
exit 1
fi
# Create dump directory if it doesn't exist
mkdir -p "$(dirname "$0")/$DUMP_DIR"
# Delete old dump files
rm -f "$(dirname "$0")/$DUMP_DIR"/*.sql
# Get list of databases and exclude system databases
databases=$(docker exec -it $DOCKER_CONTAINER_NAME mysql -u root -p"$MYSQL_ROOT_PASSWORD" -e "SHOW DATABASES;" --skip-column-names -s | grep -Ev "(information_schema|mysql|performance_schema|sys)" | tr -d '\r')
# Iterate through databases and dump them individually
for db in $databases; do
echo "Dumping database: $db"
docker exec -i $DOCKER_CONTAINER_NAME mysqldump -u root -p"$MYSQL_ROOT_PASSWORD" "$db" >"$(dirname "$0")/$DUMP_DIR/$db.sql"
echo "Dumped database: $db"
done
echo "All non-system databases dumped to individual files in '$DUMP_DIR' directory."