como LukeR disse, a opção --no-data no mysqldump fará o que você deseja.
para adicionar a isso, aqui está um script de backup que escrevi que despeja todos os bancos de dados mysql em arquivos de texto sem formatação e cria arquivos despejos separados para o esquema e os dados de cada banco de dados (é bastante comum querer restaurar ou criar as tabelas em outro servidor mysql SEM os dados, e isso é muito mais fácil quando você já possui um arquivo pequeno apenas com os comandos CREATE TABLE / CREATE INDEX etc)
#! / bin / bash
# backup-mysql.sh
#
# Craig Sanders <cas@taz.net.au>
# este script é de domínio público. Faz o que quiseres com isso.
MYUSER = "USERNAME"
MYPWD = "SENHA"
ARGS = "- transação única - registros de descarga - inserção completa"
DATABASES = $ (mysql -D mysql --skip-column-names -B -e 'mostra bancos de dados;' | egrep -v 'information_schema');
BACKUPDIR = / var / backups / mysql
ANO = $ (data + "% Y")
MÊS = $ (data + "% m")
DIA = $ (data + "% d")
DATA = "$ ANO- $ MÊS / $ ANO- $ MÊS- $ DIA"
mkdir -p $ BACKUPDIR / $ DATE
cd $ BACKUPDIR / $ DATE
para i em $ DATABASES; Faz
echo -n "fazendo backup de $ i: esquema ..."
mysqldump $ ARGS --no-data -u $ MYUSER -p $ MYPWD $ i> $ i.schema.sql
eco -n "dados ..."
O mysqldump $ ARGS --skip-opt --no-create-db --no-create-info -u $ MYUSER -p $ MYPWD $ i> $ i.data.sql
echo -n "compactando ..."
gzip -9fq $ i.schema.sql $ i.data.sql
eco "feito".
feito
# excluir arquivos de backup com mais de 30 dias
OLD = $ (encontre $ BACKUPDIR -tipo d -mtime +30)
if [-n "$ OLD"]; então
eco excluindo arquivos de backup antigos: $ OLD
eco $ OLD | xargs rm -rfv
fi