This shows you the differences between two versions of the page.
| Both sides previous revision Previous revision | |||
|
linux:mysql_bkp [2022/01/14 14:41] manu [MySQL backup] |
linux:mysql_bkp [2022/01/14 14:43] (current) manu |
||
|---|---|---|---|
| Line 2: | Line 2: | ||
| ===== script dump ===== | ===== script dump ===== | ||
| + | |||
| + | ==== script 1 ==== | ||
| + | |||
| + | <code> | ||
| + | #!/bin/bash | ||
| + | # Mettre un date au nom du fichier | ||
| + | DATE=$(date +"%Y%m%d") | ||
| + | |||
| + | # Dossier de sauvegarde | ||
| + | BACKUP_DIR="/backup/mysqldump" | ||
| + | |||
| + | # MySQL username/password | ||
| + | MYSQL_USER="root" | ||
| + | MYSQL_PASSWORD="YOURSECUREPASSWORD" | ||
| + | |||
| + | # Commandes MySQL nécessaires pour faire le backup | ||
| + | MYSQL=/usr/bin/mysql | ||
| + | MYSQLDUMP=/usr/bin/mysqldump | ||
| + | |||
| + | # Bases de données MySQL que vous voulez ignorer | ||
| + | SKIPDATABASES="information_schema|performance_schema|mysql|database1|database2" | ||
| + | |||
| + | # Rétention des données (les jours pour garder les backups) | ||
| + | RETENTION=5 | ||
| + | |||
| + | # Création d'un nouveau dossier avec la date du jour | ||
| + | mkdir -p $BACKUP_DIR/$DATE | ||
| + | |||
| + | # Donne la liste de toutes les bases des données. | ||
| + | databases=`$MYSQL -u$MYSQL_USER -p$MYSQL_PASSWORD -e "SHOW DATABASES;" | grep -Ev "($SKIPDATABASES)"` | ||
| + | |||
| + | # Copier les bases des données distinctes et fait un fichier gzip pour chaque database. | ||
| + | for db in $databases; do | ||
| + | echo $db | ||
| + | $MYSQLDUMP --force --opt --user=$MYSQL_USER -p$MYSQL_PASSWORD --skip-lock-tables --events --databases $db | gzip > "$BACKUP_DIR/$DATE/$db.sql.gz" | ||
| + | done | ||
| + | |||
| + | # Efface les fichiers plus vieux que votre date de RETENTION | ||
| + | find $BACKUP_DIR/* -mtime +$RETENTION -delete | ||
| + | </code> | ||
| + | |||
| + | ==== script 2 ==== | ||
| <code> | <code> | ||