默认情况下,mysqldump对整个数据库进行备份。我需要在MySQL中备份一个表。这可能吗?我怎么恢复它?
当前回答
从.sql中转储和恢复单个表
Dump
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 . Mysql
从压缩(.sql.gz)格式转储和恢复单个表
资料来源:John McGrath
Dump
mysqldump db_name table_name | gzip > table_name.sql.gz
恢复
gunzip < table_name.sql.gz | mysql -u username -p db_name
其他回答
我遇到了这个问题,想用我们完整的例子来扩展其他人的答案:
这将在它自己的文件中备份模式,然后在它自己的文件中备份每个数据库表。
日期格式意味着您可以在硬盘空间允许的情况下尽可能频繁地运行此程序。
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}-*"
Mysqldump可以接受一个tbl_name参数,这样它只备份给定的表。
mysqldump -u -p yourdb yourtable > c:\backups\backup.sql
从.sql中转储和恢复单个表
Dump
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 . Mysql
从压缩(.sql.gz)格式转储和恢复单个表
资料来源:John McGrath
Dump
mysqldump db_name table_name | gzip > table_name.sql.gz
恢复
gunzip < table_name.sql.gz | mysql -u username -p db_name
我们可以在任何给定条件下对任何特定的表进行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 tablename > "转储路径"
你也可以使用MySQL Workbench:
>数据导出>选择模式>选择表,单击“导出”
推荐文章
- MySQL删除表中的所有行,并将ID重置为零
- 在准备语句中使用“like”通配符
- MySQL中的表名是否区分大小写?
- 库未加载:libmysqlclient.16。在OS X 10.6上使用mysql2 gem运行'rails server'时出现dylib错误
- 如何知道MySQL表最近一次更新?
- 在MySQL中的一个查询中更新多个具有不同值的行
- 如果表存在则删除表并创建它,如果不存在则创建它
- MySQL OR与IN性能
- 将值从同一表中的一列复制到另一列
- 删除id与其他表不匹配的sql行
- MySQL CPU使用率高
- INT和VARCHAR主键之间有真正的性能差异吗?
- 拒绝访问;您需要(至少一个)SUPER特权来执行此操作
- 从存储引擎得到错误28
- "where 1=1"语句