我的编程空间,编程开发者的网络收藏夹
学习永远不晚

mysqlbinlog制定区间恢复数据

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

mysqlbinlog制定区间恢复数据

一个有意思的场景:

mysql> show databases;

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

| Database           |

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

| information_schema |

| ZLECUBE            |

| log                |

| mysql              |

| performance_schema |

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

5 rows in set (0.00 sec)


mysql> 

mysql> 

mysql> create database test;

Query OK, 1 row affected (0.00 sec)


mysql> 

mysql> use test;

Database changed

mysql> 

mysql> 

mysql> create table aa(id int);

Query OK, 0 rows affected (0.03 sec)


mysql> 

mysql> flush logs;

Query OK, 0 rows affected (0.00 sec)


mysql> \q

Bye

root@debian:/var/lib/mysql/log/binlog# ls -l

total 56

-rw-rw---- 1 mysql mysql 150 Feb  3 19:25 mysql-bin.000017

-rw-rw---- 1 mysql mysql 150 Feb  4 19:25 mysql-bin.000018

-rw-rw---- 1 mysql mysql 150 Feb  5 19:25 mysql-bin.000019

-rw-rw---- 1 mysql mysql 150 Feb  6 19:25 mysql-bin.000020

-rw-rw---- 1 mysql mysql 150 Feb  7 15:04 mysql-bin.000021

-rw-rw---- 1 mysql mysql 314 Feb  7 19:25 mysql-bin.000022

-rw-rw---- 1 mysql mysql 150 Feb  8 19:25 mysql-bin.000023

-rw-rw---- 1 mysql mysql 150 Feb  9 19:25 mysql-bin.000024

-rw-rw---- 1 mysql mysql 150 Feb 10 19:25 mysql-bin.000025

-rw-rw---- 1 mysql mysql 150 Feb 11 19:25 mysql-bin.000026

-rw-rw---- 1 mysql mysql 150 Feb 12 19:25 mysql-bin.000027

-rw-rw---- 1 mysql mysql 319 Feb 13 15:08 mysql-bin.000028

-rw-rw---- 1 mysql mysql 107 Feb 13 15:08 mysql-bin.000029

-rw-rw---- 1 mysql mysql 559 Feb 13 15:08 mysql-bin.index



root@debian:/var/lib/mysql/log/binlog# mysqlbinlog mysql-bin.000028

找到如下的信息:


# at 107

#170213 15:08:21 server id 1  end_log_pos 190 Query thread_id=1435 exec_time=0 error_code=0

SET TIMESTAMP=1486969701;

SET @@session.pseudo_thread_id=1435;

SET @@session.foreign_key_checks=1, @@session.sql_auto_is_null=0, @@session.unique_checks=1, @@session.autocommit=1;

SET @@session.sql_mode=0;

SET @@session.auto_increment_increment=1, @@session.auto_increment_offset=1;

;

SET @@session.character_set_client=33,@@session.collation_connection=33,@@session.collation_server=8;

SET @@session.lc_time_names=0;

SET @@session.collation_database=DEFAULT;

create database test

;

# at 190

#170213 15:08:39 server id 1  end_log_pos 276 Query thread_id=1435 exec_time=1 error_code=0

use `test`;

SET TIMESTAMP=1486969719;

create table aa(id int)

;

# at 276

#170213 15:08:56 server id 1  end_log_pos 319 Rotate to mysql-bin.000029  pos: 4

DELIMITER ;

# End of log file




删除刚刚的test库


mysql> drop database test;

Query OK, 1 row affected (0.01 sec)


mysql> \q

Bye



现在进行恢复:


root@debian:/var/lib/mysql/log/binlog# mysqlbinlog --start-position=190 --stop-position=319  mysql-bin.000028 |mysql -uroot -pxxx

root@debian:/var/lib/mysql/log/binlog# 


mysql> show tables;

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

| Tables_in_test |

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

| aa             |

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

1 row in set (0.00 sec)


mysql> 


已恢复。





可以重复恢复。


mysql> select count(*) from aa;

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

| count(*) |

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

|        4 |

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



root@debian:/var/lib/mysql/log/binlog# mysqlbinlog --start-position=793  --stop-position=1093  mysql-bin.000029 |mysql -uroot -pxxx

root@debian:/var/lib/mysql/log/binlog# 

只恢复从日志位置793到1093的信息,这里面有有两个插入记录。


mysql> select count(*) from aa;

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

| count(*) |

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

|        6 |

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

1 row in set (0.00 sec)



此外,还可以--start-datetime --stop-datetime来指定恢复时间。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

mysqlbinlog制定区间恢复数据

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

oracle怎么恢复指定时间的数据

要恢复Oracle数据库中指定时间的数据,可以按照以下步骤进行操作:1. 首先,确定你想要恢复的时间点。可以通过查询数据库的日志文件或备份文件来确定。2. 如果你有数据库的备份文件,请将备份文件恢复到一个临时位置,确保备份文件是完整的。3.
2023-08-21

mysql利用mysqlbinlog命令恢复误删除数据的实现

实验环境: MYSQL 5.7.22 开启二进志日志 日志格式MIXED 实验过程: 1、执行:FLUSH LOGS; master-bin.000014 文件就是新生成的文件刷新日志是为了实验内容更直观,更容易观察到整个实验过程的内容。
2022-05-23

SQL级别数据恢复时间目标设定

SQL级别数据恢复时间目标的设定取决于组织的需求和风险承受能力。一般来说,以下是一些可能的数据恢复时间目标:实时恢复:某些组织需要实时数据恢复,即在发生数据丢失或破坏时能够立即将数据还原到最新状态。这需要实时备份和恢复技术,通常用于金融、医
SQL级别数据恢复时间目标设定
2024-08-03

sqlserver数据库怎么恢复到指定时间点

要将SQL Server数据库恢复到指定时间点,您可以按照以下步骤操作:首先,您需要确保已启用数据库的完整或者简单恢复模式。如果数据库处于简单恢复模式下,则无法进行时间点恢复。使用以下T-SQL语句备份数据库到指定时间点:BACKUP DA
sqlserver数据库怎么恢复到指定时间点
2024-04-09

matlab怎么恢复工作区数据

在MATLAB中恢复工作区数据有两种方法:1. 使用命令`load`重新加载保存的工作区数据文件。例如,如果你保存了名为`data.mat`的工作区数据文件,可以使用以下命令将数据加载回工作区:```matlabload('data.mat
2023-09-15

深入剖析MongoDB的数据复制与故障恢复机制

深入剖析MongoDB的数据复制与故障恢复机制引言:随着大数据时代的到来,数据的存储和管理变得愈发重要。在数据库领域,MongoDB作为一种广泛应用的NoSQL数据库,其数据复制和故障恢复机制对于保障数据的可靠性和高可用性至关重要。本文将深
深入剖析MongoDB的数据复制与故障恢复机制
2023-11-04

MyBatis视图在数据备份恢复中的恢复时间目标和恢复点目标

MyBatis是一个持久层框架,它本身并不直接涉及数据备份恢复的过程。数据备份恢复通常是由数据库管理系统(如MySQL、PostgreSQL等)来处理的。因此,MyBatis视图在数据备份恢复中的恢复时间目标和恢复点目标并不是由MyBati
MyBatis视图在数据备份恢复中的恢复时间目标和恢复点目标
2024-10-15

Oracle Value函数在数据备份恢复脚本的定制化中的应用

Oracle Value函数在数据备份恢复脚本的定制化中具有广泛的应用。Value函数能够返回表达式中某个特定位置上的值,这一特性使得它在处理复杂的数据备份和恢复场景时非常有用。以下是一些具体的应用场景:数据筛选与转换:在备份恢复脚本中,可
Oracle Value函数在数据备份恢复脚本的定制化中的应用
2024-10-09

MySQL插入锁与数据库数据恢复时间预估

在MySQL中,插入锁是一种在插入数据时对表进行锁定以防止其他事务同时对同一记录进行操作的锁。当一个事务在插入数据时获取了插入锁,其他事务必须等待该事务完成插入操作后才能继续对该表进行操作。数据恢复时间的预估取决于多个因素,包括数据库的大
MySQL插入锁与数据库数据恢复时间预估
2024-08-14

Oracle数据库ODBC连接与数据库恢复点目标(RPO)和恢复时间目标(RTO)

Oracle数据库ODBC连接是一种通过ODBC(Open Database Connectivity)技术来连接Oracle数据库的方式。ODBC是一种标准的数据库访问接口,可以使应用程序与数据库进行通信,从而实现数据的读取和写入等操作。
Oracle数据库ODBC连接与数据库恢复点目标(RPO)和恢复时间目标(RTO)
2024-07-16

Mysql数据库中怎么按时间点恢复

Mysql数据库中怎么按时间点恢复,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。1. 按时间点恢复的技术实现如果客户在某时间节点由于误操作,导致数据丢失,RDS管控服务是如
2023-06-20

编程热搜

目录