默认情况下,mysqldump对整个数据库进行备份。我需要在MySQL中备份一个表。这可能吗?我怎么恢复它?
当前回答
你可以使用下面的代码:
对于单表结构单独备份
-
mysqldump -d <database name> <tablename> > <filename.sql>
对于单表结构的数据
-
mysqldump <database name> <tablename> > <filename.sql>
希望能有所帮助。
其他回答
try
for line in $(mysql -u... -p... -AN -e "show tables from NameDataBase");
do
mysqldump -u... -p.... NameDataBase $line > $line.sql ;
done
$line内容名称表;)
你可以使用下面的代码:
本例对sugarcrm数据库进行备份,并将输出转储到sugarcrm.sql
# mysqldump -u root -ptmppassword sugarcrm > sugarcrm.sql
# mysqldump -u root -p[root_password] [database_name] > dumpfilename.sql
sugarcrm。对于sugarcrm数据库中的所有表,SQL将包含删除表、创建表和插入命令。以下是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根数据库表 或者如果使用mysqldump密码-u root -p pass数据库表
您可以使用MYSQLWorkbench工具轻松地转储选定的表,单个或组的表在一个转储,然后导入它如下:你也可以添加主机信息,如果你是在您的本地运行通过添加-h IP.ADDRESS.NUMBER后u用户名
mysql -u root -p databasename < dumpfileFOurTableInOneDump.sql
我遇到了这个问题,想用我们完整的例子来扩展其他人的答案:
这将在它自己的文件中备份模式,然后在它自己的文件中备份每个数据库表。
日期格式意味着您可以在硬盘空间允许的情况下尽可能频繁地运行此程序。
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脚本的形式每小时运行一次,实际上有HOUR检查,白天只备份一些表,晚上备份所有表。
为了在驱动器上保留一些空间,脚本还运行此命令删除超过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}-*"
推荐文章
- 我如何得到“id”后插入到MySQL数据库与Python?
- MySQL工作台:如何保持连接活动
- 'create_date'时间戳字段的默认值无效
- 我可以从一个完整的mysql mysqldump文件恢复一个表吗?
- 计数在VARCHAR字段中字符串的出现次数?
- 修改一个MySQL列为AUTO_INCREMENT
- 在ROR迁移期间,将列类型从Date更改为DateTime
- 如何删除所有MySQL表从命令行没有DROP数据库权限?
- 从主机连接到docker容器中的mysql
- 如果任何字段包含NULL, MySQL CONCAT将返回NULL
- MySQL中的字符串连接
- Laravel未知列'updated_at'
- MySQL更新内部连接表查询
- 根据查询结果设置用户变量
- 不能删除外键约束中需要的索引