Xtrabackup备份与恢复,备份系统恢复到新硬盘

概述

今天主要通过一个实验来简单介绍一下如何用XtraBackup 实现全备&增量备份与恢复的全过程~

官方手册:https://www.percona.com/doc/percona-xtrabackup/2.4/index.html

一、xtrabackup备份过程解析

第一阶段:检查与连接的准备阶段

执行备份命令之后,备份开始,XtraBackup工具尝试去连接MySQL服务器,连接成功之后,执行MySQL版本检查,版本检查完毕。使用给定的用户、密码、端口、socket文件连接使用5.7.22版本的MySQL服务器。

第二阶段:持续拷贝redo log

这部分内容并没有在备份的输出日志里体现,推测通过开启general log可以看到,也不一定,也许要通过源码才能看到。

修正:我的测试备份环境是一个静止的数据库,在备份时,既没有发生写操作,也没有发生读操作。所以没有看到一直在做”输出看到大量log scanned up to (xxx),对应就是持续扫描redo log”

第三阶段:拷贝ibdata1和ibd文件

xtrabackup进程开始执行一系列工作

1、调用系统函数posix_fadvise(),该函数是用来清理缓存的,不太理解此处使用的意图?了解的童鞋给我科普下,谢谢。

2、进入到/data/mysql/mysql3306/data目录下面

3、把打开文件请求限制调整为65535

4、使用以下InnoDB配置:

innodb_data_home_dir = .

#innodb数据存放在当前目录

innodb_data_file_path = ibdata1:100M:autoextend

#innodb共享表空间文件为1个,初始大小为100M,类型为自动扩展

innodb_log_group_home_dir = ./

#innodb日志文件存放在当前目录

innodb_log_files_in_group = 3

#innodb日志文件个数为3个

innodb_log_file_size = 104857600

#innodb日志文件大小为100M

5、使用O_DIRECT标志,目的为绕过缓冲区高速缓存,直接把数据传递到文件或设备,实际就是无需缓存来拷贝数据

6、默认使用单线程进行备份

7、日志扫描到2643241字节的位置

8、形成一个表表空间的列表

9、为mysql/plugin分配表空间为2,旧的最大值是0

10、把ibdata1文件拷贝到备份目录下面,直到完成

11、把ibd文件拷贝到备份目录下面,直到所有的ibd文件拷贝完成

第四阶段:备份非事务表的准备阶段

innobackupex进程开始执行一系列工作

1、扫描日志文件到2643241,这是已经写入redo的LSN

2、执行FLUSH TABLES,关闭所有打开的表,使用NO_WRITE_TO_BINLOG选项,也就是该语句不会被记录到binlog里面

3、执行FTWRL,使用全局读锁来锁定整个实例

第五阶段:备份非事务表

开始拷贝非innodb引擎表和文件,包括所有的.frm文件等,直到所有的都拷贝完成

修正:

.frm文件:保存了每个表的元数据,包括表结构的定义等;

.ibd文件:InnoDB引擎开启了独立表空间(my.ini中配置innodb_file_per_table = 1)产生的存放该表的数据和索引的文件。

第六阶段:整个备份完成后的后续工作

1、开始写xtrabackup_binlog_info文件,此处推测,获取执行过的GTID值和位点信息的语句在general log里面有记录

2、执行引擎的日志刷新,也就是把日志刷新到磁盘

3、最后的检查点是2643232字节的位置,也就是数据持久化到的LSN

4、停止拷贝线程

5、扫描日志文件到2643241

6、执行UNLOCK TABLES,释放全局读锁

7、开始拷贝ib_buffer_pool,直到拷贝完成,这是一堆数字,不知道做什么用处,了解的童鞋给我科普下,谢谢。

修正:拷贝缓冲池里的数据,以备恢复后,可以快速加载和预热访问量最高的数据。

8、打印出备份结束的位点和执行过的GTID值

9、写backup-my.cnf文件

10、写xtrabckup_info

11、LSN从2643232到2643241的事务日志拷贝完成

12、打印备份成功的标志,completed OK!

二、实验–xtrabackup全备

1、事前准备

1.1、建用户及授权

CREATE USER 'bkpuser'@'localhost' IDENTIFIED BY 'bkpuser@1234';

GRANT RELOAD, LOCK TABLES, PROCESS, REPLICATION CLIENT,super ON *.* TO 'bkpuser'@'localhost';

FLUSH PRIVILEGES;

1.2、准备测试数据

CREATE DATABASE TEST;

USE TEST;

CREATE TABLE t(id int primary key, name varchar(16),insert_date datetime);

INSERT INTO t VALUES(1,'full1',now()),(2,'full2',now()),(3,'full3',now()),(4,'full4',now()),(5,'full5',now());

1.3、创建备份目录

 mkdir -p /data/backup/

2、全备

 xtrabackup --user=bkpuser --password="bkpuser@1234" --backup --target-dir=/data/backup/

 

 

 

备份目录下面的各项文件说明

1)xtrabackup_checkpoints —— 备份类型(如完全或增量)、备份状态(如是否已经为prepared状态)和LSN(日志序列号)范围信息;

2)每个InnoDB页(通常为16k大小)都会包含一个日志序列号,即LSN。LSN是整个数据库系统的系统版本号,每个页面相关的LSN能够表明此页面最近是如何发生改变的。

3)xtrabackup_binlog_info —— mysql服务器当前正在使用的二进制日志文件及至备份这一刻为止二进制日志事件的位置。

4)xtrabackup_binlog_pos_innodb —— 二进制日志文件及用于InnoDB或XtraDB表的二进制日志文件的当前position

5)xtrabackup_binary —— 备份中用到的xtrabackup的可执行文件;

6)backup-my.cnf —— 备份命令用到的配置选项信息;

3、Preparing a backup

The xtrabackup –prepare step makes the files perfectly consistent at a single instant in time, so you can run InnoDB on them.

You can run the prepare operation on any machine; it does not need to be on the originating server or the server to which you intend to restore. You can copy the backup to a utility server and prepare it there.

 xtrabackup --prepare --target-dir=/data/backup

 

 

4、Restoring a Backup

For convenience xtrabackup binary has an xtrabackup –copy-back option, which will copy the backup to the server’s datadir:

--停止目的端数据库

systemctl stop mysqld

--删除数据文件内容

cp -rf /fsl_data/datafile/ /fsl_data/datafile_bak

rm -rf /fsl_data/datafile/*

--恢复数据库

xtrabackup --copy-back --target-dir=/data/backup

--授权

chown -R mysql:mysql datafile

chmod -R 755 datafile

systemctl restart mysqld

 

 

5、重启后校验

 systemctl restart mysqld

 

三、实验–xtrabackup增备

1、基于全备的增备

1.1、插入测试数据

use test;

INSERT INTO t VALUES(6,'incr_1',now()),(7,'incr_2',now());

1.2、创建目录

 mkdir -p /data/backup_incr

1.3、基于全备的增备

Now that you have a full backup, you can make an incremental backup based on it. Use the following command

开始第一次增备,只要全备和多个增备的LSN号连续,那么就可以逐个进行恢复。可以再备份目录xtrabackup_checkpoints文件中看到,其中全备的from_lsn=0,增备的from_lsn应该等于上一个增备或者全备的to_lsn

xtrabackup --user=bkpuser --password="bkpuser@1234" --backup --target-dir=/data/backup_incr \

    --incremental-basedir=/data/backup/

说明:–incremental-basedir是上次全备或者增备出来的文件夹。当第一次增备的时候,一般填上次全备,第二次增备的时候,如果–incremental-basedir填上次全备,那么本次增备就会包含上次全备到现在变化的内容,相当于oracle依次做1级,2级,3级。。。增备如果–incremental-basedir填第一次增备的目录,那么该次增备只包含第一次增备到现在的变化,文件会更小,相当于oracle rman里面每次都做1级增备。

 

 

 

2、基于增备的增备

2.1、插入数据

use test;

INSERT INTO t VALUES(8,'incr_incr1',now()),(9,'incr_incr2',now());

2.2、创建目录

 mkdir -p /backup/backup_incr2

2.3、基于增备的增备

xtrabackup --user=bkpuser --password="bkpuser@1234" --backup --target-dir=/data/backup_incr2 \

    --incremental-basedir=/data/backup_incr xtrabackup --user=bkpuser --password="bkpuser@1234" --backup --target-dir=/data/backup_incr2 \    --incremental-basedir=/data/backup_incr

 

 

 

3、prepare

这里依然要做prepare,而且是做两次prepare,第一次是把全备给prepare,不过这次和上次不一样,这次要加入–apply-log-only参数,因为在每个备份过程中,都会碰到一些事务进来执行,而备份结束时可能有些事务并没有执行完毕,所以在默认prepare中这些事务就会被回滚(rollback),而加入了–apply-log-only就不会回滚这些事务,而是等待prepare下次增备。第二次prepare就是准备第一次增备的目录,这个prepare目的就是把第一次增备期间发生的变化写入到全备的目录中去,然后第一次增备的目录就没有用处了,因为我们最终拷贝表空间文件是把增备目录拷贝过去。无论多少个增备,最后prepare的那个增备是不能加–apply-log-only参数的,因为最后一次增备还没有完成的事务就要彻底回滚来保证一致性。

3.1、prepare全备

 xtrabackup --prepare --apply-log-only --target-dir=/data/backup

3.2、prepare第一次增备

 xtrabackup --prepare --apply-log-only --target-dir=/data/backup --incremental-dir=/data/backup_incr

3.3、prepare第二次增备

 xtrabackup --prepare --target-dir=/data/backup --incremental-dir=/data/backup_incr2

 

4、Restoring a Backup

For convenience xtrabackup binary has an xtrabackup –copy-back option, which will copy the backup to the server’s datadir:

--停止目的端数据库

systemctl stop mysqld

--删除数据文件内容

cp -rf /fsl_data/datafile/ /fsl_data/datafile_bak

rm -rf /fsl_data/datafile/*

--恢复数据库

xtrabackup --copy-back --target-dir=/data/backup

--授权

chown -R mysql:mysql datafile

chmod -R 755 datafile

systemctl restart mysqld

 

 

5、重启后校验

 systemctl restart mysqld

本文来自投稿,不代表展天博客立场,如若转载,请注明出处:https://www.me900.com/327011.html

(0)

相关推荐

  • 如何在网上挣钱(做互联网创业项目的优势)

    穷人如何逆风翻盘(2)。 尽量做网络生意,不受地域限制,不受货物运输影响。过去人做网络生意,需要懂电脑操作,懂排版设计,懂营销推广。很多人不会电脑打字,更不可能会排版设计了。需要另招人,买电脑等人员支出费用。 而如今呢?一部手机就可搞定,人人都有手机,人人都会玩手机,拍视频,说话就可以。但是有多少人能通过手机赚到钱呢? 很明显,过去靠网络挣到钱的人,已经在赚…

    2022-01-22 投稿
  • 魔兽筋斗云怎么获得(筋斗云攻略)

    魔兽世界wow最好拿的坐骑无疑是潘达利亚的红色筋斗云了,但是很多新手玩家都不太清楚魔兽世界筋斗云如何获取。那么魔兽世界红色筋斗云如何入手呢?这期就位大家揭秘! 但实际是480金币 首先我们要来到潘达利亚锦绣谷的魔古山宫殿,由于当前版本恩佐斯的入侵,我们要在这边和时光使者对话,回到未被侵蚀前的潘达利亚   然后进入魔古山宫殿找到游学者周卓接取你的私人…

    2021-12-22 投稿
  • 工信部icp备案号,工信部icp备案号查询系统

    《工信部ICP备案号:从入门到精通》 一、什么是工信部ICP备案号? 也许你在浏览网站时,偶尔会看到一些网站底部显示着“工信部ICP备案号”这样的字样。那么,工信部ICP备案号到底是什么呢?我觉得它就像是网站的一个“身份证”,是网站在互联网上的合法身份证明。 就好比我们每个人都有自己的身份证,用来证明我们的身份和合法性。网站也需要一个类似的标识,让用户知道这…

    2025-09-10
  • chk文件如何恢复,电脑found文件在哪

    最近有位win7系统用户在使用电脑的时候,在硬盘或者u盘中会出现文件丢失的情况,也就是出现found.000文件丢失的情况。那么今天我们分享的是:found.000文件丢失解决方法,下面我们一起来看看如何操作吧。 1、首先点击工具-文件夹选项,进入文件夹选项设置;如图所示: 2、在文件夹选项里,选择查看标签卡找到显示系统文件和显示隐藏文件的选项显示所有文件;…

    2023-07-04
  • 正规的网络赚钱方式(如何利用网络赚钱方法快速变现)

    逆向思维:网络时代普通人最好的赚钱方法,就是思维变现。 你发现现在风险最低,没有门槛,赚钱最简单的方式了吗? 知信行者经常刷短视频,看到最没门槛,最简单的赚钱方式就是那些口播的主播。 不用任何投资,没有成本,就是一个人,一部手机,打开短视频平台直播间。 说话就是开张,闭嘴就是打烊。 说白了吧,就是用嘴赚钱,用嘴变现! 你看公司里最赚钱的人是谁,是老板对吧。 …

    2023-05-23
  • 360安全桌面卸载,电脑垃圾清理哪个好

    咱国内互联网环境下,提系统安全、垃圾清理总绕不开腾讯和 360。 这两家说实话节操不多,但产品确实做得好。 无论 UI 还是功能都符合国人审美和习惯。 让男女老少都能轻易上手。 所以即使现在网速从 「2G」 涨到 「5G」。 装机量最大的软件还是那几个。 要说什么毁了这些好软件。 弹窗、捆绑、广告推广一个不少。 但正如我们前段时间安利过的腾讯电脑管家独立版。…

    2023-07-10
  • 草根seo,草根seo利用实时热点做流量

    今天百度热榜中出现了一个“央视起底网络占卜”的热搜,经常听说大佬们通过算命占卜这种项目闷声发财,于是我抱着好奇的态度点开了这条热榜。 于是就发现了有一位SEO大佬用一种非常牛逼的方式在闷声搞流量,吾辈惊为天人。 为了保持大佬隐私,这里就不透露具体域名了,具体情况看下文分析。 一、整体效果 爱站的权重是双权4,看到这里的同学可能在想了,就这?但是这个网站的牛逼…

    2022-04-20
  • 动态3d手机壁纸立体,动态壁纸3d立体全屏

                                          朋友们,换上试试看,会给你的手机屏幕带来好效果的,记得个赞赞哦!

    2023-07-03 投稿
  • 免疫球蛋白g,m蛋白升高多发性骨髓瘤

        “胸痛、气喘乏力、心力衰竭、贫血、蛋白尿、肾功异常、腰背痛、骨质疏松、腰椎骨折?”乍眼看去,不就是常见的老年病嘛?如果我告诉你,这复杂多样的表现症状可能是一种血液病,你会不会大吃一惊呢?且从笔者发现一例高球蛋白血症说起。     某心血管科患者,男,66岁,入院加急生化检查,总蛋白(TP)和球蛋白(GLB)触犯…

    2023-07-03
  • 全球最大的p站怎么进入(最大的P站怎么进)

    随着网络技术的不断发展,有的网站在国内也随之禁止访问,P站就是其中之一。而对于喜欢动漫的小伙伴们来说,P站就是动漫的天堂,如今却可望而不可即。作为像我一样的动漫迷,尤其是那些精美的漫画壁纸,当然会对此感到失落。 不过,网络大神比比皆是,网上的方法多种多样,而我经过测试,最终决定向小伙伴们推荐这个方法,可以不用**,而直接访问P站,这个方法也比修改DNS更保险…

    2021-12-23
  • web表单设计代码,前端表单设计

    一、背景 前端开发中涉及表单的页面非常多,看似功能简单,开发快速,实则占去了很大一部分时间。当某个表单包含元素过多时还会导致html代码过多,vue文件过大。从而不容易查找、修改和维护。为了提高开发效率及降低维护成本,下面介绍表单配置化组件的封装原理与封装方法。 二、技术方案     如上图所示,封装表单配置化组件的关键点有三个一是如何解…

    2023-07-05
  • 只需一辆轿车就可做的生意(利用小车赚钱的窍门)

    如何利用私家车赚钱?随着人们物质经济的提高,为了出行方便快捷,很多人都会选择购买汽车作为代步工具,于是,私家车几乎是每一个现代人家里都必备的交通工具,现在二手车又那么的便宜,买一个新车价格也不高。然而不少人买了汽车,才发现车辆除了日常出行以外,外出旅游用车的机会真的不大,甚至通勤去公司还不如坐地铁,车辆就会长时间闲置(本人的车辆目前就在闲置,因为家离公司较近…

    2021-12-26 投稿