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)

相关推荐

  • 师洋淘宝店,师洋淘宝店名字

    《师洋淘宝店:运营之道与挑战》 在当今的电商领域,师洋淘宝店无疑是一个备受关注的存在。 它或许就像是电商海洋中的一座独特岛屿,有着自己的运营模式和挑战。 那么,师洋淘宝店究竟是怎样的一番景象呢?它的运营又有哪些特点和难点呢?让我们一起来深入探讨一下。 一、师洋淘宝店的发展历程 师洋淘宝店的起步可能并不像一些大型电商店铺那样一帆风顺。 也许它最初只是师洋个人的…

    2025-06-14
  • 郭德纲为什么喜欢何云伟,郭德纲和何云伟到底怎么回事

    郭德纲为什么喜欢何云伟,郭德纲和何云伟到底怎么回事郭德纲为什么喜欢何云伟,郭德纲和何云伟到底怎么回事郭德纲为什么喜欢何云伟,郭德纲和何云伟到底怎么回事郭德纲为什么喜欢何云伟,郭德纲和何云伟到底怎么回事

    #何云伟# 进入九月份以来,德云社已经在各地演出了好几场,只是这些演出不是商演,而是公益演出。 9月19日的时候,高峰和杨鹤通,代表德云社前往某地的养老院进行了中秋节的慰问演出。 9月22日,德云社的高峰、栾云平和张九龄、王九龙四人现身内蒙古赤峰参加了一场家乡的公益惠民演出。 9月26日,周九良和孟鹤堂现身甘肃清水,也进行了一场惠民演出。 9月28日,高峰栾…

    2022-05-01 投稿
  • 墨守成规的故事100字

    墨守成规,手足重茧 “墨守成规”这一成语,是从春秋战国时墨子的一个故事来的,亦作“墨守成法 ”。墨子善于守城,世人谓之“墨守”。后以“墨守成规”指固执旧法,一成不变。   明·黄宗羲《钱退山诗文序》:“如钟嵘之《诗品》,辨体明宗,固未尝墨守一家以为准的也。” 墨子(前468年—前376年),名翟(dí),春秋末战国初期时的宋国人,曾为宋国大夫。他自…

    2022-05-12
  • 疯狂猜图ome答案 这是什么东西

    来源:成都商报 近日,记者调查发现,从录制到变现的偷拍视频买卖黑色产业链条逐渐浮出水面。一位从事该黑产的人士表示,只需288元,便可以得到8个酒店房间监控,12个家庭房间监控;某街拍网站更是有网友声称,可以20元一条的价格收购偷拍的女性裙底视频。 更可怕的是,一些物联网设备的漏洞,带来隐私泄露的风险。记者测试发现,20台某品牌摄像头中11台可以直接利用gue…

    2023-06-02
  • 谷歌优化排名(谷歌优化排名哪家强)

    谷歌搜索引擎排名的优化方式有两大方面:SEM、SEO,SEM即是您指的Adwords,如果Adwords不考虑的话,那可以考虑做谷歌SEO。 SEO:是通过技术手段从搜索引擎搜索结果中获得排名从而获得网站流量的过程。通俗来说:通过总结搜索引擎排名的规律,对网站(站内/站外)进行优化,使网站在搜索引擎上的排名提高,从而在搜索引擎上获客。但是,做SEO同样也要费…

    2022-01-27
  • 仓鼠的毒性有多可怕,仓鼠最反感的5大行为

    仓鼠的毒性有多可怕,仓鼠最反感的5大行为仓鼠的毒性有多可怕,仓鼠最反感的5大行为仓鼠的毒性有多可怕,仓鼠最反感的5大行为仓鼠的毒性有多可怕,仓鼠最反感的5大行为

    喜欢仓鼠的同学越来越多了,但是很多新手同学并不知道如何饲养,导致仓鼠的死亡率特别高,很多饲养了一段时间的老手,对某些饲养知识也并不熟悉,因此小编总结归纳了一些饲养知识,希望能帮助到大家~   |||— ❶ —||| 不要喂的食物 不要喂食人吃的食物,盐份过高,调味过重,会增加鼠儿身体负担。千万不要以为自己喜欢吃的,很香的面食、甜美的糕点,小宠也会喜…

    2022-03-23 投稿
  • 负载均衡和集群的区别,负载均衡集群的三种实现方式

    负载均衡和集群的区别 在现代的计算机系统和网络环境中,负载均衡和集群是两个经常被提及的概念。它们都与提高系统的性能、可靠性和可扩展性有关,但在具体的实现方式和作用上却存在一些明显的区别。以下是对负载均衡和集群的区别的详细探讨: 一、概念层面 负载均衡:负载均衡是一种将网络流量分配到多个服务器上的技术,以实现服务器之间的负载共享和优化资源利用。它的主要目的是通…

    2025-08-09
  • 蚊子最怕什么气味(苍蝇蚊子最怕什么味道)

    蚊子最怕什么气味(苍蝇蚊子最怕什么味道)蚊子最怕什么气味(苍蝇蚊子最怕什么味道)蚊子最怕什么气味(苍蝇蚊子最怕什么味道)蚊子最怕什么气味(苍蝇蚊子最怕什么味道)

    随着天气一天天转暖、雨水慢慢增多,蜱虫、蚊子等“蚊虫大军”渐渐苏醒。如何打赢这场人与虫的仗?快叫上朋友一起来看! (小编提醒:4月26日是全国疟疾日,预防疟疾的最有效方式就是防止蚊虫叮咬。) 水水水,滋养蚊虫的温室。蚊虫鼠蚁大多喜欢栖息在阴暗潮湿的环境,比如地下车库、楼梯的背面、水池下、下水道。居民在家防治“蚊虫大军”的第一步就是要减少家中积水。 重点检查厨…

    2022-05-08 投稿
  • 阿信有女朋友吗 阿信是否结婚

    近日,有**媒体拍到,五月天主唱阿信现身林俊杰JJ的生日直播后,与绰号“表妹”的助理同行。两人一起回工作室后,又去夜市买点心,最后一起回到阿信位于中山区的新家,彻夜未出。二人恋情呼之欲出。 这次消息一出,网友们又纷纷开始追溯阿信的感情生活。可惜的是,自出道以来,阿信就鲜有与异性传出过绯闻,阿信至今只公开承认过一个女友蛋蛋妹。 由于阿信性向成谜,被问到喜欢男生…

    2023-06-06
  • 淘宝秒杀网,淘宝秒杀信息大全网站

    《淘宝秒杀网:探秘电商秒杀的世界》 在如今的电商时代,淘宝秒杀网无疑是一个备受关注的话题。 它就像是电商领域的一颗璀璨明星,吸引着无数消费者和商家的目光。 那么,淘宝秒杀网到底是什么?它有哪些特点和优势?又存在哪些问题和挑战呢?让我们一起来探秘这个神秘的电商世界。 一、淘宝秒杀网的定义和起源 淘宝秒杀网,简单来说,就是在淘宝平台上进行的限时抢购活动的集合网站…

    2025-07-04
  • 游戏耳机推荐头戴式(双飞燕血手幽灵耳机怎么样)

    游戏耳机推荐头戴式(双飞燕血手幽灵耳机怎么样)游戏耳机推荐头戴式(双飞燕血手幽灵耳机怎么样)游戏耳机推荐头戴式(双飞燕血手幽灵耳机怎么样)游戏耳机推荐头戴式(双飞燕血手幽灵耳机怎么样)

    终于找到了!当我第一眼看见双飞燕血手幽灵MR710无线游戏耳机的时候,我就知道一直以来想要的头戴式耳机便是它了,因为这款耳机在各方面几乎都做到了完美的地步,让人甚是喜爱不已。所以,或许是目前最好的无线游戏耳机了。 简单开箱 在去年玩到了A4Tech双飞燕无线键鼠以后便对双飞燕念念不忘,今再次上手双飞燕血手幽灵MR710,只能说别来无恙了。那拆箱以后,除了耳机…

    2023-05-30 投稿
  • 山南奇迹二战结束后怎么样了,意大利足球战车

    山南奇迹:初生的共和国1947年~1970年 二战结束后,意大利没有像德国一样被分裂,保持了领土的完整,城市的毁坏程度也没有德国那么严重。虽然是个战败国,但**基于拉拢意大利对抗苏联的需要,在经济和军事方面,都给予了意大利大量援助。在各种有利条件的作用下,意大利在20世纪50年代-60年代实现了巨大的经济腾飞,被誉为“阿尔卑斯山南的奇迹”。意大利随之迈进了发…

    2023-06-06