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
本站部分内容由互联网用户自发贡献,该文观点仅代表作者本人,本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。

如发现本站有涉嫌抄袭侵权/违法违规等内容,请联系我们举报!一经查实,本站将立刻删除。

(0)

相关推荐

  • 兰蔻一共有几款眼霜?兰蔻双层眼霜上层膏状是什么

        图片由兰蔻提供 眼霜,用了,没啥效果;不用,似乎也没啥损失。所以,久而久之,很多人都认为它是个鸡肋。但事实确实如此吗? 其实,人每天平均17000次,平均眼部肌肉的牵动达10万次,所以,眼周的肌肤衰老得要比面部其他部位快很多!从25岁开始,眼周肌肤就开始走“下坡路”,逐渐出现黑眼圈、细纹等状况。下面这几个Q&A可能可以帮到…

    2022-04-20 投稿
  • 隐秘的角落多少集有彩蛋

    《隐秘的角落》海报 六月以来,最火红的暑假话题,一定是一部第一集就叫做“暑假”的12集短剧。 悬疑的剧情,紧凑好看、反转不断,精良的表演,配合可以反复推敲的镜头语言和配乐,《隐秘的角落》火了,出圈了。 爱奇艺创始人、CEO龚宇曾表示,“超级网剧将会是未来主流,倡导缩短集数、增加单集时长、提高单集制作成本、用合适的演员、回归好故事本质”。如今,这一切似乎都已经…

    2022-04-29
  • 一个月20g纯流量卡哪个划算(纯流量卡停了一个月还可以用吗)

    那天我路过一个保洁阿姨时,她的电话响了,拿起来一看就挂掉了很蔑视地说:“广告!切~,现在谁还打电话啊,都是微信视频语音了”。 阿姨的表演深深震撼了我,当时我就想,阿姨之所以这么豪气,一定是用的不限量流量套餐…… 流量总是不够用?月底天天算着用?视频不敢点?到处蹭WIFI? 干嘛不办个不限量的流量套餐卡呢,从此流量随便用,视频随便点,抖音快手随便刷,再也不用蹭…

    2023-05-27 投稿
  • 1000元投资创业项目(小投资创业办厂项目)

    如何用1000元创业 创业,要科学,做自己最有兴趣的事情或做擅长的领域,要善于借助一切能借助的力量,以减少自己的创业成本,学会减少金钱上的开支,增加时间上的投入。 创业的注意事项: 1、创业必须要选择自己熟悉的,不要一头雾水的去创业,这样反而会容易失败,所以做自己比较懂行的才是最正确的。 2、再就是创业初期的时候需要投入更多的精力去了解这个行业的市场,只有详…

    2021-11-21
  • 新兴产业创业项目(新兴产业创业项目都有哪些)

    “十四五”时期,工业绿色低碳发展迎来重要窗口期。《经济参考报》记者注意到,从部委到地方正积极布局,在稳步推进传统产业绿色低碳发展的同时,加快产业结构高端化转型,聚焦新能源、新材料、新能源汽车、绿色智能船舶、绿色环保、高端装备、能源电子七大重点领域,壮大绿色环保战略性新兴产业,带动整个经济社会的绿色低碳发展。在一系列利好政策催化下,绿色产业有望持续开辟增长新蓝…

    投稿 2022-01-22
  • 国美vs苏宁,国美与苏宁的对比分析

    谈到国美苏宁这一对线下电器零售的巨头,大家都是耳熟能详的,想当年那句广告词:买电器就去国美,可以说是很多人脑海中挥之不去的印象。 但是随着时代的发展,互联网经济呈现出一种后来居上的局面,昔日的线下零售巨头,在互联网电商崛起之路中,充当了一个又一个垫脚石的角色,就连曾经零售巨头的国美苏宁也不例外。 线下巨头不战而溃的例子比比皆是,就如做线下配送起家的永辉超市,…

    2023-07-12
  • 台式机电源多少钱,一线电源品牌排行

    早前我们就曾出过一期有关于台式机电源选购推荐 由于年代久远,所以在此更新一下。 V2.0更新内容: 加入了ITX装机电源需求。 扩写电源瓦数范围。 删减部分较差型号,追加部分畅销型号。 正文: 300W以下电源 需求配置特点:典型办公机,只有CPU,集成显卡,或入门亮机独显。 这类电源一般带一个或者不带6pin显卡供电线,CPU供电线也可能只是4PIN。 1…

    2023-06-29 投稿
  • 电信流量卡包月(抖音免费流量卡怎么领取)

    我们知道抖音已经成为了很多朋友必备的工具,有的时候连续刷几个小时。有的时候习惯了使用视频分享生活,总觉得流量不够用了,哈哈。对于这类朋友如今福音来了,近日中国电信联合抖音推出了“抖音无限流量卡”,有了它再也不用担心流量问题了。那么抖音无限流量卡在哪申请呢?下面小编为大家带来了抖音无限流量卡领取地址介绍。 抖音无限流量卡资费详情 月费5元,套餐内包含: 国内流…

    2023-05-29 投稿
  • 二线城市标准条件,二线城市如何划分

    城市的出现,是人类走向成熟和文明的标志,也是人类群居生活的高级形式。城市的起源从根本上来说,有因“城”而“市”和因“市”而“城”两种类型,因“城”而“市”就是城市的形成先有城后有市,市是在城的基础上发展起来的,这种类型的城市多见于战略要地和边疆城市,如天津起源于天津卫;而因“市”而“城”则是由于市的发展而形成的城市,即是先有市场后有城市的形成,这类城市比较多…

    2022-03-15 投稿
  • 砂锅第一次用需要怎么处理不会炸(新砂锅用之前怎么开锅)

    新买的砂锅别急着用,一定要先开锅,不开裂不炸裂,使用寿命更长 最近西安比较冷,天冷我就特别爱吃砂锅土豆粉,所以砂锅是我家的必备锅具,平时用来煲汤、熬粥什么的,味道特别鲜美。但是砂锅有一个很大的问题,如果使用不当砂锅就会开裂,严重的甚至会炸裂。前几天在头条上看到有朋友晒图,砂锅里正在炖排骨汤,结果砂锅炸了,厨房里一片狼藉,万幸没有伤到人。朋友们,新买回来的砂锅…

    2021-12-17 投稿
  • 明星抗癌成功的真实故事,传奇生物ceo

    旗下明星抗癌药成功出海后,港股上市公司金斯瑞生物科技(01548.HK,下称“金斯瑞”)起诉子公司传奇生物(LEGN.US)创始人。 8月17日界面新闻报道称,因存在知识产权纠纷,金斯瑞起诉了其前高管,子公司传奇生物前创始人范晓虎。 天眼查显示,8月8日,金斯瑞的一宗“侵害商业秘密纠纷”案件在江苏省南京市中级人民法院开庭审理,金斯瑞是原告,而被告名为“FAN…

    2023-07-08
  • 网络推广这个工作怎么样(做新媒体运营和网络推广有前途吗)

    一个截止目前,在全媒体网络推广、成长型企业品牌营销工作中奋斗了14年的实战博主。   这期间,问我最多的话题就是:“做新媒体运营和网络推广有前途吗?”“新媒体运营挣钱吗?”“新媒体运营能干到多少岁?”   其实,N年前,我也曾自问过这个问题。我能理解提此问题人的茫然:不知道它未来的价值,却不得已为了生活而工作;频繁跳槽,却不知道最终未来出…

    2022-06-03