mysqlbinglog基于即时点还原
mysqlbinlog介绍
要想从二进制日志恢复数据,你需要知道当前二进制日志文件的路径和文件名。
一般可以从选项文件(即my.cnf or my.ini,取决于你的系统)中找到路径。
(mysql5.7开启binglog 时需要同时设置server-id否则无法启动)
要想确定当前的二进制日志文件的文件名,输入下面的MySQL语句:
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)
mysqlbinglog基于即时点还原的更多相关文章
- elasticsearch数据基于snapshot的还原备份+版本升级
前言 之前安装的是elasticsearch-6.5.0,漏洞扫描报The remote web server hosts a Java application that is vulnerable. ...
- MySQL基于mysqldump及lvmsnapshot备份恢复
一.备份对象 数据 配置文件 代码:存储过程,存储函数,触发器 跟复制相关的配置 二进制日志文件 二.备份工具 mysqldump:逻辑备份工具 InnoDB热备.MyISAM温备.Aria温备 备份 ...
- MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份]
MariaDB之基于Percona Xtrabackup备份大数据库[完整备份与增量备份] 1.Xtrabackup的安装 percona-xtrabackup-2.2.3-4982.el6.x86_ ...
- MySQL的备份和还原
MySQL的备份和还原 备份:副本 RAID1,RAID10:保证硬件损坏而不会业务中止: DROP TABLE mydb.tb1; 备份类型: 热备份.温备份和冷备 ...
- mysql数据库基于LVM快照的备份
lvm-snapshot: 基于LVM快照的备份 1.事务日志跟数据文件必须在同一个卷上 2.创建快照卷之前,要请求mysql的全局锁,在快照创建完成之后释放锁 3 ...
- MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot)
MySQL的备份和恢复-基于LVM快照的备份(lvm-snapshot) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.什么是快照卷 如上图所示,原卷和快照卷可以不一样大,因为 ...
- SQL2000的三种“故障还原模型”
一.SQL2000的三种“故障还原模型” 在数据库属性的“选项”页,“故障还原模型”栏,共有三项选择:简单.完全.大容量日志记录.它们的根本差别在于SQL2000对数据库日志的维护方式不同.下面逐个讲 ...
- Mysql数据库之备份还原(mysqldump,LVM快照,select备份,xtrabackup)
备份类型: 热备份:读写不受影响 温备份:仅可执行读备份 冷备份:离线备份,读写均不能执行,关机备份 物理备份和逻辑备份 物理备份:复制数据文件,速度快. 逻辑备份:将数据导出之文本文件中,必要时候, ...
- Mysql日志解析
修改Mysql配置 Mysql配置地址为: C:\Program Files (x86)\MySQL\MySQL Server 5.5 如果无法修改可以把my.ini拷贝出来,修改完后,再拷贝回去! ...
随机推荐
- Android JNI开发生成.h头文件问题(转)
在JNI开发中,首先要将建立的anroid类编译成.h文件,编译用到命令javah,由于第一次用,以前对java的编译过程也不怎么了解,所以走了好多弯路,网络没有对这一步的详细介绍,这里讲一下: 通过 ...
- 硬盘格式是MBR、GPT
装win7 64位要求硬盘格式是MBR 现在预装 Win8 的电脑大多是采用新版 UEFI 固件 + GPT 格式磁盘 GPT模式是针对整个硬盘的初始化而言,因此不存在某一个分区是GPT模式的说法.转 ...
- git warning: LF will be replaced by CRLF in...
如果你有git项目,在提交代码的过程中可能会碰到上面的警告,特别是的项目中包含序列化对象的时候,你可能要小心!! 警告的含义是说换行符的,不同的操作系统的换行符是不一致的,如果你不清楚,真得看看这个 ...
- Spark Streaming容错的改进和零数据丢失
本文来自Spark Streaming项目带头人 Tathagata Das的博客文章,他现在就职于Databricks公司.过去曾在UC Berkeley的AMPLab实验室进行大数据和Spark ...
- 常用chrome插件推荐
下面打红色的2个强烈推荐使用: FQ的: https://chrome.google.com/webstore/detail/ecross-free/njdjpgffklilbojbobbfecfcg ...
- Linux查看可执行程序所在路径
首先通过命令获得进程PID:如4285,然后执行下述命令 cd /proc/4285 ls -l 或直接ls -l /proc/4285 其中exe所在行即为可执行文件的全路经.如下图所示:
- light oj 1422 Halloween Costumes (区间dp)
题目链接:http://vjudge.net/contest/141291#problem/D 题意:有n个地方,每个地方要穿一种衣服,衣服可以嵌套穿,一旦脱下的衣服不能再穿,除非穿同样的一件新的,问 ...
- Ipython console in Spyder stuck on “connecting to kernel”
简短地记录下,今天排除的spyder的BUG, 现象:打开Spyder时其他正常,但是Ipython console 不能正常获取到kernel,一直转圈,显示“connecting to kerne ...
- MySql 查询数据库中所有表名
查询数据库中所有表名select table_name from information_schema.tables where table_schema='csdb' and table_type= ...
- Robotium编写测试用例如何模拟Junit4的BeforeClass和AfterClass方法1 - 条件判断法
本文来源于:http://blog.csdn.net/zhubaitian/article/details/39293883 Robotium的测试类ActivityInstrumentationTe ...