MySQL 数据还原
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文件
- mysql> SHOW BINARY LOGS;
查看当前binlog文件信息(包含文件名,当前位置等)
- mysql> SHOW MASTER STATUS;
2 mysqlbinlog工具将binary log文件由二进制转换为可读的文本文件,可以选择基于时间或位置的事件。
3 从binary log文件中执行事件会导致数据的修改,表示要重做数据。命令为:
- [root@localhost /]# mysqlbinlog binlog_files | mysql -u root -p
4 查看binlog的时间及位置信息我们可以讲binlog内容输出到终端或文本文件
- [root@localhost /]# mysqlbinlog binlog_files | more
- [root@localhost /]# mysqlbinlog binlog_files > tmpfile
5 将二进制日志输出到文件非常有用,比如我们想要删除某些我们不想执行的语句。
通过文本文件导入到数据库
- [root@localhost /]# mysql -u root -p < tmpfile
2.2 多个binlog log日志的还原最好将所有文件使用一个连接完成,如果使用不同连接的话有时会导致不安全
例如:
- [root@localhost /]# mysqlbinlog binlog.000001 | mysql -u root -p # DANGER!!
- [root@localhost /]# mysqlbinlog binlog.000002 | mysql -u root -p # DANGER!!
如果第一个日志包含创建临时表语句CREATE TEMPORARY TABLE,第二个日志要使用该临时表,第一个导入binlog日志的进程退出后临时表会被删除,执行第二个日志文件要使用临时表时会因找不到而报 “unknown table.”
建议的方法:
方法1:
所有二进制文件放在单个连接里
- [root@localhost /]# mysqlbinlog binlog.000001 binlog.000002 | mysql -u root -p
方法2:
将所有二进制文件写在一个文件里执行
- [root@localhost /]# mysqlbinlog binlog.000001 > /tmp/statements.sql
- [root@localhost /]# mysqlbinlog binlog.000002 >> /tmp/statements.sql
- [root@localhost /]# mysql -u root -p -e "source /tmp/statements.sql"
使用方法二如果二进制文件里包含GTID信息需要过滤掉
- [root@localhost /]# mysqlbinlog --skip-gtids binlog.000001 > /tmp/dump.sql
- [root@localhost /]# mysqlbinlog --skip-gtids binlog.000002 >> /tmp/dump.sql
- [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我们删除掉一个库,我们要恢复该时间点前的所有日志
- [root@localhost /]# mysqlbinlog --stop-datetime="2005-04-20 9:59:59" /usr/local/mysql/data/binlog.123456 | mysql -u root -p
我们可能几个小时后才发现该错误,后面又有一系列的增删查改等操作,我们还需要恢复后续的binlog,我们可以指定起始时间
- [root@localhost /]# mysqlbinlog --start-datetime="2005-04-20 10:01:00" /usr/local/mysql/data/binlog.123456 | mysql -u root -p
通过该种方法恢复我们需要通过查看binlog日志知道发生误操作的确切时间点,查看日志我们可以先将日志输出到文本里
- [root@localhost /]# mysqlbinlog /usr/local/mysql/data/binlog.123456 > /tmp/mysql_restore.sql
3.2 通过事件的位置来恢复
我们可以通过参数--start-position 和 --stop-position指定恢复binlog日志的起止位置点,通过位置的恢复需要我们有更加精细的操作,例如在某个时间点我们执行了错误的语句,且这个时间点前后都有大并发操作,要确定破坏性sql的时间点,我们可以先导出大致的时间段的日志到文件以缩小查找范围,再去分析和确定
- [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
确定好需要跳过的位置之后,我们就可以进行恢复了
- [root@localhost /]# mysqlbinlog --stop-position=368312 /usr/local/mysql/data/binlog.123456 | mysql -u root -p
- [root@localhost /]# mysqlbinlog --start-position=368315 /usr/local/mysql/data/binlog.123456 | mysql -u root -p
注:mysqlbinlog工具的输出会在每条sql语句前增加 SET TIMESTAMP语句,恢复的数据及mysql日志反映当前时间。
MySQL 数据还原的更多相关文章
- MySQL 数据备份与还原
一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...
- 转 MySQL 数据备份与还原
MySQL 数据备份与还原 原贴:http://www.cnblogs.com/kissdodog/p/4174421.html 一.数据备份 1.使用mysqldump命令备份 mysqldum ...
- MYSQL数据备份与还原学习笔记
数据备份与还原 1.mysqldump 1.1 文件地址: E:\xampp\mysql\bin 文件名:mysqldump.exe CMD下进入mysqldump.exe cd E:\xampp ...
- Mysql数据备份与还原
一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldump命令的工作原理很简单.它先 ...
- MySQL数据备份与还原(mysqldump)
一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Database Administrator,简称DBA),是从事管理 ...
- MySQL 数据备份与还原的示例代码
MySQL 数据备份与还原的示例代码 这篇文章主要介绍了MySQL 数据备份与还原的相关知识,本文通过示例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 一.数据备份 1.使用 ...
- MySQL 数据备份与还原 转载
MySQL 数据备份与还原 一.数据备份 1.使用mysqldump命令备份 mysqldump命令将数据库中的数据备份成一个文本文件.表的结构和表中的数据将存储在生成的文本文件中. mysqldum ...
- day 50 MySQL数据备份与还原(mysqldump)
MySQL数据备份与还原(mysqldump) 一 mysqldump指令实现数据备份.mysql指令实现数据还原 经常有朋友问我,DBA到底是做什么的,百科上说:数据库管理员(Databas ...
- MySQL数据备份及还原(一)
关于删库跑路的事故现在已经屡见不鲜了,数据备份的必要性是企业数据管理极其重要的一项工作.关于数据备份.恢复也有很多场景及方法,本系列也会将主要的几种工具通过案例进行演示. 本系列将从逻辑备份及恢复开始 ...
随机推荐
- idea编写Swing程序中文乱码的解决办法
Run -> Edit Configurations ,在图示位置加入-Dfile.encoding=gbk
- crm 系统项目(三) 业务
1. 项目背景 crm系统是某教育平台正在使用的项目,系统主要为 销售部.运营部.教质部门提供管理平台,随着公司规模的扩展,对公司员工的业务信息量化以及信息化建设越来越重要. crm系统为不同角色的用 ...
- C# 发布APP修改APP图标以及名称
很多时候,我们用C#编程后,都要对我们的上位机生成的图标跟名字进行修改,下面我就 VS2015 怎么修改做个说明. 1.打开项目属性 2.打开应用程序的属性界面,对相应的地方进行修改就可以了 3.修改 ...
- 题解 P3978 【[TJOI2015]概率论】
这道题...好像是第一道我自己切出来的黑题... 先说一句,牛顿二项式蒟蒻并不会,可以说是直接套结论. 求诸位老爷轻喷. 这道题用卡特兰数搞. 卡特兰数这玩意从普及组初赛一路考到省选,十分有用. 如果 ...
- 移动端rem自适应设置
对于移动端自适应各种终端的解决方案较多,本篇只是选择其中一种rem适配,我个人做移动端最喜欢的方案. rem就是以html根元素的字体大小为参考,比如html:font-size:20px;1rem= ...
- RabbitMQ学习总结(2)——安装、配置与监控
一.安装 1.安装Erlang 1)系统编译环境(这里采用linux/unix 环境) ① 安装环境 虚拟机:VMware® Workstation 10.0.1 build Linux系统:Cent ...
- java源码之List(ArrayList,LinkList,Vertor)
1,List概括 List的框架图 (01) List 是一个接口,它继承于Collection的接口.它代表着有序的队列. (02) AbstractList 是一个抽象类,它继承于Abstract ...
- spring boot学习(转)
玩转Spring Boot 前言 首先在这里对Spring Boot做个简单的介绍,对Spring Boot也关注了挺久了,Spring Boot是由Pivotal团队提供的全新框架, ...
- COGS——T 2739. 凯伦和咖啡
http://www.cogs.pro/cogs/problem/problem.php?pid=2739 ★★☆ 输入文件:coffee.in 输出文件:coffee.out 简单对比时 ...
- [AngularJS]Chapter 4 AngularJS程序案例分析
前边讲的都是基础.本章看看他们怎么合作的. 我们要建一个程序.一次一步.章末结束 [这个程序] GutHub是一个简单的菜谱管理程序.功能是存好吃的的菜谱并提供步骤.这个程序包含: 两列布局 左边是导 ...