mysql备份灵活恢复

服务上线遇到一个问题,开始操作前做了全库备份,但是没有做要操作的库备份,如果操作过程出现失败情况需要回退时,直接用全备文件做全库恢复很不妥当。

通过mysql的全备份文件,可以比较灵活的筛选出某个单独的 库或者单独的表的备份内容,从而灵活的恢复。同时,也可以直接用全备文件恢复单独的库。下面记录一下这些操作方式。

从全备份文件中恢复指定库

在/opt/目录下有一个full_bak.sql备份文件,对当前数据库做了全备

[root@node1 opt]# ls

full-bak.sql mysql_fulldump-2019-03-17.sql

数据库中原来的 pay 数据库被我删除,现在从上面的全库备份文件中单独恢复pay。 执行指令如下:

登录数据库创建同名数据库

create database pay;

从全备文件恢复pay

[root@node1 opt]# mysql -u root -p pay --one-database < full-bak.sql

--one-database选项可以使用 -o 参数

登录数据库查看pay库数据

mysql> use pay;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> show tables;

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

| Tables_in_pay |

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

| ws_pay_order |

| ws_wxpay_notify |

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

2 rows in set (0.01 sec)

mysql> select count(*) from ws_pay_order;

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

| count(*) |

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

| 185 |

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

1 row in set (0.00 sec)

指定恢复的库需要先在数据库中创建同名数据库

从全备文件中筛选数据库或数据表

还有一种方式,通过把备份文件中的备份语句筛选出来导入新的SQL文件,使用新的SQL文件来恢复指定的库或者表。

下面用使用比较大的备份文件mysql_fulldump-2019-03-17.sql进行筛选

使用正则表达式将备份文件中的 mall库筛选出来:

[root@node1 opt]# sed -n '/^-- Current Database: `mall`/,/^-- Current Database: `/p' mysql_fulldump-2019-03-17.sql > mall.sql

查看筛选文件如下:

[root@node1 opt]# ls

full-bak.sql mall.sql mysql_fulldump-2019-03-17.sql

[root@node1 opt]# du -sh mall.sql

345Mmall.sql

上面这种方式筛选的备份语句,把建库和建表语句都找出来了,所以可以直接执行mysql指令进行数据导入恢复。

恢复mall数据

[root@node1 opt]# mysql -uroot -p < mall.sql

mysql> show databases;

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

| Database |

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

| admin |

| information_schema |

| mall |

| mysql |

| pay |

| performance_schema |

| sys |

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

7 rows in set (0.00 sec)

从备份文件中筛选某个表的备份语句进行单表恢复

接着上面的恢复内容,将pay库中的一个表删除,然后从备份文件中将该表的备份语句筛选出来进行导入恢复

Database changed

mysql> show tables;

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

| Tables_in_pay |

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

| ws_pay_order |

| ws_wxpay_notify |

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

2 rows in set (0.00 sec)

mysql> drop table ws_pay_order;

Query OK, 0 rows affected (0.15 sec)

筛选表的备份分为两步,第一步先找到该表ws_pay_order的表结构,正则表达式如下:

[root@node1 opt]# sed -e'/./{H;$!d;}' -e 'x;/CREATE TABLE `ws_pay_order`/!d;q' full-bak.sql > ws_pay_order.sql

# 表结构重定向至ws_pay_order.sql,随后将insert语句追加到该文件中:如下

[root@node1 opt]# grep 'INSERT INTO `ws_pay_order`' full-bak.sql >> ws_pay_order.sql

# 此时表的备份文件被筛选出来

恢复数据

mysql> source /opt/ws_pay_order.sql;

还有另一种方式来做匹配,和匹配数据库一样,执行指令如下:

[root@node1 opt]# sed -n -e '/CREATE TABLE.*`ws_pay_order`/ ,/UNLOCK TABLES/p' full-bak.sql > ws_pay_order.sql

#导入方式与上面一样

mysql备份文件无法回退_mysql备份灵活恢复相关推荐

  1. 简述mysql完全备份过程_【SQL】MySQL之使用mysqldump全备份及恢复过程详解_MySQL

    mysqldump bitsCN.com [SQL]MySQL之使用mysqldump全备份及恢复过程详解 [目标]使用mysqldump做全备,结合mysql自带的binlog功能实现增量备份 为了 ...

  2. mysql 5.6.17 备份还原_mysql 备份和恢复

    7. 备份和恢复 本章主要会介绍: 1.备份的类型:逻辑备份,物理备份,全备和增量4种 2.创建备份的方法 3.还原方法,包括还原到时间点 4.备份计划,压缩和加密 5.表维护,恢复损坏的表 7.1备 ...

  3. 备份mysql数据库攻略_mysql备份实例攻略

    本文系统Centos6.0 首先普及下备份术语:热备份:读.写不受影响: 温备份:仅可以执行读操作: 冷备份:离线备份:读.写操作均中止: 我们备份,一般备份以下几个部分: 1.数据文件 2.日志文件 ...

  4. mysql dump 查看器_mysql备份之mysqldump工具

    参考文档: 利用mysqldump+二进制日志实现备份恢复数据库:http://www.178linux.com/60616 mysql进阶篇(三种备份方法总结:lvm, mysqldump, xtr ...

  5. mysql 51 bin_mysqldump和bin-log备份以及恢复示例

    mysql版本[root@zxl-nginx ~]# mysql -V mysql  Ver 14.14 Distrib 5.6.28, for linux-glibc2.5 (x86_64) usi ...

  6. commvault备份mysql数据库_Oracle数据库的备份和恢复-Commvault.PDF

    Oracle数据库的备份和恢复-Commvault.PDF Oracle® 数据库的备份和恢复 亮点 1 集成 在几乎不对生产造成影响的情况下恢复 Oracle .Oracle RAC.Oracle ...

  7. 管家婆服务器备份文件夹,管家婆软件备份以及恢复方法

    管家婆软件备份以及恢复方法 管家婆软件安装好之后一般默认为每天自动备份一次,自动备份周期在软件的系统配置里修改.如果重装系统或者防止数据丢失,可以自己手动备份.下面是yjbys小编为大家带来的管家婆软 ...

  8. mysql数据库恢复策略_MySQL 备份和恢复策略(一)

    在数据库表丢失或损坏的情况下,备份你的数据库是很重要的.如果发生系统崩溃,你肯定想能够将你的表尽可能丢失最少的数据恢复到崩溃发生时的状态.本文主要对MyISAM表做备份恢复. 备份策略一:直接拷贝数据 ...

  9. mysql 导入单个表_MySQL 备份恢复(导入导出)单个 innodb表

    MySQL 备份恢复单个innodb表呢,对于这种恢复我们我们很多朋友都不怎么了解了,下面一起来看一篇关于MySQL 备份恢复单个innodb表的教程 在实际环境中,时不时需要备份恢复单个或多个表(注 ...

  10. mysql 备份文件太大_mysql数据库太大了怎么备份

    本地: 1.进入MySQL目录下的bin文件夹:e:回车:e:\>cd mysql\bin 回车2.导出数据库:mysqldump -u?用户名 -p 数据库名 > 导出的文件名范例:my ...

最新文章

  1. github中origin和upstream的区别(转)
  2. 窗体的ControlBox属性
  3. ngCloak 实现 Angular 初始化闪烁最佳实践
  4. Android官方开发文档Training系列课程中文版:键盘输入处理之处理键盘按键
  5. 四因素三水平正交表_做论文要用正交表?我打包送给你
  6. 拿去用,常见几种加密算法的Python实现
  7. pytorch 语义分割loss_关于pytorch语义分割二分类问题的两种做法
  8. CHIL-SQL-FOREIGN KEY 约束
  9. android onClickListener onLongClickListener事件冲突
  10. Julia: Beginning deep learning with 500 lines of Julia
  11. 梦断A股:证监会发现了小米的违规之处
  12. 单片机c语言论文参考文献,单片机应用程序论文,关于关于单片机应用编程的技巧相关参考文献资料-免费论文范文...
  13. 基于 WinPcap/Npcap 网络桥接与局域网网关
  14. 舞蹈模特欣欣(六)棚拍私房 大家看看像小龙女(李若彤)吗?
  15. 信息安全从业者书单推荐(2020.6.28更新)
  16. 怎么用python画房子_python绘图作业:使用pygame库画房子
  17. 42. 通俗易懂大数据实时计算Storm教程
  18. 警惕!微信诈骗花样多:点个赞都可能被骗
  19. 【错误记录】Ubuntu 下 VSCode 编译报错 ( 无法生成和调试,因为活动文件不是 C 或 C++ 源文件。终端进程启动失败(退出代码: -1)。终端将被任务重用,按任意键关闭。 )
  20. 干眼症产品的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告

热门文章

  1. 在emacs编辑的文本中插入图片 并直接在文本里显示该图片(转载)
  2. 推行ISO9000的作用及相关知识
  3. Struts原理、开发及项目实施
  4. 拓端tecdat|R语言网络和网络流的可视化实践:通勤者流动网络
  5. mysql5.5连不上主机_mysql5.5主从同步排错
  6. 快速排序_two-powinters思想
  7. c++下字符串分割函数split实现
  8. 电话聊天狂人 (25 分)(map映射 简单做法)
  9. 优酷java贴吧_[杭州] [优酷] 阿里 Java 服务端开发招人啦-P7\P6+
  10. 【领域适应】训练梯度反向层(gradient reversl layer, GRL)