0

0

基于Innobackupex的不完全恢复

php中文网

php中文网

发布时间:2016-06-07 16:12:55

|

1250人浏览过

|

来源于php中文网

原创

对于MySQL的不完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到任意时刻。这里的不完全恢复(也叫时点恢复)是相对于完全恢复。本文主要演示了基于Innobackupex如何做一个不完全恢复,供大家参考。 a、创建演示环境 robin@localhost[

对于MySQL的不完全恢复,我们可以借助于Innobackupex的多重备份加上binlog来将数据库恢复到任意时刻。这里的不完全恢复(也叫时点恢复)是相对于完全恢复。本文主要演示了基于Innobackupex如何做一个不完全恢复,供大家参考。
a、创建演示环境 robin@localhost[(none)]> show variables like 'version'; --当前MySQL版本 +---------------+------------+ | Variable_name | Value | +---------------+------------+ | version | 5.6.12-log | +---------------+------------+ robin@localhost[(none)]> reset master; Query OK, 0 rows affected (0.03 sec) robin@localhost[(none)]> use tempdb; robin@localhost[tempdb]> create table tb(id smallint,val varchar(20)); robin@localhost[tempdb]> insert into tb values(1,'fullbak'); --创建一个全备 SHELL> innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock --defaults-file=/etc/my3606.cnf \ > /hotbak/full --no-timestamp b、创建一个增备 --在创建增备前插入一条记录到tb robin@localhost[tempdb]> insert into tb values(2,'Incbak'); SHELL> innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock --defaults-file=/etc/my3606.cnf \ > --incremental /hotbak/inc --incremental-basedir=/hotbak/full --no-timestamp --再次新增一条记录 robin@localhost[tempdb]> insert into tb values(3,'pointrecover'); Query OK, 1 row affected (0.01 sec) --记下当前的时间点用于后续的不完全恢复 robin@localhost[tempdb]> system date; Thu Dec 25 11:53:54 CST 2014 --模拟误操作 robin@localhost[tempdb]> truncate table tb; Query OK, 0 rows affected (0.01 sec) c、再次全备 SHELL> innobackupex --user=robin -password=xxx --port=3606 --socket=/tmp/mysql3606.sock --defaults-file=/etc/my3606.cnf \ > /hotbak/full2 --no-timestamp --全备后新增一张表 robin@localhost[tempdb]> create table tb_after_truncate(id int,val varchar(20)); Query OK, 0 rows affected (0.02 sec)3、演示恢复过程
--下面理清一下思路: --当前备份情况: 全备+增备+全备 --我们在增备之后truncate了表tb,然后又创建了一个全备,新建了一个表tb_after_truncate。 --此时我们需要将数据库恢复到truncate(误操作)之前 --解决方案:我们需要利用第一次的全备+增备+binglog来恢复到truncate前,当前第二次全备用不上。 a、先做基于全备的apply,注意,此时使用了--redo-only SHELL> i【本文来自鸿网互联 (http://www.68idc.cn)】nnobackupex --apply-log --redo-only --user=robin -password=xxx --port=3606 \ > --defaults-file=/etc/my3606.cnf /hotbak/full b、基于增备的apply, --此时没有--redo-only,如果有多个增备,仅仅最后一个增备无需指定--redo-only SHELL> innobackupex --apply-log --user=robin -password=xxx --port=3606 --defaults-file=/etc/my3606.cnf \ > /hotbak/full --incremental-dir=/hotbak/inc c、进行copy back SHELL> mysqldown -P3606 --copy back前关闭实例 SHELL> netstat -nltp|grep mysql|grep 3606 SHELL> mv /data/inst3606/data3606 /data/inst3606/data3606bk SHELL> mkdir -p /data/inst3606/data3606 SHELL> innobackupex --user=robin -password=xxx --port=3606 --copy-back /hotbak/full --defaults-file=/etc/my3606.cnf SHELL> chown -R mysql:mysql /data/inst3606/data3606 d、启动恢复后的实例 SHELL> mysqld_safe --defaults-file=/etc/my3606.cnf & SHELL> mysql -uroot -pxxx -P3606 -S /tmp/mysql3606.sock \ > -e "select * from tempdb.tb" Warning: Using a password on the command line interface can be insecure. +------+---------+ | id | val | +------+---------+ | 1 | fullbak | | 2 | Incbak | +------+---------+ --获取增量之后的log position SHELL> cd /hotbak/inc/ SHELL> more xtrabackup_binlog_info inst3606bin.000001 774 --这里使用了stop-datetime去将日志追加到truncate之前 SHELL> mysqlbinlog /data/inst3606/log/bin/inst3606bin.000001 --start-position=774 --stop-datetime="2014-12-25 11:53:54" \ > |mysql -urobin -pxxx -P3606 -S /tmp/mysql3606.sock --验证结果如下,可以看到已经恢复到truncate之前了 SHELL> mysql -uroot -pxxx -P3606 -S /tmp/mysql3606.sock \ > -e "select * from tempdb.tb" Warning: Using a password on the command line interface can be insecure. +------+--------------+ | id | val | +------+--------------+ | 1 | fullbak | | 2 | Incbak | | 3 | pointrecover | +------+--------------+ --如果我们需要继续恢复后面的事务,我们可以找出truncate前后位置,然后跳过这个position SHELL> mysqlbinlog /data/inst3606/log/bin/inst3606bin.000001 --start-datetime="2014-12-25 11:53:54"|grep truncate -A5 truncate table tb /*!*/; # at 1180 #141225 11:55:35 server id 3606 end_log_pos 1260 CRC32 0x12f55fc5 Query thread_id=928 exec_time=0 error_code=0 SET TIMESTAMP=1419479735/*!*/; /*!\C latin1 *//*!*/; -- create table tb_after_truncate(id int,val varchar(20)) /*!*/; # at 1392 #141225 13:06:47 server id 3606 end_log_pos 1415 CRC32 0xf956f311 Stop DELIMITER ; # End of log file --我们找出的position为1260,跳过1260之前的继续追加binlog SHELL> mysqlbinlog /data/inst3606/log/bin/inst3606bin.000001 --start-position=1260 \ > |mysql -urobin -pxxx -P3606 -S /tmp/mysql3606.sock --验证追加后的结果,可以看到表tb_after_truncate存在 [mysql@app ~]$ mysql -uroot -pxxx -P3606 -S /tmp/mysql3606.sock \ > -e "desc tempdb.tb_after_truncate" Warning: Using a password on the command line interface can be insecure. +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | val | varchar(20) | YES | | NULL | | +-------+-------------+------+-----+---------+-------+4、小结
f、也可以跳过故障点,继续追加后面的binlog日志至最新,如本文尾部的演示

 

远航CMS(yhcms)(分站版)2.6.5
远航CMS(yhcms)(分站版)2.6.5

远航CMS(yhcms)是一套基于PHP+MYSQL为核心开发的专业营销型企业建站系统。是国内首家免费+开源自带分站系统的php内容管理系统。长期以来不断的完善、创新,远航CMS会为您带来全新的体验!产品十大优势:模板分离:模板程序分离,深度二次开发三网合一:电脑/手机/微信 多终端访问自定义广告:图片/文字/动画定时发布:SEO维护,无需人工值守多词生成:栏目关键词多方案生成SEO设置:自定义U

下载

相关专题

更多
php源码安装教程大全
php源码安装教程大全

本专题整合了php源码安装教程,阅读专题下面的文章了解更多详细内容。

150

2025.12.31

php网站源码教程大全
php网站源码教程大全

本专题整合了php网站源码相关教程,阅读专题下面的文章了解更多详细内容。

88

2025.12.31

视频文件格式
视频文件格式

本专题整合了视频文件格式相关内容,阅读专题下面的文章了解更多详细内容。

90

2025.12.31

不受国内限制的浏览器大全
不受国内限制的浏览器大全

想找真正自由、无限制的上网体验?本合集精选2025年最开放、隐私强、访问无阻的浏览器App,涵盖Tor、Brave、Via、X浏览器、Mullvad等高自由度工具。支持自定义搜索引擎、广告拦截、隐身模式及全球网站无障碍访问,部分更具备防追踪、去谷歌化、双内核切换等高级功能。无论日常浏览、隐私保护还是突破地域限制,总有一款适合你!

61

2025.12.31

出现404解决方法大全
出现404解决方法大全

本专题整合了404错误解决方法大全,阅读专题下面的文章了解更多详细内容。

493

2025.12.31

html5怎么播放视频
html5怎么播放视频

想让网页流畅播放视频?本合集详解HTML5视频播放核心方法!涵盖<video>标签基础用法、多格式兼容(MP4/WebM/OGV)、自定义播放控件、响应式适配及常见浏览器兼容问题解决方案。无需插件,纯前端实现高清视频嵌入,助你快速打造现代化网页视频体验。

16

2025.12.31

关闭win10系统自动更新教程大全
关闭win10系统自动更新教程大全

本专题整合了关闭win10系统自动更新教程大全,阅读专题下面的文章了解更多详细内容。

12

2025.12.31

阻止电脑自动安装软件教程
阻止电脑自动安装软件教程

本专题整合了阻止电脑自动安装软件教程,阅读专题下面的文章了解更多详细教程。

5

2025.12.31

html5怎么使用
html5怎么使用

想快速上手HTML5开发?本合集为你整理最实用的HTML5使用指南!涵盖HTML5基础语法、主流框架(如Bootstrap、Vue、React)集成方法,以及无需安装、直接在线编辑运行的平台推荐(如CodePen、JSFiddle)。无论你是新手还是进阶开发者,都能轻松掌握HTML5网页制作、响应式布局与交互功能开发,零配置开启高效前端编程之旅!

2

2025.12.31

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 4.2万人学习

Rust 教程
Rust 教程

共28课时 | 4万人学习

Django 教程
Django 教程

共28课时 | 2.7万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号