mysqldump恢复指定表

本文详细介绍了在MySQL服务器上,当无法随意安装软件时,如何从全备份中恢复单个表的方法。通过使用mysqldump进行备份,再利用gunzip、sed、grep等工具从备份文件中精确提取表结构和数据,最终实现单个表的精准恢复。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果mysql服务器上不能随意安装软件,当需要从全备份中恢复单个表,怎么办?



1.mysqldump备份指定数据库,如ivr

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

[mysql@bjmysql01]$ mysqldump -utelivr -p123456 -F -R --events --databases ivr |gzip >ivr_$(date +%F).sql.gz  


2. 确认备份文件已经生成

[mysql@bjmysql01]$ ll ivr*

ivr_2014-01-25.sql.gz



3.模拟删除atuo表

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> show tables;  

+---------------+  

| Tables_in_ivr |  

+---------------+  

| atuo          |  

| ivr           |  

+---------------+  

2 rows in set (0.00 sec)  




[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> select * from atuo;  

+----+------+  

| id | name |  

+----+------+  

|  1 | a    |  

|  2 | b    |  

|  4 | c    |  

+----+------+  

3 rows in set (0.00 sec)  

  

  

mysql> drop table atuo;  

Query OK, 0 rows affected (0.01 sec)  


[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> show tables;  

+---------------+  

| Tables_in_ivr |  

+---------------+  

| ivr           |  

+---------------+  

1 row in set (0.00 sec)  




4.从备份文件中找出需要恢复表的建表语句:

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

[mysql@bjmysql01]$ gunzip -c ivr_2014-01-25.sql.gz |sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `atuo`/!d;q'   

DROP TABLE IF EXISTS `atuo`;  

/*!40101 SET @saved_cs_client     = @@character_set_client */;  

/*!40101 SET character_set_client = utf8 */;  

CREATE TABLE `atuo` (  

  `id` int(11) NOT NULL AUTO_INCREMENT,  

  `name` varchar(5) DEFAULT NULL,  

  PRIMARY KEY (`id`)  

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;  

/*!40101 SET character_set_client = @saved_cs_client */;  




5.从备份文件中找出需要恢复表的数据: 

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

[mysql@bjmysql01]$ gunzip -c ivr_2014-01-25.sql.gz | grep --ignore-case  'insert into `atuo`'  

INSERT INTO `atuo` VALUES (1,'a'),(2,'b'),(4,'c');  



6.恢复被删除表的表结构

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

[mysql@bjmysql01]$ gunzip -c ivr_2014-01-25.sql.gz |sed -e '/./{H;$!d;}' -e 'x;/CREATE TABLE `atuo`/!d;q' |mysql -utelivr -p123456 ivr  

   





7.从备份文件中恢复被删除表的数据:

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

[mysql@bjmysql01]$ gunzip -c ivr_2014-01-25.sql.gz | grep --ignore-case  'insert into `atuo`'| mysql -utelivr -p123456 ivr  




8.查看atuo表,数据已经恢复。

[sql] view plain copy 在CODE上查看代码片派生到我的代码片

mysql> select * from atuo;  

+----+------+  

| id | name |  

+----+------+  

|  1 | a    |  

|  2 | b    |  

|  4 | c    |  

+----+------+  

3 rows in set (0.00 sec)  


如果按表来备份,或把表结构和数据单独分开备份,单个表恢复起来或许更容易。


转载于:https://my.oschina.net/liuhuan0927/blog/628499

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值