Автоматический дамп таблиц MySQL в отдельные файлы
Встроенная утилита mysqldump позволяет создавать выборочные дампы таблиц, но требует заранее заданных имен таблиц . Для динамического подхода, который обрабатывает добавление новых таблиц, необходимо автоматизированное решение.
Одним из таких решений является сценарий оболочки, который динамически запрашивает базу данных на предмет всех имен таблиц и выгружает каждую таблицу в отдельный сжатый файл. Это устраняет необходимость ручного обслуживания имени таблицы в сценарии дампа.
Вот пример сценария, реализующего эту функциональность:
#!/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"
Этот сценарий запрашивает пароль базы данных, запрашивает имена таблиц в указанной базе данных и выгружает данные каждой таблицы в виде команд SQL в отдельные сжатые файлы в указанном каталоге (или в текущем рабочем каталоге по умолчанию).
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3