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.
This commit is contained in:
@@ -0,0 +1,36 @@
|
||||
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."
|
||||
Reference in New Issue
Block a user