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)

相关推荐

  • 快递新规正式实施,新快递规定:保障消费者权益

    来源:【人民网】 本报北京4月8日电 (记者林丽鹂)国家市场监督管理总局4月7日召开新闻发布会,解读市场监管总局(国家标准委)近日批准发布的《快递电子运单》和《通用寄递地址编码规则》两项国家标准,为进一步规范邮政行业发展,顺应行业数字化转型,不断优化改善从业人员和用户体验提供技术支撑。 当前,邮政快递已成为现代生产生活不可或缺的重要组成部分,成为联系生产与消…

    2023-05-16
  • 兼职房产销售怎么做(房产销售兼职好做吗)

    销售房产,项目代理这个岗位绝对是一个实力派+实权派的角色,能够达到项目代理的高度,基本上就可以认定为这个项目的实际操盘手,代表着开发商全权运营、甚至操作一个或多个项目。 回想自己进入地产行业这十几年来,虽然没有明确挂过总代的名头,但实际上自己其实也是从项目业务员、前台接待、销售经理再到代理的角色上走过来的。 代理是真正能够拿到高薪酬的岗位,只要楼盘销售进展快…

    2021-12-06
  • 淘宝数据包,淘宝数据包怎么上传宝贝

    《淘宝数据包:从入门到精通》 一、什么是淘宝数据包? 淘宝数据包,也许可以理解为是一个包含了淘宝店铺商品信息的集合体。 它就像是一个装满了商品各种数据的大箱子,里面有商品的标题、描述、价格、图片、规格、属性等等一系列与商品相关的数据。 这些数据就像是商品的身份证,通过它们,淘宝系统能够准确地识别和展示每一个商品。 我觉得它就像是我们日常生活中去超市购物时,商…

    2025-05-13
  • 电信无限通用流量卡(电信无限流量卡多少钱一个月)

    作为电信行业的巨头之一,中国电信的手机流量业务一直都处在不温不火的态势。说便宜,它比不过联通,说信号,它玩不过移动。并且,由于电信3G信号格式的原因,也要不少用户都有一定程度上排斥电信。不过,电信这段时间做的这一举措,将会让不少用户刮目相看。 今天,中国电信表示,王中王卡套餐即将上线。这个套餐最大的特点在于每天只需一块钱,就能享受全国无限流量。 在资费方面,…

    2023-05-24
  • 巫师3配置,巫师三手柄怎么格挡

    原理:通过组合键(比如LT+A)映射键盘上的某个键位(如F12),实现按LT+A时截图功能。双击按键、长按按键映射键盘键位也是如此。 首先,进入大屏模式=》点击设置=》控制器设置,然后勾选你的手柄(xbox或PS4的),最后退出大屏模式。 然后右键待修改游戏,选择“编辑steam控制器配置” 此时出现手柄配置页面,如图2。 然后我们点击XYAB键位区域对这些…

    2023-07-12 投稿
  • 男装潮服哪里可以进货(广州潮服一手货源男装)

    男装作为服装的一部分,量上面没有童装多,款式上面没有女装丰富,但是作为消费群体的一部分,男装也有顶级的批发市场,找对地方,无论拿货还是自己穿都是很有优势的。 一、杭州质地国际男装基地 作为杭州四季青服装基地的一部分,质地男装算得上一枝独秀了,毕竟这里的批发市场都是以女装和童装为主,所以质地的存在会让男同胞们找到一点存在感。 拿货价格,质地这边并不是很便宜,所…

    2021-11-19
  • 迈克杰克逊指甲为什么那么黑(迈克杰克逊的指甲怎么了)

    80后90后的你可能不知道**总统是谁,但肯定知道迈克尔杰克逊。   在介绍迈克尔·杰克逊之前,让我们先来了解下这位世界巨星的生平: 迈克尔·约瑟夫·杰克逊(1958年8月29日—2009年6月25日) ,出生于**印第安纳州,**流行乐男演唱家、音乐家、舞蹈家、企业家、慈善家、人道主义者、和平主义者、慈善机构创办人。 迈克和中国的孩子们 迈克尔·…

    2021-12-16 投稿
  • 植木的法则游戏,植木游戏:玩法,技巧和策略

    今天,你玩游戏“吃到鸡”了么? 当一家名为“蓝洞”的游戏公司将近百名游戏玩家投放在一座岛屿上进行厮杀,最终存活的个人或团队才能获得最终胜利的游戏被开发,“大逃杀”类型的游戏在海内外开始风靡。 但“吃鸡”这种模式其实不仅仅在游戏中才有体现,在众多的文学、影视作品中也早已存在。 对于“少年Sunday”,一直流传编辑对新人漫画家这样的教导:“就照着XX(其他漫画…

    2023-05-23
  • 耀眼的深渊宝珠,深渊之鳞装备可以打宝珠嘛

    周四大家就可以拿到11周签到的史诗药剂了。尽管被人戏称为“光头药剂”。但作为宝贵的提高史诗爆率的道具,它的作用还是很值得人期待的。不过,足足五瓶的剂量,你是否已经准备好足够的深渊票刷刷刷了呢?如果还没有的话,不妨来试试这些解决方法吧! 拍卖行购买 由于毕业的玩家越来越多,事实上拍卖行的票价已经有很大程度的下降了。同时下一波的魔盒因为加入了暗淡和耀眼的深渊宝珠…

    2022-05-03 投稿
  • 摩羯女开始动情的细节知乎,摩羯女喜欢一个人的表现知乎

    摩羯座真正喜欢你的表现。 1,摩羯座喜欢你,有事没事就会找你聊天,而且显得非常主动,非常热情,即使很尴尬,他也会主动化解这种尴尬的氛围。 2,摩羯座喜欢你,就会和你自来熟,在你面前无拘无束,而且会跟你讲心里话讲他的感情经历。 3,摩羯座喜欢你会记得你的很多细节,包括你喜欢什么不喜欢什么,他都会默默的记下。 4,摩羯座喜欢你,会为你准备一些小礼物。而且我姐都很…

    2022-03-17
  • 带鱼段的简单家常做法

      俗话说“娃娃爱过年,老人怕花钱”,这句话形象地描写了不同年龄的人过新年的一个心理。最近这段时间,随着时间的推移,再有一个月时间,就是一年一度的新春佳节。不过随着春节一天一天的临近,我却一点也高兴不起来,为什么呢?主要是因为今年的收入大减,而物价却不断增高,就拿最近这几天来说,眼看着春节将至,但最近市场上的蔬菜价格和食品价格确实哗啦哗啦地往上涨,…

    2022-05-11 投稿
  • 如何开一家药店(如何开一家药店并经营)

    开药店很容易,但是把药店做“活”,不是嘴上说说那么简单。在今天,很多药房老板反应:“养店太难了,很多门店已经承担不起这个费用,走向了关闭的道路。”这整个的管理,我们说到一个连锁的单个门店,为什么也会有业绩好和业绩差,其中一个重要原因:“店长”。 门店是药店最核心也是最基本的经济体,店长作为门店这个最小“经济体”的最高首长,重要性不言而喻。作为店长,其全部工作…

    2021-12-14