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日志反映当前时间。

MySQL 数据还原的更多相关文章

  1. MySQL 数据备份与还原

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

  2. 转 MySQL 数据备份与还原

    MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html   一.数据备份 1.使用mysqldump命令备份 mysqldum ...

  3. MYSQL数据备份与还原学习笔记

    数据备份与还原   1.mysqldump 1.1 文件地址: E:\xampp\mysql\bin 文件名:mysqldump.exe CMD下进入mysqldump.exe cd E:\xampp ...

  4. Mysql数据备份与还原

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

  5. MySQL数据备份与还原(mysqldump)

    一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...

  6. MySQL 数据备份与还原的示例代码

    MySQL 数据备份与还原的示例代码 这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.数据备份 1.使用 ...

  7. MySQL 数据备份与还原 转载

    MySQL 数据备份与还原 一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldum ...

  8. day 50 MySQL数据备份与还原(mysqldump)

      MySQL数据备份与还原(mysqldump)   一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Databas ...

  9. MySQL数据备份及还原(一)

    关于删库跑路的事故现在已经屡见不鲜了,数据备份的必要性是企业数据管理极其重要的一项工作.关于数据备份.恢复也有很多场景及方法,本系列也会将主要的几种工具通过案例进行演示. 本系列将从逻辑备份及恢复开始 ...

随机推荐

  1. vuex存储和本地存储的区别

    1.实质的区别 vuex存的是状态,存储在内存,localstorage是浏览器提供的接口,让你存的是文件,以文件的形式存储在本地 2.应用场景 vuex用于组件之间的传值,localstorage则 ...

  2. WIN10 java环境变量问题之 配置的JDK1.8版本却是1.7

    问题前沿,在开发项目中,发布的项目出现了内存溢出问题,我挨个把代码看了一遍,并不能准确定位到那个地方能出现内存溢出问题,后来想到使用压力测试,较可能出现内存溢出的接口进行一番测试. 我就安装了一个ap ...

  3. elementUI 日期时间选择器el-date-picker开始时间与结束时间约束

    主要思路:el-date-picker组件需要 :picker-options属性,属性值为data,data的数据来自于methods中的方法. ##template代码 <el-form-i ...

  4. fetch 如何请求数据

    fetch 如何请求数据 在 传统Ajax 时代,进行 API 等网络请求都是通过XMLHttpRequest或者封装后的框架进行网络请求,然而配置和调用方式非常混乱,对于刚入门的新手并不友好 二 与 ...

  5. java源码之HashSet

    1,HashSet介绍 1)HashSet 是一个没有重复元素的集合.2)它是由HashMap实现的,不保证元素的顺序,而且HashSet允许使用 null 元素.3)HashSet是非同步的.如果多 ...

  6. POJ 2154

    这题的时间卡的.... 必须用欧拉来优化,而且要加素数表.最重要是,因为最后结果要/n,而数据很大,所以,必须在之前就先/n了,否则会爆数据. #include <iostream> #i ...

  7. 王立平-bmp.compress()

    bmp.compress(Bitmap.CompressFormat.JPEG, 30, baos); //30 是压缩率,表示压缩70%; 假设不压缩是100,表示压缩率为0

  8. poj2965 The Pilots Brothers&#39; refrigerator(直接计算或枚举Enum+dfs)

    转载请注明出处:http://blog.csdn.net/u012860063? viewmode=contents 题目链接:http://poj.org/problem? id=2965 ---- ...

  9. windows编译ffmpeg出现gcc is unable to create an executable file 的普通情况

    近期有个朋友在编译ffmpeg的时候出现这个问题,他非常郁闷. 我就说,为什么我弄的时候就没问题呢??直接./configure +加上后面的參数 安全度过. 然后,我就想了,预计他的gcc的系统变量 ...

  10. MAVEN创建并打包web项目

    maven项目是由一个maven project和多个maven module组成的,以下简介一下maven webapp的创建和打包,前提是你已经安装配置好maven了. 打开eclipse.依照例 ...