0

0

MySQL备份与恢复之percona-xtrabackup实现增量备份及恢复_MySQL

php中文网

php中文网

发布时间:2016-06-01 13:27:01

|

1099人浏览过

|

来源于php中文网

原创

bitsCN.com

一 文章回顾

在上一篇文章,我们讲到percona-xtrabackup软件的使用,这一篇文章我们讲解percona-xtrabackup实现增量备份及恢复。

 

二 增量备份示意图

 

/

三 percona-xtrabackup实现增量备份及恢复原理

 

 

首先,使用percona-xtrabackup工具对数据库进行全备,然后再每次数据库的数据更新后对数据进行增量备份,每次增量备份均在上一次备份的基础上。恢复时依次把每次增量备份的数据恢复到全备中,最后使用合并的数据进行数据恢复。

四 percona-xtrabackup实现增量备份及恢复

 

第一步,全备

[root@serv01 databackup]# innobackupex --user=root --password=123456 /databackup/

 

第二步,查看数据

mysql> use larrydb;Database changedmysql> select * from class;+------+-------+| cid  | cname |+------+-------+|    1 | linux ||    2 | dab   ||    3 | Devel |+------+-------+3 rows in set (0.00 sec)mysql> select * from stu;+------+----------+------+| sid  | sname    | cid  |+------+----------+------+|    1 | larry007 |    1 |+------+----------+------+1 row in set (0.00 sec)

 

第三步,更新数据

mysql> insert into stu values(2,'larry02',1);Query OK, 1 row affected (0.00 sec)mysql> select * from stu;+------+----------+------+| sid  | sname    | cid  |+------+----------+------+|    1 | larry007 |    1 ||    2 | larry02  |    1 |+------+----------+------+2 rows in set (0.00 sec)

第四步,增量备份,进行了全备和第一次增量备份,所以有两个备份文件夹。我们每次增量备份都是针对上一次备份。

#--incremental:增量备份的文件夹#--incremental-dir:针对哪个做增量备份[root@serv01 databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-12-50/InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oyand Percona Inc 2009-2012.  All Rights Reserved.……innobackupex: Backup created in directory '/databackup/2013-09-10_22-15-45'innobackupex: MySQL binlog position: filename 'mysql-bin.000004', position 353130910 22:16:04  innobackupex: completed OK![root@serv01 databackup]# lltotal 8drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45

第五步,再次插入数据

mysql> insert into stu values(3,'larry03',1);Query OK, 1 row affected (0.00 sec)mysql> select * from stu;+------+----------+------+| sid  | sname    | cid  |+------+----------+------+|    1 | larry007 |    1 ||    2 | larry02  |    1 ||    3 | larry03  |    1 |+------+----------+------+3 rows in set (0.00 sec)

 

第六步,再次增量备份

[root@serv01 databackup]# lltotal 8drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45[root@serv01 databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-15-45/

 

第七步,再次插入数据

mysql> insert into stu values(4,'larry04',1);Query OK, 1 row affected (0.00 sec)mysql> select * from stu;+------+----------+------+| sid  | sname    | cid  |+------+----------+------+|    1 | larry007 |    1 ||    2 | larry02  |    1 ||    3 | larry03  |    1 ||    4 | larry04  |    1 |+------+----------+------+4 rows in set (0.00 sec)

 

第八步,再次增量备份。一次全备,三次增量备份,所以有四个备份文件夹

百度AI开放平台
百度AI开放平台

百度提供的综合性AI技术服务平台,汇集了多种AI能力和解决方案

下载
[root@serv01 databackup]# innobackupex --user=root --password=123456 --incremental /databackup/ --incremental-dir /databackup/2013-09-10_22-19-21/[root@serv01 databackup]# lltotal 16drwxr-xr-x. 9 root root 4096 Sep 10 22:13 2013-09-10_22-12-50drwxr-xr-x. 9 root root 4096 Sep 10 22:16 2013-09-10_22-15-45drwxr-xr-x. 9 root root 4096 Sep 10 22:19 2013-09-10_22-19-21drwxr-xr-x. 9 root root 4096 Sep 10 22:22 2013-09-10_22-21-42

第九步,模拟数据丢失

mysql> drop database larrydb;Query OK, 2 rows affected (0.02 sec)

 

第十步,对全部的数据进行检查。可以看到增量备份和全备的文件占用磁盘大小有很大的差别,显然全备占用磁盘空间多,增量备份占用磁盘空间少

[root@serv01 databackup]# innobackupex --apply-log --redo-only /databackup/2013-09-10_22-12-50/InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oyand Percona Inc 2009-2012.  All Rights Reserved.……xtrabackup: starting shutdown with innodb_fast_shutdown = 1130910 22:23:35  InnoDB: Starting shutdown...130910 22:23:36  InnoDB: Shutdown completed; log sequence number 2098700130910 22:23:36  innobackupex: completed OK![root@serv01 databackup]# du -sh ./*22M ./2013-09-10_22-12-501.5M  ./2013-09-10_22-15-451.5M  ./2013-09-10_22-19-211.5M  ./2013-09-10_22-21-42

 

第十一步,对第一次做的增量备份数据进行合并到全备份中去

[root@serv01 databackup]# innobackupex --apply-log --redo-only --incremental /databackup/2013-09-10_22-12-50/ --incremental-dir=/databackup/2013-09-10_22-15-45/InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oyand Percona Inc 2009-2012.  All Rights Reserved.……innobackupex: Copying '/databackup/2013-09-10_22-15-45/hello/db.opt' to '/databackup/2013-09-10_22-12-50/hello/db.opt'130910 22:32:26  innobackupex: completed OK!

 

第十二步,对第二次做的增量备份数据进行合并到全备份中去

[root@serv01 databackup]# innobackupex --apply-log --redo-only --incremental /databackup/2013-09-10_22-12-50/ --incremental-dir=/databackup/2013-09-10_22-19-21/

 

第十三步,对第三次做的增量备份数据进行合并到全备份中去

[root@serv01 databackup]# innobackupex --apply-log --redo-only --incremental /databackup/2013-09-10_22-12-50/ --incremental-dir=/databackup/2013-09-10_22-21-42/

 

第十四步,恢复时需要停掉MySQL,所以我们停掉MySQL

[root@serv01 databackup]# /etc/init.d/mysqld stop ERROR! MySQL server PID file could not be found![root@serv01 databackup]# pkill -9 mysql

 

第十五步,恢复数据。注意这里指定的文件夹是2013-09-10_22-12-50

[root@serv01 databackup]# innobackupex --copy-back /databackup/2013-09-10_22-12-50/InnoDB Backup Utility v1.5.1-xtrabackup; Copyright 2003, 2009 Innobase Oyand Percona Inc 2009-2012.  All Rights Reserved.This software is published underthe GNU GENERAL PUBLIC LICENSE Version 2, June 1991.IMPORTANT: Please check that the copy-back run completes successfully.           At the end of a successful copy-back run innobackupex           prints "completed OK!".Original data directory is not empty! at /usr/bin/innobackupex line 571.#报以上错需要删除数据目录下的东西[root@serv01 data]# pwd/usr/local/mysql/data[root@serv01 data]# lsgame     ib_logfile0  mysql             mysql-bin.000003  performance_schema   testhello    ib_logfile1  mysql-bin.000001  mysql-bin.000004  serv01.host.com.err  xtrabackup_binlog_pos_innodbibdata1  mnt          mysql-bin.000002  mysql-bin.index   serv01.host.com.pid[root@serv01 data]# rm -rf  *#再次恢复数据,并更改数据库数据目录的拥有者和所属组[root@serv01 databackup]# innobackupex --copy-back /databackup/2013-09-10_22-12-50/[root@serv01 data]# lltotal 18464drwxr-xr-x. 2 root root     4096 Sep 10 22:37 gamedrwxr-xr-x. 2 root root     4096 Sep 10 22:37 hello-rw-r-----. 1 root root 18874368 Sep 10 22:33 ibdata1drwxr-xr-x. 2 root root     4096 Sep 10 22:37 larrydbdrwxr-xr-x. 2 root root     4096 Sep 10 22:37 mntdrwxr-xr-x. 2 root root     4096 Sep 10 22:37 mysqldrwxr-xr-x. 2 root root     4096 Sep 10 22:37 performance_schemadrwxr-xr-x. 2 root root     4096 Sep 10 22:37 test-rw-r--r--. 1 root root       24 Sep 10 22:37 xtrabackup_binlog_pos_innodb  [root@serv01 data]# chown mysql.mysql /usr/local/mysql/data/ -R

 

第十六步,启动服务

[root@serv01 data]# /etc/init.d/mysqld startStarting MySQL.. SUCCESS! 

 

第十七步,登录数据库,然后查看数据

[root@serv01 data]# mysql -uroot -p123456mysql> show databases;+--------------------+| Database           |+--------------------+| information_schema || game               || hello              || larrydb            || mnt                || mysql              || performance_schema || test               |+--------------------+8 rows in set (0.00 sec)mysql> select * from larrydb.class;+------+-------+| cid  | cname |+------+-------+|    1 | linux ||    2 | dab   ||    3 | Devel |+------+-------+3 rows in set (0.00 sec)mysql> select * from larrydb.stu;+------+----------+------+| sid  | sname    | cid  |+------+----------+------+|    1 | larry007 |    1 ||    2 | larry02  |    1 ||    3 | larry03  |    1 ||    4 | larry04  |    1 |+------+----------+------+4 rows in set (0.00 sec)


  我的邮箱:wgbno27@163.com  新浪微博:@jutdb           微信公众平台:JustOracle(微信号:justoracle)  数据库技术交流群:336882565(加群时验证 From CSDN XXX)  All is well  2013年12月1日  By Larry Wen

bitsCN.com

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
Python 序列化
Python 序列化

本专题整合了python序列化、反序列化相关内容,阅读专题下面的文章了解更多详细内容。

0

2026.02.02

AO3官网入口与中文阅读设置 AO3网页版使用与访问
AO3官网入口与中文阅读设置 AO3网页版使用与访问

本专题围绕 Archive of Our Own(AO3)官网入口展开,系统整理 AO3 最新可用官网地址、网页版访问方式、正确打开链接的方法,并详细讲解 AO3 中文界面设置、阅读语言切换及基础使用流程,帮助用户稳定访问 AO3 官网,高效完成中文阅读与作品浏览。

91

2026.02.02

主流快递单号查询入口 实时物流进度一站式追踪专题
主流快递单号查询入口 实时物流进度一站式追踪专题

本专题聚合极兔快递、京东快递、中通快递、圆通快递、韵达快递等主流物流平台的单号查询与运单追踪内容,重点解决单号查询、手机号查物流、官网入口直达、包裹进度实时追踪等高频问题,帮助用户快速获取最新物流状态,提升查件效率与使用体验。

27

2026.02.02

Golang WebAssembly(WASM)开发入门
Golang WebAssembly(WASM)开发入门

本专题系统讲解 Golang 在 WebAssembly(WASM)开发中的实践方法,涵盖 WASM 基础原理、Go 编译到 WASM 的流程、与 JavaScript 的交互方式、性能与体积优化,以及典型应用场景(如前端计算、跨平台模块)。帮助开发者掌握 Go 在新一代 Web 技术栈中的应用能力。

11

2026.02.02

PHP Swoole 高性能服务开发
PHP Swoole 高性能服务开发

本专题聚焦 PHP Swoole 扩展在高性能服务端开发中的应用,系统讲解协程模型、异步IO、TCP/HTTP/WebSocket服务器、进程与任务管理、常驻内存架构设计。通过实战案例,帮助开发者掌握 使用 PHP 构建高并发、低延迟服务端应用的工程化能力。

5

2026.02.02

Java JNI 与本地代码交互实战
Java JNI 与本地代码交互实战

本专题系统讲解 Java 通过 JNI 调用 C/C++ 本地代码的核心机制,涵盖 JNI 基本原理、数据类型映射、内存管理、异常处理、性能优化策略以及典型应用场景(如高性能计算、底层库封装)。通过实战示例,帮助开发者掌握 Java 与本地代码混合开发的完整流程。

5

2026.02.02

go语言 注释编码
go语言 注释编码

本专题整合了go语言注释、注释规范等等内容,阅读专题下面的文章了解更多详细内容。

62

2026.01.31

go语言 math包
go语言 math包

本专题整合了go语言math包相关内容,阅读专题下面的文章了解更多详细内容。

55

2026.01.31

go语言输入函数
go语言输入函数

本专题整合了go语言输入相关教程内容,阅读专题下面的文章了解更多详细内容。

27

2026.01.31

热门下载

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

精品课程

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

共45课时 | 6万人学习

10分钟--Midjourney创作自己的漫画
10分钟--Midjourney创作自己的漫画

共1课时 | 0.1万人学习

HTML 中文开发手册
HTML 中文开发手册

共0课时 | 0人学习

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

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