Я использую MySQL Administrator для создания резервной копии базы данных. Я могу создать резервную копию всей базы данных со всеми ее таблицами. Есть несколько таблиц, размер которых очень велик, поэтому мне интересно, могу ли я создать резервную копию только структуры таблиц (только их элементов), но не их данных.
Использовать --no-data
переключитесь с mysqldump, чтобы он не сбрасывал данные, а только структуру таблицы.
Это выведет оператор CREATE TABLE для таблиц.
Что-то вроде этого
mysqldump --no-data -h localhost -u root -ppassword mydatabase > mydatabase_backup.sql
Чтобы указать конкретные таблицы, введите их после имени базы данных.
mysqldump --no-data -h localhost -u root -ppassword mydatabase table1 table2 > mydatabase_backup.sql
http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html#option_mysqldump_no-data
как сказал LukeR, параметр --no-data для mysqldump сделает то, что вы хотите.
чтобы добавить к этому, вот сценарий резервного копирования, который я написал, который выгружает все базы данных mysql в простые текстовые файлы и создает отдельные файлы дампа для каждой схемы таблицы и данных базы данных (довольно часто возникает необходимость восстановить или создать таблицы на другом сервере mysql БЕЗ данные, и это намного проще сделать, когда у вас уже есть небольшой файл с командами CREATE TABLE / CREATE INDEX и т. д.)
#! /bin/bash # backup-mysql.sh # # Craig Sanders <cas@taz.net.au> # this script is in the public domain. do whatever you want with it. MYUSER="USERNAME" MYPWD="PASSWD" ARGS="--single-transaction --flush-logs --complete-insert" DATABASES=$( mysql -D mysql --skip-column-names -B -e 'show databases;' | egrep -v 'information_schema' ); BACKUPDIR=/var/backups/mysql YEAR=$(date +"%Y") MONTH=$(date +"%m") DAY=$(date +"%d") DATE="$YEAR-$MONTH/$YEAR-$MONTH-$DAY" mkdir -p $BACKUPDIR/$DATE cd $BACKUPDIR/$DATE for i in $DATABASES ; do echo -n "backing up $i: schema..." 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 "compressing..." gzip -9fq $i.schema.sql $i.data.sql echo "done." done # delete backup files older than 30 days OLD=$(find $BACKUPDIR -type d -mtime +30) if [ -n "$OLD" ] ; then echo deleting old backup files: $OLD echo $OLD | xargs rm -rfv fi
Вы также можете сделать это вручную через mysql
интерфейс командной строки, выполнив DESCRIBE <tablename>
и скопируйте / вставьте результаты.