как сказал LukeR, опция --no-data для mysqldump будет делать то, что вы хотите.
Чтобы добавить к этому, вот сценарий резервного копирования, который я написал, который создает дамп всех баз данных mysql в простые текстовые файлы и создает отдельные файлы дампов для схемы и данных таблиц каждой базы данных (довольно часто требуется восстановить или создать таблицы на другом сервере mysql БЕЗ данные, и это гораздо проще сделать, когда у вас уже есть небольшой файл с помощью команд CREATE TABLE / CREATE INDEX и т. д.)
#! / Бен / Баш
# backup-mysql.sh
#
# Крейг Сандерс <cas@taz.net.au>
# этот скрипт находится в свободном доступе. делай что хочешь с этим.
MyUser = "USERNAME"
MYPWD = "ПАРОЛЬ"
ARGS = "- одиночная транзакция --flush-logs --complete-insert"
DATABASES = $ (mysql -D mysql --skip-column-names -B -e 'показать базы данных;' | egrep -v 'information_schema');
BACKUPDIR = / вар / резервное копирование / MySQL
ГОД = $ (дата + "% Y")
МЕСЯЦ = $ (дата + "% m")
ДЕНЬ = $ (дата + "% d")
ДАТА = "$ $ МЕСЯЦ ГОД-/ $ $ месяц- ГОД-$ DAY"
mkdir -p $ BACKUPDIR / $ DATE
CD $ BACKUPDIR / $ DATE
для меня в $ DATABASES; делать
echo -n "резервное копирование $ i: схема ..."
mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql
echo -n "data ..."
mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql
echo -n "Сжатие ..."
gzip -9fq $ i.schema.sql $ i.data.sql
эхо "сделано".
сделано
# удалить файлы резервных копий старше 30 дней
OLD = $ (найти $ BACKUPDIR -типа d -mtime +30)
if [-n "$ OLD"]; тогда
повторить удаление старых файлов резервных копий: $ OLD
echo $ OLD | xargs rm -rfv
фи