标签:如何 数据库 注意 自动 上进 日志 get div ica
使用 XtraBackup 产生的备份数据无法直接使用
在数据备份(--backup)后,由于数据文件复制的时间点不同,因此数据不一致而无法使用。另外 InnoDB 会将这些数据文件视为损坏,将拒绝启动。
如何才能使备份数据正常使用,以用于数据库恢复
需要对数据进行“预备”(Prepare)操作,使数据文件完全一致,然后才能用于数据恢复及在 InnoDB 中运行。
软件版本:Xtrabackup 2.2
在预备操作时发生了什么?
在预备时,XtraBackup 将启动内嵌的修改版 InnoDB 引擎,以处理复制的备份文件,是数据文件保持一致。
执行预备操作的位置
可以在任意服务器中进行预备操作。
配置文件问题
在备份过程中,会在备份目录生成 backup-my.cnf 文件,保存 InnoDB 配置信息。
在预备操作时,需要该配置文件,会被自动加载。错误的配置文件会导致错误的恢复。
软件版本问题
(1)旧版 XtraBackup 备份的数据,可以使用新版 XtraBackup 进行预备操作,但是反过来不行。
(2)另外新版 XtraBackup 可能移除对旧版数据库的支持,也无法用于数据预备操作。比如 XtraBackup 2.2 不再支持 MySQL 5.0,需要使用 XtraBackup 2.1 进行预备操作。
总的来说,保证版本相同就不会有太大问题。
预备操作非常简单,无需关注底层细节:
#!/bin/sh xtrabackup --prepare --target-dir=/data/backups/mysql/
在预备操作完成并成功后,将显示如下输出:
101107 16:40:15 InnoDB: Shutdown completed; log sequence number <LSN>
可以在备份数据上再次预备:
#!/bin/sh xtrabackup --prepare --target-dir=/data/backups/mysql/
此时将生成 InnnoDB 日志文件(否则在 MySQL 启动时自动生成,将耗费些时间):
xtrabackup: This target seems to be already prepared. xtrabackup: notice: xtrabackup_logfile was already used to ‘--prepare‘. 101107 16:54:10 InnoDB: Log file ./ib_logfile0 did not exist: new to be created InnoDB: Setting log file ./ib_logfile0 size to <SIZE> MB InnoDB: Database physically writes the file full: wait... 101107 16:54:10 InnoDB: Log file ./ib_logfile1 did not exist: new to be created InnoDB: Setting log file ./ib_logfile1 size to <SIZE> MB InnoDB: Database physically writes the file full: wait... 101107 16:54:15 InnoDB: Shutdown completed; log sequence number 1284108
从第三次预备开始,将不会再修改数据文件,即后续预备操作将毫无意义。
从第三次预备开始,命令的输出如下:
xtrabackup: This target seems to be already prepared. xtrabackup: notice: xtrabackup_logfile was already used to ‘--prepare‘.
请勿中断预备操作,否则会导致备份文件损坏,并且无法用于数据恢复。
本文基于 XtraBackup 2.2 版本,而在 XtraBackup 2.4 中,将自动生成 InnoDB 日志文件。
在增量备份中,需要使用 --apply-log-only 进行预备操作,否则无法在备份数据上进行增量备份。
WikiNotes/备份数据的“预备”(Prepare)操作
Percona XtraBackup 2.2 Documentation/Preparing the backup
「XtraBackup」- 备份数据的“预备”(Prepare)操作 @20210201
标签:如何 数据库 注意 自动 上进 日志 get div ica
原文地址:https://www.cnblogs.com/k4nz/p/14358450.html