Как сделать резервную копию одной таблицы в базе данных MySQL?

По умолчанию, mysqldump берет резервную копию всей базы данных. Мне нужно сделать резервную копию одной таблицы в MySQL. Является ли это возможным? Как мне его восстановить?

10 ответов

Решение

Дамп и восстановление одной таблицы из.sql

свалка

mysqldump db_name table_name > table_name.sql

Сброс из удаленной базы данных

mysqldump -u <db_username> -h <db_host> -p db_name table_name > table_name.sql

Для дальнейшего использования:

http://www.abbeyworkshop.com/howto/lamp/MySQL_Export_Backup/index.html

Восстановить

mysql -u <user_name> -p db_name
mysql> source <full_path>/table_name.sql

или в одну строку

mysql -u username -p db_name < /path/to/table_name.sql


Дамп и восстановление одной таблицы из сжатого (.sql.gz) формата

Предоставлено: John McGrath

свалка

mysqldump db_name table_name | gzip > table_name.sql.gz

Восстановить

gunzip < table_name.sql.gz | mysql -u username -p db_name

mysqldump может принимать параметр tbl_name, чтобы он только создавал резервные копии указанных таблиц.

mysqldump -u -p yourdb yourtable > c:\backups\backup.sql

Пытаться

for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do 
mysqldump -u... -p.... NameDataBase $line > $line.sql ; 
done
  • Таблицы активных имен $line;)

Мы можем взять дамп mysql любой конкретной таблицы с любым заданным условием, как показано ниже

mysqldump -uusername -p -hhost databasename tablename --skip-lock-tables

Если мы хотим добавить конкретное условие where в таблицу, мы можем использовать следующую команду

mysqldump -uusername -p -hhost databasename tablename --where="date=20140501" --skip-lock-tables

Вы можете использовать mysqldump из командной строки:

mysqldump -u username -p password dbname tablelname > "path where you want to dump"

Вы также можете использовать MySQL Workbench:

Перейдите влево> Экспорт данных> Выберите схему> Выберите таблицы и нажмите "Экспорт"

Вы можете легко использовать дамп выбранных таблиц, используя MYSQLWorkbench tool, по отдельности или в группе таблиц в одном дампе, затем импортируйте ее следующим образом: также вы можете добавить информацию о хосте, если вы запускаете ее на локальном компьютере, добавив -h IP.ADDRESS.NUMBER after-u username

mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql 

Вы можете использовать следующий код:

  1. Только для одной структуры таблиц

-

mysqldump -d <database name> <tablename> > <filename.sql>
  1. Для структуры одной таблицы с данными

-

mysqldump <database name> <tablename> > <filename.sql>

Надеюсь, это поможет.

Вы можете использовать этот код:

В этом примере создается резервная копия базы данных sugarcrm и выводится вывод в sugarcrm.sql.

# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql

# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql

Sugarcrm.sql будет содержать таблицу удаления, создать таблицу и вставить команду для всех таблиц в базе данных sugarcrm. Ниже приведен частичный вывод sugarcrm.sql, показывающий информацию о дампе таблицы accounts_contacts:

-

- Структура стола для стола accounts_contacts

DROP TABLE IF EXISTS `accounts_contacts`;
SET @saved_cs_client = @@character_set_client;
SET character_set_client = utf8;
CREATE TABLE `accounts_contacts` (
`id` varchar(36) NOT NULL,
`contact_id` varchar(36) default NULL,
`account_id` varchar(36) default NULL,
`date_modified` datetime default NULL,
`deleted` tinyint(1) NOT NULL default '0',
PRIMARY KEY (`id`),
KEY `idx_account_contact` (`account_id`,`contact_id`),
KEY `idx_contid_del_accid` (`contact_id`,`deleted`,`account_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
SET character_set_client = @saved_cs_client;

--

просто используйте mysqldump -u root database tableили при использовании с паролем mysqldump -u root -p pass database table

Я столкнулся с этим и хотел расширить ответы других с помощью нашего полностью рабочего примера:

Это создаст резервную копию схемы в собственном файле, а затем каждой таблицы базы данных в отдельном файле.

Формат даты означает, что вы можете запускать его так часто, как позволяет место на жестком диске.

      
DATE=`date '+%Y-%m-%d-%H'`
BACKUP_DIR=backups/
DATABASE_NAME=database_name
mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1  --routines --triggers --single-transaction --no-data --databases ${DATABASE_NAME} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}--schema.sql.gz
for table in $(mysql  --user=fake --password=secure --host=10.0.0.1 -AN -e "SHOW TABLES FROM ${DATABASE_NAME};");
    do
    echo ""
    echo ""
    echo "mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz"
    mysqldump --column-statistics=0  --user=fake --password=secure --host=10.0.0.1 --routines --triggers --single-transaction --databases ${DATABASE_NAME} --tables ${table} | gzip > ${BACKUP_DIR}${DATE}-${DATABASE_NAME}-${table}.sql.gz
done

Мы запускаем это как сценарий bash каждый час, и на самом деле у нас есть ЧАСОВЫЕ проверки и резервное копирование только некоторых таблиц в течение дня, а затем всех таблиц ночью.

чтобы сохранить место на дисках, сценарий также запускает это для удаления резервных копий старше X дней.

      # HOW MANY DAYS SHOULD WE KEEP
DAYS_TO_KEEP=25
DAYSAGO=$(date --date="${DAYS_TO_KEEP} days ago" +"%Y-%m-%d-%H")
echo $DAYSAGO
rm -Rf ${BACKUP_DIR}${DAYSAGO}-*
echo "rm -Rf ${BACKUP_DIR}${DAYSAGO}-*"

Другие вопросы по тегам