您的位置 首页 数据库

Xtrabackup实现全量备份以及恢复

Xtrabackup实现全量备份

Xtrabackup(PXB)属于物理备份工具(针对数据文件进行备份),具体备份逻辑如下:(支持增量备份数据)

  • 在数据库服务运行期间,通过拷贝数据文件(实质拷贝的是数据页),进而实现数据备份目的;

  • 在进行数据文件拷贝的同时,会将备份期间的变化redo日志信息同时进行备份(拷贝);

Xtrabackup(PXB)属于物理备份工具(针对数据文件进行备份),具体恢复逻辑如下:

  • 在进行数据恢复时,模拟了InnoDB Crash recovery(CR)的运行过程,需要将备份进行处理,才能进行数据恢复;

  • 在进行数据恢复时,对于备份进行处理操作,特指的就是前滚操作(redo)和回滚操作(undo),从而解决数据恢复一致性问题;

 

# 全量备份操作:
[root@xiaoQ-01 ~]# mkdir /data/backup/full -p
-- 进行物理备份的目标目录不能存在数据信息,需要指定一个空目录进行备份
[root@xiaoQ-01 ~]# xtrabackup --defaults-file=/etc/my.cnf --host=192.168.30.101 --user=root --password=123456 --port=3306 --backup  --target-dir=/data/backup/full
或者使用参数--datadir替换掉参数--defaults-file
[root@xiaoQ-01 ~]# xtrabackup --datadir=/data/3306/data  --user=root --password=123456 --port=3306 --backup --target-dir=/data/backup/full
-- backup参数信息表示进行全备操作
# 物理备份命令执行输出信息说明:
221127 02:46:11 >> log scanned up to (277574297)
-- 记录日志位置点信息,表示进行拷贝数据的checkpoint的SN号码,相当于磁盘当前数据页的SN号码;
Using undo tablespace './undo_001'.
Using undo tablespace './undo_002'.
Opened 2 existing undo tablespaces.
221127 02:46:11 [01] Copying ./ibdata1 to /data/backup/full/ibdata1
221127 02:46:11 [01]        ...done
221127 02:46:11 [01] Copying ./sys/sys_config.ibd to /data/backup/full/sys/sys_config.ibd
221127 02:46:11 [01]        ...done
221127 02:46:11 [01] Copying ./mysql.ibd to /data/backup/full/mysql.ibd
... 省略部分信息...
-- 进行相关数据文件、日志文件、共享表空间文件、数据表空间文件等文件的拷贝,并且拷贝过程是不会进行锁表操作的;
-- 数据表空间信息备份完毕后,会有提示字段信息,并且此时会锁定binlog日志文件,并将binlog日志文件复制到备份目录;
-- 在进行binlog日志文件备份时,会生成xtrabackup_binlog_info文件信息,用于记录物理备份后的二进制日志位置点;
-- 二进制日志文件备份完毕后,会释放binlog日志文件锁定状态,并再次检查checkpoint的SN号码,确认redo日志是否变化;

[root@xiaoQ-01 backup]# ll /data/backup/full/
-- 可以看到将原有数据库的数据目录信息,已经基本迁移到指定的物理备份目录中;

Xtrabackup数据备份工具在热备操作后产生的特殊数据文件说明:

 

序号 文件名称 解释说明
01 xtrabackup_binlog_info 表示用于存储备份时的binlog位置点信息
02 xtrabackup_checkpoints 表示用于记录备份时的数据页LSN信息,主要用于接下一次备份,需要保证连续性;
03 xtrabackup_info 表示整体物理备份信息的总览
04 xtrabackup_logfile 表示存储在备份数据期间产生的新的的redo日志的信息;
05 xtrabackup_tablespaces 表示用于存储表空间的其余信息

 

Xtrabackup全量备份恢复

模拟进行数据库数据破坏性操作:

[root@xiaoQ ~]# pkill mysqld
[root@xiaoQ ~]# rm -rf /data/3306/data/*
[root@xiaoQ ~]# rm -rf /data/3306/logs/*
[root@xiaoQ ~]# rm -rf /data/3306/binlog/*

进行数据库数据恢复的操作过程:

[root@xiaoQ ~]# xtrabackup --prepare --target-dir=/data/backup/full
...忽略部分信息...
Shutdown completed; log sequence number 19214860
221127 16:31:58 completed OK!
-- 表示模拟CR过程,将redo日志进行前滚,undo日志进行回滚,让恢复数据信息保持一致性状态

[root@xiaoQ ~]# xtrabackup --copy-back  --target-dir=/data/backup/full
-- 将进行物理备份后的数据,再次进行还原恢复到备份前的目录中(拷贝回数据)

[root@xiaoQ ~]# chown -R mysql.mysql /data/*
[root@xiaoQ ~]# /etc/init.d/mysqld start
-- 重新设置数据目录权限,并重新启动恢复数据库业务

 

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章