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."