innobackupex基于binlog日志的恢复 -- 使用mysqlbinlog恢复
备份
先做一次完整备份:
innobackupex --defaults-file=/etc/my.cnf --user root --password chengce243 /data/mysqlbak
执行完命令后,/data/mysqlbak 目录下会生成目录: 2018-08-06_14-19-12
记下操作后的 position 点
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| restoredb-bin.000001 | 154 | | | |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
多切换几次 binlog日志
mysql> flush logs;
[root@restoredb ~]# ll /data/mysql/*bin*
-rw-r----- 1 mysql mysql 205 Aug 6 14:26 /data/mysql/restoredb-bin.000001
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000002
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000003
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000004
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000005
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000006
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000007
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000008
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000009
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000010
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000011
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000012
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000013
-rw-r----- 1 mysql mysql 154 Aug 6 15:09 /data/mysql/restoredb-bin.000014
-rw-r----- 1 mysql mysql 322 Aug 6 15:09 /data/mysql/restoredb-bin.index
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| restoredb-bin.000014 | 154 | | | |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
插入测试数据
insert into testtab values (20001,'full_bak');
多切换几次 binlog日志
mysql> flush logs;
再插入测试数据
insert into testtab values (20002,'full_bak2');
[root@restoredb ~]# ll /data/mysql/*bin*
-rw-r----- 1 mysql mysql 205 Aug 6 14:26 /data/mysql/restoredb-bin.000001
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000002
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000003
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000004
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000005
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000006
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000007
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000008
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000009
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000010
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000011
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000012
-rw-r----- 1 mysql mysql 205 Aug 6 15:09 /data/mysql/restoredb-bin.000013
-rw-r----- 1 mysql mysql 479 Aug 6 15:13 /data/mysql/restoredb-bin.000014
-rw-r----- 1 mysql mysql 205 Aug 6 15:13 /data/mysql/restoredb-bin.000015
-rw-r----- 1 mysql mysql 205 Aug 6 15:13 /data/mysql/restoredb-bin.000016
-rw-r----- 1 mysql mysql 205 Aug 6 15:13 /data/mysql/restoredb-bin.000017
-rw-r----- 1 mysql mysql 429 Aug 6 15:14 /data/mysql/restoredb-bin.000018
-rw-r----- 1 mysql mysql 414 Aug 6 15:13 /data/mysql/restoredb-bin.index
再插入测试数据
insert into testtab values (20003,'full_bak3');
停止MySQL服务并清空数据目录:
/etc/init.d/mysqld stop
备份binlog(正常情况下,这些binlog会备份到binlog server,此处用复制模拟binlog server备份路径)。
[root@restoredb mysql]# cp *bin* /data/mysqlbak/binlogbak/
[root@restoredb mysql]# ll /data/mysqlbak/binlogbak/
total 76
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000001
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000002
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000003
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000004
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000005
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000006
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000007
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000008
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000009
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000010
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000011
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000012
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000013
-rw-r----- 1 root root 479 Aug 6 15:19 restoredb-bin.000014
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000015
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000016
-rw-r----- 1 root root 205 Aug 6 15:19 restoredb-bin.000017
-rw-r----- 1 root root 727 Aug 6 15:19 restoredb-bin.000018
-rw-r----- 1 root root 414 Aug 6 15:19 restoredb-bin.index
清空数据文件
rm -rf /data/mysql/*
恢复
直接复制 /data/mysqlbak/2018-08-06_14-19-12 目录下文件到 /data/mysql 目录下,然后修改权限
cp -r /data/mysqlbak/2018-08-06_14-19-12/* /data/mysql/
chown -R mysql:mysql /data/mysql
直接启动数据
/etc/init.d/mysqld start
查看此时的testtab表:
mysql> select *from testtab;
+-------+-----------+
| id | name |
+-------+-----------+
| 10000 | test |
| 10001 | incr_bak |
| 10002 | incr_bak2 |
+-------+-----------+
mysql> show master status;
+----------------------+----------+--------------+------------------+-------------------+
| File | Position | Binlog_Do_DB | Binlog_Ignore_DB | Executed_Gtid_Set |
+----------------------+----------+--------------+------------------+-------------------+
| restoredb-bin.000001 | 154 | | | |
+----------------------+----------+--------------+------------------+-------------------+
1 row in set (0.00 sec)
测试数据 (20001,'full_bak')并不存在,说明binlog日志的数据并没有恢复
开始恢复binlog日志
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000001 --start-position=154 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000002 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000003 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000004 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000005 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000006 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000007 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000008 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000009 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000010 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000011 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000012 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000013 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000014 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000015 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000016 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000017 |mysql -u root -pchengce243
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000018 |mysql -u root -pchengce243
查看数据
mysql> select *from testtab;
+-------+-----------+
| id | name |
+-------+-----------+
| 10000 | test |
| 10001 | incr_bak |
| 10002 | incr_bak2 |
| 20001 | full_bak |
| 20002 | full_bak2 |
| 20003 | full_bak3 |
+-------+-----------+
6 rows in set (0.01 sec)
发现已经是最新的数据,已经恢复过来。
innobackupex基于binlog日志的恢复 -- 使用mysqlbinlog恢复的更多相关文章
- innobackupex基于binlog日志的恢复 -- 模拟slave恢复
说明:一般来说,如果恢复的binlog量不大,可以使用此方法来恢复:mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000018 |mysql - ...
- mysql之 innobackupex备份+binlog日志的完全恢复【转】
前言: MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点. 备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. ...
- mysql之 innobackupex备份+binlog日志的完全恢复(命令行执行模式)
前言:MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点.备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. 1. ...
- mysql通过binlog日志来恢复数据
简介 在生产的过程中有这么一个业务场景:比如我在2016-11-19 09:30:00 通过mysqldump的方式备份了数据库,但是在2016-11-19 10:30:00的时候数据库崩溃了,如果通 ...
- 使用全备+binlog日志恢复数据库
1.binlog日志类型 Statement 只记录执行的sql语句,磁盘占用少,但是恢复的时候容易出问题.InodeDB不能使用Statement . Row 记录修改后的具体数据,磁盘占用较多 M ...
- 实战演习:mysqlbinlog恢复bin-log数据
mysqlbinlog恢复bin-log数据 Binlog日志即binary log,是二进制日志文件,有两个作用,一个是增量备份,另一个是主从复制,即从节点同步主节点数据时获取的即是bin-log, ...
- (4.11)mysql备份还原——mysql闪回技术(基于binlog)
0.闪回技术与工具简介 mysql闪回工具比较流行三大类: [0.1]官方的mysqlbinlog:支持数据库在线/离线,用脚本处理binlog的输出,转化成对应SQL再执行.通用性不好,对正则.se ...
- MySQL binlog日志三种模式选择及配置
在认识binlog日志三种模式前,先了解一下解析binlog日志的命令工mysqlbinlog.mysqlbinlog工具的作用是解析mysql的二进制binlog日志内容,把二进制日志解析成可以在M ...
- (转)Mysql数据库之Binlog日志使用总结
使用mysqlbinlog提取二进制日志 原文:http://blog.csdn.net/leshami/article/details/41962243 MySQL binlog日志记录了MySQL ...
随机推荐
- macbook 集成 Kaleidoscope 环境
Kaleidoscope 在macbook ,算是非常出色的file diff 工具了,唯一一个缺点就是:贵. 在网上找了一个科学实用版,暂时先这么用着吧(此处强烈建议有条件的朋友,支持正版). 作者 ...
- EOS 智能合约编写(一)
本文编写了一个简单的EOS智能合约,实现用户管理和资产管理,包括存钱,取钱,转帐的功能,旨在学习如何编写自己的EOS合约功能. 系统:Ubuntu EOS版本:v1.1.1 一.智能合约代码 ...
- 小程序组件的继承 - behavior
1.目录结构 demo-one 和 demo-two 一起公用一些属性 和 方法 存在demo-beh.js中 需要像模块一样导出 2.调用的方法: // components/demo-class/ ...
- QPS,TPS,吞吐量,响应时间详解及关系
并发数 并发数是指系统同时能处理的请求数量,这个也是反应了系统的负载能力 吞吐量吞吐量是指单位时间内系统能处理的请求数量,体现系统处理请求的能力,这是目前最常用的性能测试指标 响应时间RT(Respo ...
- BZOJ 2973 石头游戏 矩乘加速递推
FFFFFFF,看了一上午才看懂,又调了一中午.....我终于明白为何自己如此菜了qwq 这个题加速的思路是:因为每个序列的长度小于6,他们的lcm是60,所以六十次以后就会回到原来的序列. 加速的就 ...
- 文件拷贝io nio比较
import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.BufferedRead ...
- ThrowableUtil
public class ThrowableUtil { public static Throwable getDeepestCause(final Throwable throwable) { in ...
- java——方法重载与重写、构造方法、this关键字、static关键字、strictfp关键字、类的导入
Java SE5新增加@Override注解,它并不是关键字,但是可以把它当作关键字使用.当你想要覆写(重写)某个方法时,可以选择添加这个注解,在你不留心重载而并非覆写了该方法时,编译器就会生成一条错 ...
- SpringBoot源码篇:深度分析SpringBoot如何省去web.xml
一.前言 从本博文开始,正式开启Spring及SpringBoot源码分析之旅.这可能是一个漫长的过程,因为本人之前阅读源码都是很片面的,对Spring源码没有一个系统的认识.从本文开始我会持续更新, ...
- php函数超实用
DateTime DateTime::addDateTime::diffDateTime::formatDateTime::modifyDateTime::sub... * DateInterval ...