Ich bin auf diese Frage gestoßen und wollte die Antworten der anderen mit unserem funktionierenden Beispiel ergänzen:
Dadurch wird das Schema in einer eigenen Datei gesichert, dann jede Datenbanktabelle in einer eigenen Datei.
Dank des Datumsformats können Sie das Programm so oft ausführen, wie es der Speicherplatz auf Ihrer Festplatte zulässt.
DATE=`date '+%Y-%m-%d-%H'`
BACKUP_DIR=backups/
DATABASE_NAME=database_name
mysqldump --column-statistics=0 --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --no-data --databases ${DATABASE_NAME} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}--schema.sql.gz
for table in $(mysql --user=fake --password=secure --host=10.0.0.1 -AN -e "SHOW TABLES FROM ${DATABASE_NAME};");
do
echo ""
echo ""
echo "mysqldump --column-statistics=0 --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz"
mysqldump --column-statistics=0 --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz
done
Wir lassen dies als Bash-Skript stündlich laufen und haben tatsächlich stündliche Überprüfungen und sichern nur einige Tabellen während des Tages und dann alle Tabellen in der Nacht.
um etwas Platz auf den Laufwerken zu erhalten, führt das Skript dies auch aus, um Sicherungen zu entfernen, die älter als X Tage sind.
# HOW MANY DAYS SHOULD WE KEEP
DAYS_TO_KEEP=25
DAYSAGO=$(date --date="${DAYS_TO_KEEP} days ago" +"%Y-%m-%d-%H")
echo $DAYSAGO
rm -Rf ${BACKUP_DIR}${DAYSAGO}-*
echo "rm -Rf ${BACKUP_DIR}${DAYSAGO}-*"