innobackupex基于binlog日志的恢复 -- 模拟slave恢复
说明:
一般来说,如果恢复的binlog量不大,可以使用此方法来恢复:
mysqlbinlog /data/mysqlbak/binlogbak/restoredb-bin.000018 |mysql -u root -pchengce243
但是如果binlog量非常大,使用此方法会非常慢,下面介绍一种方法,让MySQL模拟成slave恢复,速度非常快。
测试表中数据
mysql> select * from testdb.testtab;
+-------+-----------+
| id | name |
+-------+-----------+
| 10000 | test |
| 10001 | incr_bak |
| 10002 | incr_bak2 |
+-------+-----------+
备份
先做一次完整备份:
innobackupex --defaults-file=/etc/my.cnf --user root --password chengce243 /data/mysqlbak
执行完命令后,/data/mysqlbak 目录下会生成目录: 2018-08-07_15-11-36
多切换几次 binlog日志
mysql> flush logs;
插入测试数据
insert into testtab values (20001,'full_bak');
多切换几次 binlog日志
mysql> flush logs;
再插入测试数据
insert into testtab values (20002,'full_bak2');
多切换几次 binlog日志
mysql> flush logs;
[root@restoredb ~]# ll /data/mysql/*bin*
[root@restoredb mysql]# ll /data/mysql/*bin*
-rw-r----- 1 mysql mysql 205 Aug 7 15:12 /data/mysql/restoredb-bin.000001
-rw-r----- 1 mysql mysql 205 Aug 7 15:12 /data/mysql/restoredb-bin.000002
-rw-r----- 1 mysql mysql 205 Aug 7 15:12 /data/mysql/restoredb-bin.000003
-rw-r----- 1 mysql mysql 479 Aug 7 15:13 /data/mysql/restoredb-bin.000004
-rw-r----- 1 mysql mysql 205 Aug 7 15:13 /data/mysql/restoredb-bin.000005
-rw-r----- 1 mysql mysql 480 Aug 7 15:13 /data/mysql/restoredb-bin.000006
-rw-r----- 1 mysql mysql 205 Aug 7 15:13 /data/mysql/restoredb-bin.000007
-rw-r----- 1 mysql mysql 205 Aug 7 15:13 /data/mysql/restoredb-bin.000008
-rw-r----- 1 mysql mysql 205 Aug 7 15:13 /data/mysql/restoredb-bin.000009
-rw-r----- 1 mysql mysql 154 Aug 7 15:13 /data/mysql/restoredb-bin.000010
-rw-r----- 1 mysql mysql 230 Aug 7 15:13 /data/mysql/restoredb-bin.index
停止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 44
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000001
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000002
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000003
-rw-r----- 1 root root 479 Aug 7 15:14 restoredb-bin.000004
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000005
-rw-r----- 1 root root 480 Aug 7 15:14 restoredb-bin.000006
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000007
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000008
-rw-r----- 1 root root 205 Aug 7 15:14 restoredb-bin.000009
-rw-r----- 1 root root 177 Aug 7 15:14 restoredb-bin.000010
-rw-r----- 1 root root 230 Aug 7 15:14 restoredb-bin.index
清空数据文件
rm -rf /data/mysql/*
恢复
直接复制 /data/mysqlbak/2018-08-07_15-11-36 目录下文件到 /data/mysql 目录下,然后修改权限
cp -r /data/mysqlbak/2018-08-07_15-11-36/* /data/mysql/
chown -R mysql:mysql /data/mysql
直接启动数据
/etc/init.d/mysqld start
查看 binlog 和pos点
[root@restoredb mysql]# cat xtrabackup_binlog_info
restoredb-bin.000001 154
查看此时的testtab表:
mysql> select * from testdb.testtab;
+-------+-----------+
| id | name |
+-------+-----------+
| 10000 | test |
| 10001 | incr_bak |
| 10002 | incr_bak2 |
+-------+-----------+
测试数据 (20001,'full_bak')并不存在,说明binlog日志的数据并没有恢复
开始使用模拟slave的方式恢复binlog日志
1.随意change一个不存在的地址,格式和正常的一样。
change master to master_host='1',master_user='1',master_password='1',master_port=1,master_log_file='1',master_log_pos=1;
2.关闭 MySQL。
/etc/init.d/mysqld stop
3.把binlog rename成relaylog的名字。
cd /data/mysqlbak/binlogbak/
rename "bin" "relay-bin" *
4.把binlog移到定义的relaylog目录,如果存在对应文件,直接覆盖,并修改权限。
cp /data/mysqlbak/binlogbak/* /data/mysql/
chown mysql:mysql /data/mysql/restoredb-relay-bin.*
5.把rename后的binlog的绝对路径全部写到 restoredb-relay-bin.index文件,一行写一个。
/data/mysql/restoredb-relay-bin.000001
/data/mysql/restoredb-relay-bin.000002
/data/mysql/restoredb-relay-bin.000003
/data/mysql/restoredb-relay-bin.000004
/data/mysql/restoredb-relay-bin.000005
/data/mysql/restoredb-relay-bin.000006
/data/mysql/restoredb-relay-bin.000007
/data/mysql/restoredb-relay-bin.000008
/data/mysql/restoredb-relay-bin.000009
/data/mysql/restoredb-relay-bin.000010
6.修改 relay-log.info 里面配置,修改第二行和第三行,第二行修改为index文件里面的第一行,第三行指定POS点。
7.启动 MySQL。
/etc/init.d/mysqld start
8.启动 sql_thread进程。
start slave sql_thread;
查看数据
mysql> select * from testdb.testtab;
+-------+-----------+
| id | name |
+-------+-----------+
| 10000 | test |
| 10001 | incr_bak |
| 10002 | incr_bak2 |
| 20001 | full_bak |
| 20002 | full_bak2 |
+-------+-----------+
6 rows in set (0.01 sec)
发现已经是最新的数据,已经恢复过来。
innobackupex基于binlog日志的恢复 -- 模拟slave恢复的更多相关文章
- innobackupex基于binlog日志的恢复 -- 使用mysqlbinlog恢复
备份先做一次完整备份: innobackupex --defaults-file=/etc/my.cnf --user root --password chengce243 /data/mysqlba ...
- mysql之 innobackupex备份+binlog日志的完全恢复【转】
前言: MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点. 备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. ...
- mysql之 innobackupex备份+binlog日志的完全恢复(命令行执行模式)
前言:MySQL的完全恢复,我们可以借助于完整的 备份+binlog 来将数据库恢复到故障点.备份可以是热备与逻辑备份(mysqldump),只要备份与binlog是完整的,都可以实现完全恢复. 1. ...
- 使用全备+binlog日志恢复数据库
1.binlog日志类型 Statement 只记录执行的sql语句,磁盘占用少,但是恢复的时候容易出问题.InodeDB不能使用Statement . Row 记录修改后的具体数据,磁盘占用较多 M ...
- (4.11)mysql备份还原——mysql闪回技术(基于binlog)
0.闪回技术与工具简介 mysql闪回工具比较流行三大类: [0.1]官方的mysqlbinlog:支持数据库在线/离线,用脚本处理binlog的输出,转化成对应SQL再执行.通用性不好,对正则.se ...
- 主从同步工作过程?(binlog日志)
在从数据库服务器的/var/lib/mysql/master.info 记录连接主数据库服务器信息文件mail-relay-bin.XXXXXX 中继日志文件(记录SQL)mail-relay ...
- 删除MySQL binlog日志的方法
对于比较繁忙的OLTP(在线事务处理)系统,由于每天生成日志量大,这些日志如果长时间不清除,将会对磁盘空间带来很大的浪费.因此,定期删除日志是DBA维护MySQL数据库的一个重要工作内容.下面跟大家分 ...
- MySQL复制(二)--基于二进制日志文件(binlog)配置复制
基础环境: 主库 从库 服务器IP地址 192.168.10.11 192.168.10.12 版本 5.7.24 5.7.24 已存在的数据库 mysql> show databases; ...
- 解说mysql之binlog日志以及利用binlog日志恢复数据
众所周知,binlog日志对于mysql数据库来说是十分重要的.在数据丢失的紧急情况下,我们往往会想到用binlog日志功能进行数据恢复(定时全备份+binlog日志恢复增量数据部分),化险为夷! 废 ...
随机推荐
- Oracle 12c登陆sys用户的方法
本机安装过oracle 12c之后,发现用sql plus执行命令conn sys/change_on_install as sysdba; 提示如下图: 后在网上搜索此问题,需要先登陆system账 ...
- [Xcode 实际操作]四、常用控件-(11)UIDatePicker日期时间选择器
目录:[Swift]Xcode实际操作 本文将演示日期拾取器的使用. 使用日期拾取器,可以快速设置和选择日期与时间. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] ...
- python编译环境安装指南
windows系统先安装python解释器: windows版本exe安装文件下载地址:https://www.python.org/ftp/python/2.7.12/python-2.7.12.m ...
- Linux调优(文件系统)
查看单个文件是否发生碎片化(被存在磁盘非连续磁盘块上) # filefrag -v /var/log/messages 查看文件系统是否存在大量碎片(会显示空闲离散的块) # dumpe2fs /de ...
- 牛客 PUBG
题目链接:点击打开链接 题目大意:跑毒,跑到安全区,每个地方有敌人,输出路线经过的最少敌人的数量:-1是起点. -2是安全区 输入 5 6 6 0 -2 3 4 2 1 2 1 2 2 8 9 7 8 ...
- MySQL服务器与MySQL57服务器区别与不同处在哪里,他们各自的领域范围,能不能同时启动服务?
安装了MySQL-5.7.18.0版本数据库,版本中包含了MySQL Workbench可视化试图工具,在服务列表栏中会有MySQL的两个服务器:如果启动第一项MySQL服务器就只能操作数据库,外界不 ...
- Jmeter性能测试-----参数化方法CSVRead函数
Jmeter里面参数化的方法有很多,大家可以结合自己的项目情况来使用哪种方式来调用测试 数据. 下面我给大家介绍下Jmeter里CSVRead函数来获取参数的方法: 我这里已去到直播间发表评论为例(这 ...
- 3、kvm配置vnc
配置kvm通过vnc访问 virsh edit privi-server 添加如下配置: <graphics type='vnc' port='5901' autoport='no' liste ...
- Java中文编程开发,让Java编写更改复杂
额?what? 在B站无意中看到一张图,无意间已发了自己的好奇,实际上我早就知道Java支持Unicode编码也就是可以使用中文命名规则,但是我们可以包装一下,玩一玩完全使用中文编码也未尝不可,但是经 ...
- OpenLayers v4.2.0 -----地图延迟加载;
官方:http://openlayers.org/en/latest/examples/lazy-source.html <!DOCTYPE html> <html> < ...