Как я могу создать резервную копию структуры таблицы, но НЕ ее данных в MySQL

Anandtech имел действительно, действительно большая статья о SSD, сравнительное тестирование, и для чего они хороши. Они использовали IOmeter для выполнения их сравнительных тестов и дали некоторые подсказки относительно того, в каких видах проблем они работали к.

http://www.anandtech.com/storage/showdoc.aspx?i=3531

страница 12 описывает, как они моделировали 'используемый' диск, который ковался на много. Они сделали это для сравнительного тестирования, сколько производительности ухудшится по жизни диска.

19
задан 8 November 2014 в 11:53
3 ответа

Используйте --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

http://dev.mysql.com/doc/refman/5.1/en/mysqldump.html

39
ответ дан 2 December 2019 в 20:15
  • 1
    +1 озирается вокруг права. –  David Pashley 15 August 2009 в 00:07
  • 2
    Большое спасибо LukeR. Я мог управляемый с этим. Во время записи i didn' t даже знают что-либо о mysqldump, но я мог решить проблему с - переключатель без данных. Затем я также нашел в MySQL Administrator " СОЗДАЙТЕ SCRIPT" из той таблицы, таким образом, я мог иметь, разрешают эту проблему с этой альтернативой также. –   18 August 2009 в 17:00

как LukeR заявил, - опция без данных к 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
3
ответ дан 2 December 2019 в 20:15
  • 1
    Большое спасибо Craig для Вашего ответа! Я просто забираю ответ LukeR, поскольку это было первым. Спасибо за сценарий, it' s хорошая ссылка. –   18 August 2009 в 16:49

Можно также вручную сделать это через mysql интерфейс командной строки путем выполнения a DESCRIBE <tablename> и копируйте/вставляйте результаты.

0
ответ дан 2 December 2019 в 20:15
  • 1
    ОПИШИТЕ won' t дают Вам что-то, что можно скопировать и вставить. ПОКАЖИТЕ, что CREATE TABLE будет. –  David Pashley 15 August 2009 в 06:31
  • 2
    it' s не дамп того, каков оператор CREATE должен был бы быть, но он делает выставочные типы столбца и отношения –  warren 15 August 2009 в 12:59

Теги

Похожие вопросы