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

innobackupex的备份和恢复

423次阅读
没有评论

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

1 原理

分 3 个阶段:备份 backup – 预恢复 prepare  — 恢复 restore

注:复制 innodb 表文件时可能包含不完整事务,需要 prepare 将其变为 consistent

首先复制所有的 Innodb 数据文件,这样复制出来的文件肯定是不一致的,然后对每个文件进行崩溃恢复处理,最终达到一致.

XtraBackup 在启动的时候会记录一个 LSN(log sequence number),然后就把所有的 Innodb 数据文件复制出来,这样复制出来的数据文件是不一致的,但是 XtraBackup 会在后台运行一个进程把所有对 redo log file 的修改记录下来;

以上的操作是由 xtrabackup 二进制程序(比如 xtrabackup_55)完成的,如果使用 innobackupex 脚本,刚才的步骤完成以后,innobackupex 就会去备份 MyISAM 表和.frm 文件,这时要保证数据的一致性就会先锁表了,通过 FLUSH TABLES WITH READ LOCK 命令锁表然后把文件复制出来,再释放掉这个锁。

在恢复数据的时候,要经过 prepare(recovery)和 restore 两个步骤。在 prepare 结束以后,Innodb 的表恢复到了复制 Innodb 文件结束的时间点,这个时间点也就是锁表复制 MyISAM 表的起点,所以最终数据是一致的。一般我们在恢复的时候执行两次 prepare,是因为第二次 prepare 会帮助我们生成 redo log 文件,从而加快 MySQL 数据库启动的速度。

备份

$ innobackupex –user=DBUSER –password=DBUSERPASS /path/to/BACKUP-DIR/

– 将数据库备份放在 BACKUP-DIR 目录,默认新建一个子目录,–no-timestamp 会跳过此功能;

prepare

$ innobackupex –apply-log /path/to/BACKUP-DIR

此时数据可以被程序访问使用;可使用—use-memory 选项指定所用内存以加快进度,默认 100M;

恢复

$ innobackupex –copy-back /path/to/BACKUP-DIR

从 my.cnf 读取 datadir/innodb_data_home_dir/innodb_data_file_path 等变量;

先复制 MyISAM 表,然后是 innodb 表,最后为 logfile;–data-dir 目录必须为空

2 增量备份

首先要做全备,每个备份目录都保有 xtrabackup-checkpoints 文件,内容如下

backup_type = full-backuped

from_lsn = 0

to_lsn = 1291135

增量备份以 to_lsn 为起点

$ innobackupex –incremental /data/backups –incremental-basedir=BASEDIR

其 xtrabackup-checkpoints 文件内容如下

backup_type = incremental

from_lsn = 1291135

to_lsn = 1352113

可再此基础上继续增量备份

增量备份的 prepare 有点复杂,如果对 base backup 执行事务一致性恢复,则其不能再用于增量备份恢复,为此须指定—redo-only 选项;

innobackupex –apply-log –redo-only BASE-DIR

innobackupex –apply-log –redo-only BASE-DIR –incremental-dir=INCREMENTAL-DIR-1

innobackupex –apply-log BASE-DIR –incremental-dir=INCREMENTAL-DIR-2

当合并完所有的增量备份后,开始回滚所有未提交的事务

innobackupex –apply-log BASE-DIR

3 恢复单表

Oracle rman 提供了 restore datafile,针对坏块也有 blockrecover,即尽可能的避免全库恢复;

Innobackx 也提供了类似功能,允许恢复单个表空间;

对备份执行 prepare

$ innobackupex –apply-log –export /path/to/backup

–export 让 innodb 采用 slow shutdown(full purge + change buffer merge),以保证表空间处于一致性并被 import;

针对每个表,其文件列表如下

/data/backups/mysql/test/export_test.exp

/data/backups/mysql/test/export_test.ibd

/data/backups/mysql/test/export_test.cfg–innodb 数据字典的 dump,5.6 起不是必需;

恢复单表

mysql> CREATE TABLE mytable (…) ENGINE=InnoDB; – 创建相同结构的表

mysql> ALTER TABLE mydatabase.mytable DISCARD TABLESPACE;

将.ibd/.exp/.cfg 复制到数据目录

mysql> ALTER TABLE mydatabase.mytable IMPORT TABLESPACE;

4 基于时间点的恢复

每个备份目录都有一个 xtrabackup_binlog_info,记录备份 binlog 时数据库当前位置,这也是数据库一致性恢复的终点;

$ cat /path/to/backup/xtrabackup_binlog_info

mysql-bin.000003      57

$ innobackupex –copy-back /path/to/backup

待恢复完成后,便可通过 mysqlbinlog 执行时间点恢复

$ mysqlbinlog /path/to/datadir/mysql-bin.000003 /path/to/datadir/mysql-bin.000004 \

–start-position=57 –stop-datetime=”11-12-25 01:00:00″ | mysql -u root –p

5 在 slave 执行备份

须留意以下两个参数

–slave-info

This option is useful when backing up a replication slave server. It prints the binary log position and name of the master server. It also writes this information to the xtrabackup_slave_info file as a CHANGE MASTER command. A new slave for this master can be set up by starting a slave server on this backup and issuing a CHANGE MASTER command with the binary log position saved in the xtrabackup_slave_info file.

–safe-slave-backup

Stop slave SQL thread and wait to start backup until Slave_open_temp_tables in SHOW STATUS is zero. If there are no open temporary tables, the backup will take place, otherwise the SQL thread will be started and stopped until there are no open temporary tables. The backup will fail if Slave_open_temp_tables does not become zero after –safe-slave-backup-timeout seconds. The slave SQL thread will be restarted when the backup finishes.

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

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

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7974927
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

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

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

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

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

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

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
如何免费使用强大的Nano Banana Pro?附赠邪修的用法

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

如何免费使用强大的 Nano Banana Pro?附赠邪修的用法 前言 大家好,我是星哥,今天来介绍谷歌的 ...
每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年0.99刀,拿下你的第一个顶级域名,详细注册使用

每年 0.99 刀,拿下你的第一个顶级域名,详细注册使用 前言 作为长期折腾云服务、域名建站的老玩家,星哥一直...
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸

一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸 前言 作为天天跟架构图、拓扑图死磕的...
如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装2026年最强个人助理ClawdBot、完整安装教程

如何安装 2026 年最强个人助理 ClawdBot、完整安装教程 一、前言 学不完,根本学不完!近期,一款名...
150元打造低成本NAS小钢炮,捡一块3865U工控板

150元打造低成本NAS小钢炮,捡一块3865U工控板

150 元打造低成本 NAS 小钢炮,捡一块 3865U 工控板 一块二手的熊猫 B3 工控板 3865U,搭...

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

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛NAS硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话?

星哥带你玩飞牛 NAS 硬件 01:捡垃圾的最爱双盘,暴风二期矿渣为何成不老神话? 前言 在选择 NAS 用预...
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

免费无广告!这款跨平台AI RSS阅读器,拯救你的信息焦虑

  免费无广告!这款跨平台 AI RSS 阅读器,拯救你的信息焦虑 在算法推荐主导信息流的时代,我们...
三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Android 的最优解?

  三大开源投屏神器横评:QtScrcpy、scrcpy、escrcpy 谁才是跨平台控制 Andr...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...