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文件


  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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/391371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

test6

test6 转载于:https://www.cnblogs.com/Forever77/p/11474320.html

VueJs学习入门指引

新产品开发决定要用到vuejs&#xff0c;总结一个vuejs学习指引。 1.安装一个Node环境 去Nodejs官网下载windows版本node 下载地址&#xff1a; https://nodejs.org/zh-cn/ 2.使用node的npm工具搭建一个Vue项目&#xff0c;这里混合进入了ElementUI 搭建指引地址: https:…

粒子网格算法 pm_使粒子网格与Blynk一起使用的2种最佳方法

粒子网格算法 pmThis post is originally from my blog on www.jaredwolff.com.这篇文章最初来自我在www.jaredwolff.com上的博客。 Writing an app takes time. It takes even more time to write one that works with hardware.编写应用程序需要时间。 编写与硬件兼容的代码…

python:对list去重

1、set()方法 numbers [1,7,3,2,5,6,2,3,4,1,5] new_numbers list(set(numbers)) print new_numbers 输出 [1, 2, 3, 4, 5, 6, 7] 特点&#xff1a;不保证原有顺序 2、原始方法 numbers [1,7,3,2,5,6,2,3,4,1,5] new_numbers [] for x in numbers:if x not in new_numbers:…

运维工程师如果将web服务http专变为https

1&#xff1a;生成私钥 2&#xff1a;生成证书签署请求 3&#xff1a;在提供CA签署的web网站上&#xff0c;提交生成的证书签署请求 4&#xff1a;下载已经签署的CA证书 5&#xff1a;将证书的信息保留在web服务器中&#xff0c;且应用到提供web服务的软件即可转载于:https://w…

leetcode 363. 矩形区域不超过 K 的最大数值和

给你一个 m x n 的矩阵 matrix 和一个整数 k &#xff0c;找出并返回矩阵内部矩形区域的不超过 k 的最大数值和。 题目数据保证总会存在一个数值和不超过 k 的矩形区域。 示例 1&#xff1a; 输入&#xff1a;matrix [[1,0,1],[0,-2,3]], k 2 输出&#xff1a;2 解释&…

centos7.4二进制安装mysql

1&#xff1a;下载二进制安装包&#xff08;安装时确保没有mysql数据库服务器端&#xff09;&#xff1a; mariadb-10.2.12-linux-x86_64.tar.gz、 mariadb-10.2.12.tar.gz。2&#xff1a;创建系统账号指定shell类型&#xff08;默认自动创建同名的组&#xff09;3&#xff1a;…

批梯度下降 随机梯度下降_梯度下降及其变体快速指南

批梯度下降 随机梯度下降In this article, I am going to discuss the Gradient Descent algorithm. The next article will be in continuation of this article where I will discuss optimizers in neural networks. For understanding those optimizers it’s important to…

java作业 2.6

//程序猿&#xff1a;孔宏旭 2017.X.XX /**功能&#xff1a;在键盘输入一个三位数&#xff0c;求它们的各数位之和。 *1、使用Scanner关键字来实现从键盘输入的方法。 *2、使用取余的方法将各个数位提取出来。 *3、最后将得到的各个数位相加。 */ import java.util.Scanner; p…

ubuntu 16.04 挂载新硬盘

2、挂载数据盘 mkdir /datausrubuntu:~$ lsblkNAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTsda 8:0 0 465.8G 0 disk sda1 8:1 0 512M 0 part /boot/efisda2 8:2 0 464.3G 0 part /sda3 8:3 0 976…

Go语言实战 : API服务器 (2) 运行流程

1.API服务器的总流程 分为两步&#xff1a; 启动API服务器API服务器对HTTP请求进行处理 2.API服务器启动流程 解析配置文件&#xff0c;利用配置文件完成对服务器的初始化配置初始化logger&#xff0c;开启日志记录与数据库建立连接设置http连接&#xff08;例如设置响应头…

Linux 命令 之查看程序占用内存

2019独角兽企业重金招聘Python工程师标准>>> 查看PID ps aux | grep nginx root 3531 0.0 0.0 18404 832 ? Ss 15:29 0:00 nginx: master process ./nginx 查看占用资源情况 pmap -d 3531 top -p 3531 转载于:https://my.oschina.net/mengzha…

逻辑回归 自由度_回归自由度的官方定义

逻辑回归 自由度Back in middle and high school you likely learned to calculate the mean and standard deviation of a dataset. And your teacher probably told you that there are two kinds of standard deviation: population and sample. The formulas for the two a…

动画电影的幕后英雄怎么说好_幕后编码面试-好与坏

动画电影的幕后英雄怎么说好Interviewing is a skill in and of itself. You can be the best developer in the world but you may still screw up an interview.面试本身就是一种技能。 您可以成为世界上最好的开发人员&#xff0c;但您仍可能会搞砸面试。 How many times h…

数据库之DML

1、表的有关操作&#xff1a; 1.1、表的创建格式&#xff1a; CREATE TABLE IF NOT EXISTS 表名(属性1 类型&#xff0c;属性2 类型&#xff0c;....&#xff0c;属性n 类型&#xff09;&#xff1b;# 标记部分表示可以省略 1.2、表的修改格式&#xff1a;ALTER table 表名 ADD…

网络对抗技术作业一 201421410031

姓名&#xff1a;李冠华 学号&#xff1a;201421410031 指导教师&#xff1a;高见 1、虚拟机安装与调试 安装windows和linux&#xff08;kali&#xff09;两个虚拟机&#xff0c;均采用NAT网络模式&#xff0c;查看主机与两个虚拟机器的IP地址&#xff0c;并确保其连通性。同时…

生存分析简介:Kaplan-Meier估计器

In my previous article, I described the potential use-cases of survival analysis and introduced all the building blocks required to understand the techniques used for analyzing the time-to-event data.在我的上一篇文章中 &#xff0c;我描述了生存分析的潜在用例…

强密码检测

#!/usr/bin/env python # -*- coding: utf-8 -*- #1. 密码长度应该大于或等于8位 #2. 密码必须包含数字、字母及特殊字符三种组合 nums 0123456789 chars1 abcdefghijklmnopqrstuvwxyz chars2 ABCDEFGHIJKLMNOPQRSTUVWXYZ symbols r!#$%^&*()_-/*{}[]\|";:/?…

OD Linux发行版本

题目描述&#xff1a; Linux操作系统有多个发行版&#xff0c;distrowatch.com提供了各个发行版的资料。这些发行版互相存在关联&#xff0c;例如Ubuntu基于Debian开发&#xff0c;而Mint又基于Ubuntu开发&#xff0c;那么我们认为Mint同Debian也存在关联。 发行版集是一个或多…

Go语言实战 : API服务器 (3) 服务器雏形

简单API服务器功能 实现外部请求对API 服务器健康检查和状态查询&#xff0c;返回响应结果 1.API服务器的状态监测 以内存状态检测为例&#xff0c;获取当前服务器的健康状况、服务器硬盘、CPU 和内存使用量 func RAMCheck(c *gin.Context) {u, _ : mem.VirtualMemory()//获…