阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Xtrabackup进行MySQL备份

470次阅读
没有评论

共计 4282 个字符,预计需要花费 11 分钟才能阅读完成。

使用 Xtrabackup 进行 MySQL 备份:

一、安装

1、简介

Xtrabackup 是由 percona 提供的 mysql 数据库备份工具,据官方介绍,这也是世界上惟一一款开源的能够对 innodb 和 xtradb 数据库进行热备的工具。特点:
(1)备份过程快速、可靠;
(2)备份过程不会打断正在执行的事务;
(3)能够基于压缩等功能节约磁盘空间和流量;
(4)自动实现备份检验;
(5)还原速度快;

2、安装

装备好安装包
percona-xtrabackup-2.1.8-733.rhel6.x86_64.rpm
percona-toolkit-2.2.4-1.noarch.rpm
其最新版的软件可从 http://www.percona.com/software/percona-xtrabackup/ 获得

# yum install ./*.rpm

二、完整备份及恢复的实现

1、完全备份# innobackupex –user=DBUSER –password=DBUSERPASS  /path/to/BACKUP-DIR/
首先将二进制 log 文件放在单独的目录
# vim /etc/my.cnf
log-bin=/data/binlog/master-bin

使用 Xtrabackup 进行 MySQL 备份
重启 mysqld 服务
# service mysqld restart

查看设置是否生效
mysql> show binary logs;
+——————-+———–+
| Log_name          | File_size |
+——————-+———–+
| master-bin.000001 |       107 |
+——————-+———–+
创建备份目录
# mkdir /mybackups

# innobackupex –user=root /mybackups/

使用 Xtrabackup 进行 MySQL 备份

 

2、准备 (prepare) 一个完全备份
模拟数据库损坏

# cd /data/mydata

# rm -rf *

一般情况下,在备份完成后,数据尚且不能用于恢复操作,因为备份的数据中可能会包含尚未提交的事务或已经提交但尚未同步至数据文件中的事务。因此,此时数据文件仍处理不一致状态。“准备”的主要作用正是通过回滚未提交的事务及同步已经提交的事务至数据文件也使得数据文件处于一致性状态。

innobakupex 命令的 –apply-log 选项可用于实现上述功能。如下面的命令:

# innobackupex –apply-log /mybackups/2016-01-07_08-09-58/
如果执行正确,其最后输出的几行信息通常如下:

xtrabackup: starting shutdown with innodb_fast_shutdown = 1
160107  8:42:26  InnoDB: Starting shutdown…
160107  8:42:30  InnoDB: Shutdown completed; log sequence number 1969676
160107 08:42:30  innobackupex: completed OK!

在实现“准备”的过程中,innobackupex 通常还可以使用 –use-memory 选项来指定其可以使用的内存的大小,默认通常为 100M。如果有足够的内存可用,可以多划分一些内存给 prepare 的过程,以提高其完成速度。

3、从一个完全备份中恢复数据 

注意:恢复不用启动 MySQL

innobackupex 命令的 –copy-back 选项用于执行恢复操作,其通过复制所有数据相关的文件至 mysql 服务器 DATADIR 目录中来执行恢复过程。innobackupex 通过 backup-my.cnf 来获取 DATADIR 目录的相关信息。

# innobackupex –copy-back /mybackups/2016-01-07_08-09-58/
如果执行正确,其输出信息的最后几行通常如下:
innobackupex: Starting to copy InnoDB log files
innobackupex: in ‘/mybackups/2016-01-07_08-09-58’
innobackupex: back to original InnoDB log directory ‘/data/mydata’
innobackupex: Copying ‘/mybackups/2016-01-07_08-09-58/ib_logfile0’ to ‘/data/mydata/ib_logfile0’
innobackupex: Copying ‘/mybackups/2016-01-07_08-09-58/ib_logfile1’ to ‘/data/mydata/ib_logfile1’
innobackupex: Finished copying back files.

160107 08:44:24  innobackupex: completed OK!

请确保如上信息的最行一行出现“innobackupex: completed OK!”。

当数据恢复至 DATADIR 目录以后,还需要确保所有数据文件的属主和属组均为正确的用户,如 mysql,否则,在启动 mysqld 之前还需要事先修改数据文件的属主和属组。如:

# chown -R mysql.mysql /data/mydata

三、使用 innobackupex 进行增量备份

编辑 my.cnf 文件,开启每一个 innodb 数据表单独表空间选项(可以方便实现 innodb 高级设置及管理)
innodb_file_per_table = ON

# sed -i “s/ENGINE=MyISAM/ENGINE=InnoDB/g” /root/hello.sql

每个 InnoDB 的页面都会包含一个 LSN 信息,每当相关的数据发生改变,相关的页面的 LSN 就会自动增长。这正是 InnoDB 表可以进行增量备份的基础,即 innobackupex 通过备份上次完全备份之后发生改变的页面来实现。

要实现第一次增量备份,可以使用下面的命令进行:

# innobackupex –incremental /backup –incremental-basedir=BASEDIR

其中,BASEDIR 指的是完全备份所在的目录,此命令执行结束后,innobackupex 命令会在 /backup 目录中创建一个新的以时间命名的目录以存放所有的增量备份数据。另外,在执行过增量备份之后再一次进行增量备份时,其 –incremental-basedir 应该指向上一次的增量备份所在的目录。

需要注意的是,增量备份仅能应用于 InnoDB 或 XtraDB 表,对于 MyISAM 表而言,执行增量备份时其实进行的是完全备份。

“准备”(prepare)增量备份与整理完全备份有着一些不同,尤其要注意的是:
(1)需要在每个备份 (包括完全和各个增量备份) 上,将已经提交的事务进行“重放”。“重放”之后,所有的备份数据将合并到完全备份上。
(2)基于所有的备份将未提交的事务进行“回滚”。

于是,操作就变成了:
# innobackupex –apply-log –redo-only BASE-DIR

接着执行:
# innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-1

而后是第二个增量:
# innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-2

其中 BASE-DIR 指的是完全备份所在的目录,而 INCREMENTAL-DIR- 1 指的是第一次增量备份的目录,INCREMENTAL-DIR- 2 指的是第二次增量备份的目录,其它依次类推,即如果有多次增量备份,每一次都要执行如上操作;

示例:

备份:
1. 完整备份:
# innobackupex –user=root /mybackups/
插入数据
创建数据库和表
mysql> create database mydb1;
mysql> use mydb1;
mysql> create table tb1(name char(10));
mysql> insert into tb1 values(‘tom’),(‘lily’);

2. 第一次增量备份
# innobackupex –incremental /mybackups/ –incremental-basedir=/mybackups/2015-12-26_21-41-31

3. 第二次增量备份(在第一次增量备份基础上增加)
# innobackupex –incremental /mybackups –incremental-basedir=/mybackups/2015-12-26_21-41-31

使用 Xtrabackup 进行 MySQL 备份
模拟数据被删除
# rm -rf /data/mydata/*

还原:

准备
# innobackupex –apply-log –redo-only /mybackups/2015-12-26_21-41-31

使用 Xtrabackup 进行 MySQL 备份
接着执行:
# innobackupex –apply-log –redo-only /mybackups/2015-12-26_21-41-31 –incremental-dir=/mybackups/2015-12-26_21-47-24/

而后是第二个增量:
# innobackupex –apply-log –redo-only /mybackups/2015-12-26_21-41-31 –incremental-dir=/mybackups/2015-12-26_21-53-24/

使用 Xtrabackup 进行 MySQL 备份
还原:
# innobackupex –copy-back /mybackups/2015-12-26_21-41-31/

更多 XtraBackup 相关教程见以下内容

MySQL 管理之使用 XtraBackup 进行热备 http://www.linuxidc.com/Linux/2014-04/99671.htm

MySQL 开源备份工具 Xtrabackup 备份部署 http://www.linuxidc.com/Linux/2013-06/85627.htm

MySQL Xtrabackup 备份和恢复 http://www.linuxidc.com/Linux/2011-12/50275.htm

本文永久更新链接地址:http://www.linuxidc.com/Linux/2016-11/137734.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计4282字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19348
评论数
4
阅读量
7805230
文章搜索
热门文章
开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南

开发者必备神器:阿里云 Qoder CLI 全面解析与上手指南 大家好,我是星哥。之前介绍了腾讯云的 Code...
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板1Panel:小白轻松构建Web服务与面板加固指南

云服务器部署服务器面板 1Panel:小白轻松构建 Web 服务与面板加固指南 哈喽,我是星哥,经常有人问我不...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
优雅、强大、轻量开源的多服务器监控神器

优雅、强大、轻量开源的多服务器监控神器

优雅、强大、轻量开源的多服务器监控神器 在多台服务器同时运行的环境中,性能监控、状态告警、资源可视化 是运维人...
终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的3D玩偶了

终于收到了以女儿为原型打印的 3D 玩偶了 前些日子参加某网站活动,获得一次实物 3D 打印的机会,于是从众多...
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的Nano Banana Pro?附赠邪修的用法

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
这个开源软件130k的star数!让电脑轻松管理安卓手机的神器

这个开源软件130k的star数!让电脑轻松管理安卓手机的神器

这个开源软件 130k 的 star 数!让电脑轻松管理安卓手机的神器 大家好,我是星哥。今天给大家安利一款宝...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

240 元左右!五盘位 NAS主机,7 代U硬解4K稳如狗,拓展性碾压同价位

  240 元左右!五盘位 NAS 主机,7 代 U 硬解 4K 稳如狗,拓展性碾压同价位 在 NA...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

开源MoneyPrinterTurbo 利用AI大模型,一键生成高清短视频!

  开源 MoneyPrinterTurbo 利用 AI 大模型,一键生成高清短视频! 在短视频内容...
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛NAS硬件02:某鱼6张左右就可拿下5盘位的飞牛圣体NAS

星哥带你玩飞牛 NAS 硬件 02:某鱼 6 张左右就可拿下 5 盘位的飞牛圣体 NAS 前言 大家好,我是星...