MySQL-Tabellen automatisch in separate Dateien sichern
Das integrierte Dienstprogramm mysqldump ermöglicht selektive Tabellen-Dumps, erfordert jedoch vorab festgelegte Tabellennamen . Für einen dynamischen Ansatz, der neue Tabellenzusätze verarbeitet, ist eine automatisierte Lösung erforderlich.
Eine solche Lösung ist ein Shell-Skript, das die Datenbank dynamisch nach allen Tabellennamen abfragt und jede Tabelle in eine separate komprimierte Datei speichert. Dadurch entfällt die Notwendigkeit einer manuellen Tabellennamenpflege im Dump-Skript.
Hier ist ein Beispielskript, das diese Funktionalität erreicht:
#!/bin/bash
# Descr: Dump MySQL table data into separate SQL files for a specified database.
# Usage: Run without args for usage info.
# Author: @Trutane
[ $# -lt 3 ] && echo "Usage: $(basename $0) <DB_HOST> <DB_USER> <DB_NAME> [<DIR>]" && exit 1
DB_host=$1
DB_user=$2
DB=$3
DIR=${4:-.}
[ -d $DIR ] || mkdir -p $DIR
echo -n "DB password: "
read -s DB_pass
tbl_count=0
for t in $(mysql -NBA -h $DB_host -u $DB_user -p$DB_pass -D $DB -e 'show tables')
do
echo "DUMPING TABLE: $DB.$t"
mysqldump -h $DB_host -u $DB_user -p$DB_pass $DB $t | gzip > "$DIR/$DB.$t.sql.gz"
tbl_count=$(( tbl_count 1 ))
done
echo "$tbl_count tables dumped from database '$DB' into dir=$DIR"
Dieses Skript fordert zur Eingabe des Datenbankkennworts auf, fragt die angegebene Datenbank nach Tabellennamen ab und speichert die Daten jeder Tabelle als SQL-Befehle in einzelne komprimierte Dateien im angegebenen Verzeichnis (oder standardmäßig im aktuellen Arbeitsverzeichnis).
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3