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 ...
随机推荐
- 令牌Token和会话Session原理与攻略
本篇文章将从无到完整的登录框架或API详细讲述登录令牌原理.攻略等安全点. 有些协议或框架也喜欢把令牌叫票据(Ticket),不论是APP还是Web浏览器,很多框架或协议都用到了本文所说的这套类似的认 ...
- svg动画 animate
最近使用到svg的动画animate,简单总结下animate的主要属性: 1.定义:SVG 的animate 动画元素放在形状元素的内部,用来定义一个元素的某个属性如何踩着时点改变.在指定持续时间里 ...
- MCP|XN|Decreased Antibiotic Susceptibility Driven by Global Remodeling of the Klebsiella pneumoniae Proteome(肺炎杆菌通过整体重构蛋白质组降低抗生素敏感性)
文献名:Decreased Antibiotic Susceptibility Driven by Global Remodeling of the Klebsiella pneumoniae Pro ...
- “戏精少女”的pandas学习之路,你该这么学!No.5
如果文章图片无法观看,请前往CSDN博客观看 https://blog.csdn.net/hihell 戏精博主即将上线 就在上一篇,梦想橡皮擦这位博主经过艰苦的努力 终于能创建一个dataframe ...
- CF987A Infinity Gauntlet 模拟
You took a peek on Thanos wearing Infinity Gauntlet. In the Gauntlet there is a place for six Infini ...
- CF616D Longest k-Good Segment
题目描述 给定一个包含\(n\)个整数的序列\(a\),\(0\le a_i \le 10^6\),询问不重复数字个数\(\le k\)的最长区间的左右端点.如果有多解输出任意一组. 输入输出格式 输 ...
- POJ1032 Parliament
题目来源:http://poj.org/problem?id=1032 题目大意:给定一个正整数N(5<=N<=1000),将N拆为若干个不同的数使得它们的乘积最大(找到一组互不相等,和为 ...
- git 工作中常用命令(结合vscode学习git 命令)
作为一名前端开发,大家在工作中常常使用什么开发工具呢,我觉得我首选的是vscode,他配合git使用起来非常方便. 工作中常用三个命令: git终端常使用: git add . git commit ...
- bitnami-redmine Apache服务启动不起来
方法一: 通过 netstat -a -o 查看端口占用情况,关闭调用相关端口的进程. c:\> netstat -a -o Active Connections Proto Local ...
- JD孔_20160912
1.买的 “航嘉(Huntkey)大白803 8位3米 总控开关 防过载保护 插座/排插/拖” http://item.jd.com/1786149.html#product-detail 2.