mysql 及时点还原_mysqlbinglog基于即时点还原

mysqlbinlog介绍

要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。

一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。

(mysql5.7开启binglog 时需要同时设置server-id否则无法启动)

要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:

4d74022e058a76b53cb83872ca1fc951.png

1. 指定恢复时间

举例说明,假设在今天上午10:00(今天是20016年4月22日),执行SQL语句来删除一个大表。要想恢复表和数据,

你可以恢复前晚上的备份,并输入:

mysqlbinlog --stop-date="2005-04-22 9:59:59" /var/log/mysql/mysql.123456 mysql -u root -pmypwd

该命令将恢复截止到在--stop-date选项中以DATETIME格式给出的日期和时间的所有数据。

如果你没有检测到几个小时后输入的错误的SQL语句,可能你想要恢复后面发生的活动。根据这些,你可以用起使日期和时间再次运行mysqlbinlog:

mysqlbinlog --start-date="2005-04-22 10:01:00" /var/log/mysql/mysql.123456 mysql -u root -pmypwd

在该行中,从上午10:01登录的SQL语句将运行。组合执行前夜的转储文件和mysqlbinlog的两行可以将所有数据恢复到上午10:00前一秒钟。你应检查日志以确保时间确切。

2. 指定恢复位置

它们的作用与起止日选项相同,不同的是给出了从日志起的位置号。使用日志位置是更准确的恢复方法,特别是当由于破坏性SQL语句同时发生许多事务的时候。

要想确定位置号,可以运行mysqlbinlog寻找执行了不期望的事务的时间范围,但应将结果重新指向文本文件以便进行检查。操作方法为:

mysqlbinlog --start-date="2005-04-22 9:55:00" --stop-date="2005-04-22 10:05:00" /var/log/mysql/mysql.123456 > /tmp/mysql_restore.sql

该命令将在/tmp目录创建小的文本文件,将显示执行了错误的SQL语句时的SQL语句。你可以用文本编辑器打开该文件,寻找你不要想重复的语句。

如果二进制日志中的位置号用于停止和继续恢复操作,应进行注释。用log_pos加一个数字来标记位置。使用位置号恢复了以前的备份文件后,你应从命令行输入下面内容:

mysqlbinlog --stop-position="368312" /var/log/mysql/mysql.123456 mysql -u root -pmypwd

mysqlbinlog --start-position="368315" /var/log/mysql/bin.123456 mysql -u root -pmypwd

上面的第1行将恢复到停止位置为止的所有事务。

下一行将恢复从给定的起始位置直到二进制日志结束的所有事务。

举个栗子:

1、创造数据:

mysql> flush logs;

插入数据:

mysql> insert into students values (3,'tt','nine');

Query OK, 1 row affected (0.01 sec)

mysql> insert into students(name,class) values ('tt','nine');

Query OK, 1 row affected, 1 warning (0.01 sec)

mysql> select * from students;

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

| id | name | class |

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

| 1 | hui | ten |

| 2 | haha | four |

| 3 | tt | nine |

| 0 | tt | nine |

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

4 rows in set (0.00 sec)

2、删除数据:

mysql> delete from students where id=0;

Query OK, 1 row affected (0.00 sec)

mysql> select * from students;

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

| id | name | class |

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

| 1 | hui | ten |

| 2 | haha | four |

| 3 | tt | nine |

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

3 rows in set (0.00 sec)

3、数据恢复:

把二进制日志转化为文本:

[root@super63 ~]# mysqlbinlog /var/lib/mysql/mysqllog.000003 >003.txt

编辑文本删除误操作的语句:

[root@super63 ~]# vim 003.txt

把里面误删除的语句删除

导入二进制日志数据:

[root@super63 ~]# mysql -uroot -p123456 <003.txt

查看数据(已经恢复):

mysql> select * from students;

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

| id | name | class |

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

| 1 | hui | ten |

| 2 | haha | four |

| 3 | tt | nine |

| 3 | tt | nine |

| 0 | tt | nine |

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

5 rows in set (0.00 sec)

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

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

相关文章

mysql 查询此时日期_mysql 查询日期

//查看本月数据SELECT*FROMcontent_publishWHEREdate_format(publish_time, "%Y %m") date_format(DATE_SUB(curdate(), INTERVAL 0 MONTH),"%Y %m")//查看上个月数据SELECT*FROMcontent_publishWHEREdate_format(publish_time, "%Y %m") date…

python mysql查表_python进阶(十、mysql:单表查询)

3.mysql数据库3.10 单表查询3.10.1. 简单查询查询在数据库中使用的频率是最高的&#xff1a;十次查询&#xff0c;一次增删改。1)建表2)插入数据3.10.1.1. 选择字段&#xff1a;selectselect 字段名1,字段名2…… from 表名 where 条件;3.10.1.2. 字段重命名(别名)&#xff1a;…

python常见的数值运算符_第18 p,Python中各种常用的运算符,特别是增量运算符...

原标题&#xff1a;第18 p&#xff0c;Python中各种常用的运算符&#xff0c;特别是增量运算符大家好&#xff0c;我是杨数Tos&#xff0c;这是《从零基础到大神》系列课程的第18篇文章&#xff0c;第二阶段的课程&#xff1a;Python基础知识&#xff1a;Python中各种常用的运算…

python画害羞的表情_用Python把你的朋友变成表情包

一、项目说明在日常生活中&#xff0c;我们经常会存取一些朋友们的丑照&#xff0c;在这个项目中&#xff0c;我们以萌萌哒的熊猫头作为背景&#xff0c;然后试着在背景图上加入朋友们的照片。效果如下图所示&#xff1a;二、实现步骤导入朋友的照片(前景照片)&#xff1b;处理…

java8安装_科学网—Java JDK 8 的安装以及环境变量的配置(Linux and Windows) - 彭勇的博文...

Java JDK 8 的安装以及环境变量的配置(Linux and Windows)JDK(Java Development Kit)包括了Java语言的编译器&#xff0c;可以在这里下载&#xff1a;根据操作系统选择相应的版本。Java JDK 8 在 Windows 8.1下的安装以及环境变量的配置在Windows 中&#xff0c;双击安装就是。…

龙贝格算法例题_数值分析实验报告——龙贝格求积算法 椭圆周长公式

椭圆周长公式数值分析实验报告 专业 信息与计算科学 班级 信计101 姓名 学号 协作队员 实验日期 2013 年 1 月 5 日 星期 六 成绩评定 教师签名 批改日期 题目 一、 问题提出 教材136页12题用龙贝格求积算法计算其近似值(加速3次) 地球卫星轨道是一个椭圆&#xff0c;椭圆周长的…

java控制台输入数组_Java控制台输入数组并逆序输出的方法实例

输入一个数组&#xff0c;然后颠倒次序进行输出&#xff0c;这种算法在程序开发中经常用到&#xff0c;下面我们通过一个小实例来看看怎么实现在控制台输入一个数组&#xff0c;并让其逆序输出的。源码&#xff1a;import java.util.Scanner;public class Test01 {public stati…

java map 优化_java.util.map和java.util.set的优化实现?

您可以通过以下方式节省一点内存:(a)使用A更强、更宽的哈希代码因此避免储存钥匙;(b)从阵列中分配自己,避免为每个哈希表条目创建单独的对象.如果它是有用的,这里是一个不加修饰的Java实现数字接收器我有时发现哈希表很有用。您可以直接在一个字符序列(包括字符串)上键入键,否则…

.net md5 java 偏移量_C# java MD5加密方不一致问题

说来惭愧&#xff0c;做开发几年了&#xff0c;一直在吸取&#xff0c;今天也写写自已关于技术的一点点理解&#xff0c;不正之处&#xff0c;请大家多多指点。由于之前开发的项目使用的是C#,用户信息使用的C#的MD5加密码方式&#xff0c;而现在需要切换到Java平台下&#xff0…

java 传递bean_Java:如何将值从类/ bean传递给servlet

您没有将某些内容传递给servlet.你只需让servlet访问一些东西.您应该摆脱main()方法并将数据库交互代码移动到DAO类中.我还给模型类(带有时区和位置)一个以大写字母开头的更敏感的名称.总而言之,您应该更新代码,使其看起来如下所示&#xff1a;模型类,区域(只要它有意义,任意你…

java程序员的电脑配置_JAVA程序员笔记本电脑推荐?

如果主要是做JAVA开发&#xff0c;那其实需要考虑的因素有&#xff1a;CPU性能必须过得去&#xff0c;因为java相对来说比较消耗CPU资源&#xff0c;当然是大型java应用&#xff0c;题主如果学习java的时候&#xff0c;倒不是特别重要&#xff0c;基本上2020年主流笔记本CPU都可…

java oracle sql 参数_oracle pl/sql之在java中调用带有输入输出参数的oracle存储过程...

只需注意一点输出参数是用CallableStatement里面的registerOutParameter方法注册进去存储过程&#xff1a;import java.sql.CallableStatement;import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.SQLException;imp…

linux mysql 静态库_Linux静态库与动态库实例详解

Linux静态库与动态库实例详解1. Linux 下静态链接库编译与使用首先编写如下代码&#xff1a;// main.c#include "test.h"int main(){test();return 0;}// test.h#includeusing namespace std;void test();// test.c#include "test.h"void test(){cout<&…

java计算距离_java实现计算地理坐标之间的距离

java实现计算两经纬度点之间的距离&#xff0c;直接上代码&#xff0c;具体解释请参考注释package com.jttx.poi.utils;import com.jttx.poi.entity.point;/*** created by louis on 2014/9/2.*/public class geoutils {/*** 计算两经纬度点之间的距离(单位&#xff1a;米)* pa…

java htmlparser 使用教程_HTMLParser使用详解(1)

在研究搜索引擎的开发中&#xff0c;对于HTML网页的处理是核心的一个环节。网上有很多开源的代码&#xff0c;对于Java来说&#xff0c;HTMLParser是比较著名并且得到广泛应用的一个。HTMLParser的主页是http://htmlparser.sourceforge.net/&#xff0c;最后的更新是2006年9月的…

python mysql autocommit_MySQLdb autocommit的坑

今天写的一个小功能&#xff0c;里面要用MySQLdb更新数据库&#xff0c;语句如下sql "update %s.account_operation set status1 where username%s" % (allResDBInfos[db], username)变量替换后&#xff0c;是下面的样子update suspects.account_operation set stat…

java怎么在android系统上运行_Android == 在Android系统上运行JAVA程序

在linux上运行java程序&#xff0c;直接用javac编译&#xff0c;再用java运行就行了。但是在Android上&#xff0c;由于虚拟机和pc端的不同&#xff0c;所以操作方法也是不一样的。如果想在Android上运行Hello world&#xff01;。则需要一下步骤。/* File Name: Hello.java */…

python火爆的原因_为什么Python这么火爆?原因是什么?

2021年FRM主要时间节点2021年02月第二阶段报名时间&#xff1a;2021/02/01 - 2021/03/31首次注册&#xff1a;$1200 USD / 非首次注册&#xff1a;$790 USD2021年05月第一阶段报名时间&#xff1a;2021/05/01 - 2021/07/31首次注册&#xff1a;$1000 USD / 非首次注册&#xff…

java hashtable 遍历_Java HashTable forEach()用法及代码示例

Hashtable类的forEach(BiConsumer)方法对哈希表的每个条目执行BiConsumer操作&#xff0c;直到已处理完所有条目或该操作引发异常。 BiConsumer操作是按迭代顺序执行的哈希表键值对的函数操作。方法遍历Hashtable的每个元素&#xff0c;直到该方法处理完所有元素或发生异常为止…

java dijkstra算法代码_[转载]Java实现dijkstra算法: 地图中任意起点寻找最佳路径...

最近在复习java&#xff0c;下学期要用&#xff0c;写这个练手. 技术较粗糙&#xff0c;见谅.代码里用的是这幅地图&#xff0c;根据实际情况更改&#xff0c;在addNode方法中这个是运行结果&#xff0c;起点和终点在 运行wrap(String qidian, String zhongdian) 时定义代码&a…