1.1还原使用mysqldump命令备份的数据库的语法如下:

  mysql -u root -p [dbname] < backup.sq

  示例:

mysql -u root -p < C:\backup.sql

1.2还原直接复制目录的备份

  通过这种方式还原时,必须保证两个MySQL数据库的版本号是相同的。MyISAM类型的表有效,对于InnoDB类型的表不可用,InnoDB表的表空间不能直接复制

2.还原增量binlog的方法

  2.1 时间点的恢复建立在一下规则的基础上:
    1 mysql服务器需要开启二进制日志--log-bin
    查看所有binlog文件


  1. mysql> SHOW BINARY LOGS;


    查看当前binlog文件信息(包含文件名,当前位置等)


  1. mysql> SHOW MASTER STATUS;


    2 mysqlbinlog工具将binary log文件由二进制转换为可读的文本文件,可以选择基于时间或位置的事件。
    3 从binary log文件中执行事件会导致数据的修改,表示要重做数据。命令为:


  1. [root@localhost /]# mysqlbinlog binlog_files | mysql -u root -p

4 查看binlog的时间及位置信息我们可以讲binlog内容输出到终端或文本文件


  1. [root@localhost /]# mysqlbinlog binlog_files | more
  2. [root@localhost /]# mysqlbinlog binlog_files > tmpfile

5 将二进制日志输出到文件非常有用,比如我们想要删除某些我们不想执行的语句。
    通过文本文件导入到数据库


  1. [root@localhost /]# mysql -u root -p < tmpfile

    2.2 多个binlog log日志的还原最好将所有文件使用一个连接完成,如果使用不同连接的话有时会导致不安全
    例如:


  1. [root@localhost /]# mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
  2. [root@localhost /]# mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!

如果第一个日志包含创建临时表语句CREATE TEMPORARY TABLE,第二个日志要使用该临时表,第一个导入binlog日志的进程退出后临时表会被删除,执行第二个日志文件要使用临时表时会因找不到而报 “unknown table.”
    建议的方法:
    方法1:
    所有二进制文件放在单个连接里


  1. [root@localhost /]# mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p

方法2:
    将所有二进制文件写在一个文件里执行


  1. [root@localhost /]# mysqlbinlog binlog.000001 >  /tmp/statements.sql
  2. [root@localhost /]# mysqlbinlog binlog.000002 >> /tmp/statements.sql
  3. [root@localhost /]# mysql -u root -p -e "source /tmp/statements.sql"

使用方法二如果二进制文件里包含GTID信息需要过滤掉


  1. [root@localhost /]# mysqlbinlog --skip-gtids binlog.000001 >  /tmp/dump.sql
  2. [root@localhost /]# mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
  3. [root@localhost /]# mysql -u root -p -e "source /tmp/dump.sql"

3 通过时间点或位置点的恢复
    如果我们要跳过某个时间段或位置段,需要指定起止时间或位置信息
    3.1 通过事件的时间来恢复
    我们可以通过参数--start-datetime 和 --stop-datetime指定恢复binlog日志的起止时间点,时间使用DATETIME格式。
    比如在时间点2005-04-20 10:00:00我们删除掉一个库,我们要恢复该时间点前的所有日志


  1. [root@localhost /]# mysqlbinlog --stop-datetime="2005-04-20 9:59:59" /usr/local/mysql/data/binlog.123456 | mysql -u root -p

我们可能几个小时后才发现该错误,后面又有一系列的增删查改等操作,我们还需要恢复后续的binlog,我们可以指定起始时间


  1. [root@localhost /]# mysqlbinlog --start-datetime="2005-04-20 10:01:00" /usr/local/mysql/data/binlog.123456 | mysql -u root -p

通过该种方法恢复我们需要通过查看binlog日志知道发生误操作的确切时间点,查看日志我们可以先将日志输出到文本里


  1. [root@localhost /]# mysqlbinlog /usr/local/mysql/data/binlog.123456 > /tmp/mysql_restore.sql

    3.2 通过事件的位置来恢复
    我们可以通过参数--start-position 和 --stop-position指定恢复binlog日志的起止位置点,通过位置的恢复需要我们有更加精细的操作,例如在某个时间点我们执行了错误的语句,且这个时间点前后都有大并发操作,要确定破坏性sql的时间点,我们可以先导出大致的时间段的日志到文件以缩小查找范围,再去分析和确定


  1. [root@localhost /]# mysqlbinlog --start-datetime="2005-04-20 9:55:00"  --stop-datetime="2005-04-20 10:05:00" /usr/local/mysql/data/binlog.123456 > /tmp/mysql_restore.sql

确定好需要跳过的位置之后,我们就可以进行恢复了


  1. [root@localhost /]# mysqlbinlog --stop-position=368312 /usr/local/mysql/data/binlog.123456 | mysql -u root -p
  2. [root@localhost /]# mysqlbinlog --start-position=368315 /usr/local/mysql/data/binlog.123456 | mysql -u root -p

注:mysqlbinlog工具的输出会在每条sql语句前增加 SET TIMESTAMP语句,恢复的数据及mysql日志反映当前时间。

转载于:https://www.cnblogs.com/fyc119/p/7529888.html

MySQL 数据还原相关推荐

  1. Centos Mysql数据还原

    一.通过mysqlbinlog恢复数据 先安装mysql mysql-server yum -y install mysql mysql-server 编辑配置文件 [root@localhost 桌 ...

  2. 空间mysql数据还原_mysql通过表空间来恢复或者传递数据

    mysql的备份工具通常有 mysqldump ,mysqlpump(5.7后新特性)等备份工具,这里我们可以尝试使用表空间进行传递 方式是:拷贝数据文件+拷贝表空间   对应innodb引擎就是 i ...

  3. mysql数据还原命令_mysql数据备份和还原命令:mysqldump

    1.mysqldump的几种常用方法: (1)导出整个数据库(包括数据库中的数据) mysqldump -u username -p dbname > dbname.sql (2)导出数据库结构 ...

  4. mysql数据还原时报错_还原mysql数据库时报错

    环境说明: 1.操作系统: aaa@ubuntu:~$ cat /etc/issue Ubuntu 12.04.3 LTS \n \l 2.内核版本: aaa@ubuntu:~$ uname -a L ...

  5. mysql数据还原时报错_Mysql 恢复数据出错

    1.测试mysql binlog 数据恢复功能,我的mysql版本是5.7.17 2.删了数据之后,执行show binlog events 命令得到如下记录! 3.找到开始删除和结束删除的位置,然后 ...

  6. Mysql数据库的简单备份与还原_史上最简单的MySQL数据备份与还原教程

    本文主要为大家详细介绍了史上最简单的MySQL数据备份与还原教程第一篇,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 数据备份与还原第一篇分享给大家,具体内容如下 基础概念: ...

  7. MySQL数据的备份与还原实现步骤

    一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...

  8. MySQL 数据备份与还原

    数据的备份类型 数据的备份类型根据其自身的特性主要分为以下几组 1.完全备份备份整个数据集( 即整个数据库 ).部分备份指的是备份部分数据集(例如: 只备份一个表) 2.部分备份 而部分备份又分为以下 ...

  9. MySQL数据的备份还原及数据修复

    在日常的生产环境中为什么要进行备份   备份可以使生产中的数据进行有效的灾难恢复:硬件故障.软件故障.自然灾害.误操作测试等数据丢失场景. 备份注意要点 能容忍最多丢失多少数据 恢复数据需要在多长时间 ...

最新文章

  1. 王木匠,我服了你一半
  2. 通过浏览器navigator判断浏览器版本或者手机类型判断微信访问
  3. SpringMVC基础——一个简单的例子
  4. 用python画爱心-python画一个玫瑰和一个爱心
  5. 《数据结构》c语言版学习笔记——线性表的顺序存储结构
  6. java动态加载jar文件并执行方法
  7. fs react 使用 保存文件_使用FS进行文件同步和备份
  8. Docker RocketMQ 集群
  9. Silverlight使用DataGrid的模板列(DataGridTemplateColumn)实现类似TreeListView控件的效果
  10. HTML5网页语音识别功能演示
  11. Mac python入门:安装python并新建python项目
  12. python实现设计模式
  13. 豪越智慧后勤解决方案(教育/高校)
  14. 让电脑「读懂」你的思想——java工程师的职业规划
  15. 新增修改BP客户/供应商
  16. 计算机24点游戏音调,24点游戏,任意点游戏在线计算器,4个数加减乘除算24点,任意点_三贝计算网_23bei.com...
  17. 倍福Twincat 3.0软件的EAP通讯(补充)
  18. 效果炸了,Drawable 实现红鲤鱼动画,点哪儿游哪儿(下)
  19. python去掉第一个字符_去掉python字符串前面的”b”
  20. char* 和 char[]区别

热门文章

  1. 计算机一级应用于段落还是文字,计算机一级复习资料
  2. java抽象类异常_求教JAVA里面的错误继承抽象类我都已经看傻了。
  3. wincc客户机打开服务器文件通讯不上,wincc客户机连不上服务器
  4. python下载显示文件丢失_Microsoft.PythonTools.resources.dll
  5. mysql导入创建表空间_oracle创建表空间 用户 数据库导入和导出(转)
  6. 算法—振兴中华(C语言版)
  7. STM32F1笔记(六)独立看门狗IWDG
  8. LeetCode 112. 路径总和 、113. 路径总和 II 思考分析
  9. C++语法:求vector中的最大值及其位置
  10. final 在java,final 在java中的注意点