• [^] # Re: mysqldump

    Posté par . En réponse au message Sauvegarde mariadb dans docker. Évalué à 1. Dernière modification le 14 mai 2021 à 02:49.

    Voici une alternative plus globale mais plus sale, au cas où elle pourrait être utile :

    #!/bin/sh
    BASE_DIR=/var/backups/mysql
    # On essaie de diminuer la priorité de la chose
    # Aucune importance si les utilitaires ne sont pas dispos
    renice 15 -p $$ >/dev/null 2>&1
    ionice -c 3 -p $$ >/dev/null 2>&1
    # Arrêt à la moindre erreur non-catchée
    set -e
    docker ps --format "{{.ID}} {{.Names}}" | egrep "(mysql|mariadb)" | while read CONTAINER_ID CONTAINER_NAMES; do
     # Note : CONTAINER_NAMES peut contenir plusieurs noms qui sont séparés par des vigules
     # et ces noms peuvent contenir des '/'
     BACKUP_BASENAME=bdd_"$( printf $CONTAINER_NAMES | tr -c '[:alnum:]' '-' )"
     BACKUP_FILENAME="$BACKUP_BASENAME"_"$CONTAINER_ID"_"$( date +\%Y\%m\%d-\%H\%M\%S )".sql.gz
     docker exec "$CONTAINER_ID" bash -c 'mysqldump -u root -p$MYSQL_ROOT_PASSWORD --add-drop-table --all-databases' | gzip > "$BASE_DIR/$BACKUP_FILENAME"
     # Suppression des vieux backups
     find "$BASE_DIR" -maxdepth 1 -name "$BACKUP_BASENAME*" -mtime +10 -delete
    done